diff --git a/Behaviors.md b/Behaviors.md index fdc0894..dd46a4f 100644 --- a/Behaviors.md +++ b/Behaviors.md @@ -227,6 +227,13 @@ shown on the node and editable in the inspector. touches — nodes are large rectangles, so touching counts, unlike the scene view's test of an object's position. Ctrl/Shift-click adds or removes single nodes, dragging any node of a selection moves all of them, and `Delete` removes all of them — one undo step either way. +- **The band catches groups and comments too** (#95), and they end up in the *same* selection as + the nodes: one drag then moves all of it, one `Delete` removes all of it, one undo takes it back. + A box counts only when the band holds **all** of it, where a node counts on touching alone. That + difference is not a mood: a group wraps the nodes it holds, so it overlaps every band drawn over + any of them, and since a group drags its nodes along, catching it by accident would be felt at + once. A node inside a group that is selected too is still moved **once** — it belongs to both, + and the offset is applied to each thing once. - **Dragging an edge tells you where it would land** before you let go: the port it would connect to wears a white ring and the line snaps to it. Dropping on a node's *body* rather than a port takes that node's first free compatible port — or, when none is free, the last compatible one, @@ -291,7 +298,10 @@ shown on the node and editable in the inspector. what it says. Every graph tab has them — behaviors, state machines, shaders, particles. - **Header bar** (the same one the Texture and Container tabs have): the behavior picker, **Fit** (which zooms out far enough to hold every node, measuring each by its own drawn - height — `editor/framing.ts`), and the size of the graph as "N nodes · M links". + height, **and every group and comment with them** — a fit that framed the nodes alone would cut + the box drawn around them, and a graph holding nothing but a comment would frame the empty + origin; `editor/framing.ts`), and the size of the graph as "N nodes · M links". It stops zooming + out at 0.25, so a box parked far enough away can still lie outside what a fit can show. - **Snap** (header checkbox, off by default): a drag drops each node it carries on the nearest 24 px grid line — the same grid the background draws. It takes effect on the next drag only, so switching it on never shuffles a graph that is already laid out, and a node nobody drags never diff --git a/Development.md b/Development.md index df7242b..94d5853 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 # 955 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 958 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 @@ -232,4 +232,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 955 checks as here. +WebGL 2.0, and the same 958 checks as here. diff --git a/Keyboard.md b/Keyboard.md index fb06a5c..f85631c 100644 --- a/Keyboard.md +++ b/Keyboard.md @@ -1,5 +1,5 @@ `Ctrl+Z` / `Ctrl+Shift+Z` / `Ctrl+Y` undo/redo (`Cmd` works wherever `Ctrl` does) · `Delete` or -`Backspace` remove the selection (objects, nodes, frames, a tile of the Animation tab, a graph group or comment — the box only, its nodes stay; an asset asks first) · `Ctrl+G` create +`Backspace` remove the selection (objects, nodes, frames, a tile of the Animation tab, a graph group or comment — the box only, its nodes stay, and a band that caught boxes and nodes together removes both in one step; an asset asks first) · `Ctrl+G` create container from the selection · `Ctrl+Enter` play, and pause/resume while playing · `Esc` stop · `Ctrl+V` import an image from the clipboard as a texture (ignored while a text field has focus) · `Tab` / `Shift+Tab` cycle fields · lists: `↑`/`↓` move,