From 85c2a04fb644b27c209c5d383dbcefd340275817 Mon Sep 17 00:00:00 2001 From: meleki Date: Sun, 13 Sep 2026 12:10:37 +0200 Subject: [PATCH] Asset rows: click selects, double-click or + opens the tab (#71); 717 checks --- Concepts.md | 8 ++++++-- Containers.md | 2 +- Development.md | 4 ++-- Scene-editing.md | 4 ++-- Shaders.md | 3 ++- State-machines.md | 4 ++-- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Concepts.md b/Concepts.md index c3e10fe..71b951d 100644 --- a/Concepts.md +++ b/Concepts.md @@ -32,8 +32,12 @@ no movement): everything that happens is defined by behavior graphs. **Toolbar and panels.** The toolbar holds the **Project** menu (new project, switch project, *Delete this project…*), the project name (type to rename), the **Scene** picker for the active scene, Undo/Redo, Play/Pause, and on the right the notice line, the save status and the frame -rate. The **Assets** panel's `+` creates an asset; right-clicking a row offers *Set as active -scene* (double-click or `Enter` does the same), *Create sprite from texture*, *Create animation +rate. The **Assets** panel's `+` creates an asset and opens its tab. A click on a row only +selects (the inspector shows it, no tab moves); a **double-click** opens the tab the asset lives +in — Scene, Behavior, State machine, Shader, Texture, Animation or Container — and on a scene +also makes it the active one. `Enter` does the same once the list has keyboard focus (`Tab`). +A sprite, camera, text or collider has no tab of its own, so a double-click on one does nothing. +Right-clicking a row offers *Set as active scene*, *Create sprite from texture*, *Create animation from texture* and *Delete…*. In **Scene objects** it offers *Select asset*, *Add collider*, *Create container*, *Unpack container*, *Unparent*, *Expand all* / *Collapse all* and *Remove*. diff --git a/Containers.md b/Containers.md index 3ea5225..e3aaf61 100644 --- a/Containers.md +++ b/Containers.md @@ -19,7 +19,7 @@ Like the Behavior tab it follows the selection without being bound to it — the its placed copies or one of its template objects shows it, anything else leaves the tab on what you were editing, and only a deleted container makes it fall back to another one. Selecting a template *object* also switches to the tab, the rule a graph node and a texture frame already follow: it -exists in no other view. Selecting the asset itself does not. +exists in no other view. Selecting the asset itself does not; double-clicking it does. Placing a container anywhere creates **one** object. Its content is never copied: `resolveObjects` (`src/core/model/instance.ts`) weaves the template in whenever the holder is read, one level per diff --git a/Development.md b/Development.md index 8a7fc23..893ce02 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 # 703 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 717 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 @@ -150,4 +150,4 @@ widths to find click points. The **render device is not in this repo** — `/dev and a 1 GB `/dev/shm` come from `container.options` in the runner's own `config.yaml`, which applies to every job on that runner. Without them chromium falls back to llvmpipe, which gets WebGL 1.0 only. Measured in the job container: `ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`, -WebGL 2.0, and the same 703 checks as here. +WebGL 2.0, and the same 717 checks as here. diff --git a/Scene-editing.md b/Scene-editing.md index 9fe7269..5ec81b1 100644 --- a/Scene-editing.md +++ b/Scene-editing.md @@ -6,8 +6,8 @@ be refused, which today means a container that would end up inside itself (`plac `src/core/model/placement.ts` — the same function the command runs, so the preview cannot promise a placement the drop then denies). Picking a container up selects it, but the Container tab does *not* follow that while a drag is in flight: the target must not swap out from under the pointer. -Dragging is the only way to place: a double-click on a scene makes it the active one, on anything -else it does nothing. +Dragging is the only way to place: a double-click on an asset opens its tab (a scene also becomes +the active one), it never places. **Editor symbols are always on top.** The viewport draws scene content (sprites) in an `objects` layer and editor symbols (camera icon, labels) in an `overlay` layer above it, so a diff --git a/Shaders.md b/Shaders.md index e82b406..262de58 100644 --- a/Shaders.md +++ b/Shaders.md @@ -5,7 +5,8 @@ shaders; the one effect the node set is sized for is the "Adjust colors" recipe ## The Shader tab -`+` in the **Assets** panel makes a shader; selecting one opens the **Shader** tab on it, with the +`+` in the **Assets** panel makes a shader and opens the **Shader** tab on it (a double-click on +an existing one does the same; a click only selects). The tab has the same canvas the Behavior tab has: right-click places a node, drag moves, drag from a port links, `Snap` snaps to the 24 px grid, `Fit` frames the graph, undo takes every step back. The readout on the right says `N properties` while the graph compiles, otherwise why it does not (`No Output node`, diff --git a/State-machines.md b/State-machines.md index 526b82b..0813b24 100644 --- a/State-machines.md +++ b/State-machines.md @@ -4,8 +4,8 @@ events like "on state entered" and a highlight of the current state while playin steps. The states are edited in the **State machine** tab, which is the graph canvas the Behavior tab uses — so placing, dragging, the header's **Snap** checkbox, renaming in the inspector, `Delete` and undo are the graph's. -Selecting the asset opens the tab (a behavior, texture or container asset does not switch tabs — -a machine has nothing to show anywhere else). Right-click on its canvas offers a `State` and +Double-clicking the asset (or creating it) opens the tab, like every asset with a tab; a click +only selects. Right-click on its canvas offers a `State` and nothing else, named by its number (`State 3` for the third); no behavior palette offers one. **A behavior reads it through two nodes**, both with a `machine` input that is a picker while