From 212d6c28fc432bdcac0efc6aa25e6bbe5e482fe9 Mon Sep 17 00:00:00 2001 From: MelekTaus Date: Sat, 19 Sep 2026 18:36:21 +0200 Subject: [PATCH] Asset panel grouped by kind with icons, icons in tabs, + menu and scene objects: Concepts, assetGroups and assetIcons in Architecture, check sum 1102 (#176) Co-Authored-By: Claude Opus 5 --- Architecture.md | 4 +++- Concepts.md | 13 ++++++++++--- Development.md | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Architecture.md b/Architecture.md index 7678937..0d35c1c 100644 --- a/Architecture.md +++ b/Architecture.md @@ -116,7 +116,9 @@ src/editor/inspector/ Inspector panel, host (what a section builds into), field (where a value lives — shared with the List tab), one section per selection kind (asset/object/node/frame), variableRows (one row shape for every variable), portSection, aspectAction, objectQueries/vectorRows/parentRow -src/editor/panels/ AssetPanel, assetMenu (the two groups of the + menu), HierarchyPanel, Toolbar, +src/editor/panels/ AssetPanel, assetGroups (groups by type and their order, #176), assetIcons (one SVG per + asset type in icons/, shared by the panel, the + menu, the tabs and Scene objects), + assetMenu (the two groups of the + menu), HierarchyPanel, Toolbar, TilemapPanel (tools, tiles and layers of the one selected tilemap, beside the scene view, #142; painting itself is SceneViewport) src/editor/graph/ GraphEditor (header, breadcrumb), GraphCanvas, graphView (zoom limits, grid, panAndZoom – shared with NodeBoard and the Tile tab's TileCanvas), EdgeLayer (curves and fold marks), graphMenus, diff --git a/Concepts.md b/Concepts.md index 2dd2448..4505f22 100644 --- a/Concepts.md +++ b/Concepts.md @@ -44,6 +44,13 @@ scene**), Play/Pause, and on the right the notice line, the save status and the rate. The **Assets** panel's `+` creates an asset and opens its tab; its menu lists the types in two alphabetical groups, first what can be placed into a scene, then what only lives in the library (#43) — the line between them answers the question that follows right after "which type?". +Every type has an **icon** of its own, the same wherever the type shows: in the `+` menu, on the +asset panel's groups, on a document's tab and at the end of a row in **Scene objects** (#176). +The asset panel **groups by type** (#176): one heading per type that has assets, with its icon and +the count at the right, groups and the assets inside them sorted by name. Every group starts +**folded** when a project opens; a click anywhere on a heading folds or unfolds it, and a heading +is never selected. Selecting an asset from elsewhere (a picker, a graph, a new asset) unfolds its +group; folding the group the selected asset sits in lets go of the selection. A click on a row only selects (the inspector shows it, no tab moves); a **double-click** opens the asset as a document in a tab of its own (see **The tab row**) — a behavior, state machine, shader, particles, @@ -65,9 +72,9 @@ asset panel, create one, or open a list from its row. An open document only come one gets its tab right of the document on screen (or last, from a fixed tab). Several assets of one kind can be open at once — two textures, three behaviors — each with its own tab. -- The tab reads the kind in muted type, then the name: `Behavior · Player`, `Texture · Player`, - so assets of the same name stay apart. A long name is cut with an ellipsis. Renaming an asset - renames its tab. +- The tab shows the **icon** of its kind, then the name, so a behavior and a texture both called + `Player` stay apart; the `»` menu lists hidden documents the same way. A long name is cut with an + ellipsis. Renaming an asset renames its tab. - A document tab always shows its own asset. Selecting something elsewhere never changes it; there is no picker in the tab's header any more. Selecting what lives only inside a document — a node, a frame, an object of a container — brings that document up. diff --git a/Development.md b/Development.md index a935390..e21ad9f 100644 --- a/Development.md +++ b/Development.md @@ -12,7 +12,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs # code is lost (tail's is reported), so a red run reads as green npm run build # writes dist/ and regenerates index.html ./build.sh # the same under `set -o pipefail`, for callers that pipe the output -node tools/seed-e2e.mjs && node tools/e2e.mjs # 1093 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1102 editor checks, screenshots in /tmp/gm-e2e-*.png GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step ./e2e.sh start [GM_STEPS] # the same run detached, see below ./e2e.sh status # live progress, or the last run's result