Note that every graph snaps from the start (#391)
- Behaviors: the magnet is on by default in every graph tab. - Architecture: SnapToggle and GRAPH_SNAPS_AT_FIRST. - Development: the harness switches the magnets off on every load, and 1966 editor checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent
196c999b9f
commit
0c0d557deb
3 files changed
+9
-3
No files matched your search
+1
-1
@@ -373,7 +373,7 @@ src/editor/graph/ GraphEditor (header, breadcrumb), GraphCanvas and what it
|
|||||||
the edges); graphView (zoom limits, grid, panAndZoom — shared with NodeBoard and the Tile tab's TileCanvas — and `inView`, which nodes are in the picture, #292), EdgeLayer (curves and fold marks), graphMenus,
|
the edges); graphView (zoom limits, grid, panAndZoom — shared with NodeBoard and the Tile tab's TileCanvas — and `inView`, which nodes are in the picture, #292), EdgeLayer (curves and fold marks), graphMenus,
|
||||||
NodeView (and a face instead of the rows, a widget between the inputs and the outputs, #380: `nodeFace.ts`) + portRow (how an input and an output share one row, #306), NodePalette + paletteEntries (which also ranks a search), folding (hidden links, collapsed nodes), Breadcrumb + trail (the path into nested behaviors), beads (the run's pulses and the clock that launches them),
|
NodeView (and a face instead of the rows, a widget between the inputs and the outputs, #380: `nodeFace.ts`) + portRow (how an input and an output share one row, #306), NodePalette + paletteEntries (which also ranks a search), folding (hidden links, collapsed nodes), Breadcrumb + trail (the path into nested behaviors), beads (the run's pulses and the clock that launches them),
|
||||||
AnnotationView + annotationDrag (groups and comments: what a drag carries, each thing moved once),
|
AnnotationView + annotationDrag (groups and comments: what a drag carries, each thing moved once),
|
||||||
SnapToggle (the magnet every tab that snaps carries, the vector art tab included, #194)
|
SnapToggle (the magnet every tab that snaps carries, the vector art tab included, #194; lit at first in the graph tabs, `GRAPH_SNAPS_AT_FIRST`, #391)
|
||||||
src/editor/container/ ContainerEditor (header), ContainerCanvas (a SceneViewport on a template)
|
src/editor/container/ ContainerEditor (header), ContainerCanvas (a SceneViewport on a template)
|
||||||
src/editor/texture/ SheetCanvas (the shell of the Texture, Pixel art and Vector art canvases: ground, clip, hint, a middle or Shift drag that pans, wheel zoom, Fit and the view each document keeps, and the dashed nine-slice and sort lines of a drawing, #308), TextureEditor (header), TextureCanvas (picture + frames), SliceDialog (a FormDialog), GenerateCollisionDialog (#161: the rows, and a summary that traces while the numbers change; the texture library hands it the sheet's pixels), sheetView (the grid maths),
|
src/editor/texture/ SheetCanvas (the shell of the Texture, Pixel art and Vector art canvases: ground, clip, hint, a middle or Shift drag that pans, wheel zoom, Fit and the view each document keeps, and the dashed nine-slice and sort lines of a drawing, #308), TextureEditor (header), TextureCanvas (picture + frames), SliceDialog (a FormDialog), GenerateCollisionDialog (#161: the rows, and a summary that traces while the numbers change; the texture library hands it the sheet's pixels), sheetView (the grid maths),
|
||||||
ImagePicker + imageGrid (the "+ → Texture" dialog), checker (the transparency board)
|
ImagePicker + imageGrid (the "+ → Texture" dialog), checker (the transparency board)
|
||||||
|
|||||||
+1
-1
@@ -619,7 +619,7 @@ the inspector).
|
|||||||
the box drawn around them, and a graph holding nothing but a comment would frame the empty
|
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
|
origin; `editor/framing.ts`), and the size of the graph as "N nodes · M links". It stops zooming
|
||||||
out at 0.125 (0.25 before #387), so a box parked far enough away can still lie outside what a fit can show.
|
out at 0.125 (0.25 before #387), so a box parked far enough away can still lie outside what a fit can show.
|
||||||
- **Snap** (the magnet in the header, an icon toggle that stays lit while on; off by default): a drag drops each node it carries on the nearest
|
- **Snap** (the magnet in the header, an icon toggle that stays lit while on; **on by default in every graph tab** since #391, a curve and a vector art still start without it): 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
|
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
|
switching it on never shuffles a graph that is already laid out, and a node nobody drags never
|
||||||
moves. Every node of a selection snaps **for itself**, so dragging a group is how you line one
|
moves. Every node of a selection snaps **for itself**, so dragging a group is how you line one
|
||||||
|
|||||||
+7
-1
@@ -19,7 +19,7 @@ php tests/php/accounts.test.php # the API's accoun
|
|||||||
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
|
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
|
||||||
php tests/php/releases.test.php # the release store (#266), the same way
|
php tests/php/releases.test.php # the release store (#266), the same way
|
||||||
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
|
php tests/php/files.test.php # uploaded files in a folder per account (#344), the same way
|
||||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1965 editor checks, screenshots in /tmp/gm-e2e-*.png
|
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1966 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
|
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 start [GM_STEPS] # the same run detached, see below
|
||||||
./e2e.sh status # live progress, or the last run's result
|
./e2e.sh status # live progress, or the last run's result
|
||||||
@@ -93,6 +93,12 @@ scene state and share the CDP driver in `tools/lib/harness.mjs` — `press`, `un
|
|||||||
`object(id)`, `world()`, `mutate(js)` and friends, so a check reads like the interaction it
|
`object(id)`, `world()`, `mutate(js)` and friends, so a check reads like the interaction it
|
||||||
exercises.
|
exercises.
|
||||||
|
|
||||||
|
**Every load starts from the same baseline.** After each `navigate()` the harness sets the zoom
|
||||||
|
transition to 0 and switches the magnet of every graph tab off (#391): the graphs snap by default,
|
||||||
|
but most checks drag a node to an exact spot. What the magnets started at stays readable through
|
||||||
|
`graphSnapAtFirst()`, and e2e 06 checks that all eight were on. A step that brings the editor up
|
||||||
|
some other way (the sign-in in e2e 45) switches them off itself with `__gm.graphSnapping(false)`.
|
||||||
|
|
||||||
**The suite waits for the editor, not for the clock (#93).** Every action in the harness — `click`,
|
**The suite waits for the editor, not for the clock (#93).** Every action in the harness — `click`,
|
||||||
`doubleClick`, `wheel`, `drag`, `press`, `typeText`, `select`, `mutate`, `undo`, `redo`, `showTab` —
|
`doubleClick`, `wheel`, `drag`, `press`, `typeText`, `select`, `mutate`, `undo`, `redo`, `showTab` —
|
||||||
ends in `settle()`, which waits for two *drawn* frames (~32 ms) through `__gm.afterFrames()` rather
|
ends in `settle()`, which waits for two *drawn* frames (~32 ms) through `__gm.afterFrames()` rather
|
||||||
|
|||||||
Reference in new issue
Block a user