Texture tab clipping: the rule a panning canvas follows (#82)

A canvas that pans or zooms puts everything the view moves into one masked
container, not just the picture. Editor suite: 784 checks.
root committed 2026-09-13 21:17:34 +02:00
1 parent 4619f619fa
commit 8916a38cd6
2 files changed
+6 -3

No files matched your search

+4 -1
@@ -84,6 +84,9 @@ Rules that keep it organised: `core/` imports nothing from other layers; `ui/` n
assets; position exists only on scene objects; overrides are merged in exactly one place
(`core/properties/resolve.ts`); the inspector is generated from `PropertySchema` — a new
property is one schema line; a new node is one file **plus a row in the table in
`tests/core/node-catalog.test.ts`**, which fails if a node has no case. Comments state contracts
`tests/core/node-catalog.test.ts`**, which fails if a node has no case; a canvas that pans or
zooms puts **everything** the view moves into one masked container, not just the picture — an
outline, a name plate or a checkerboard left outside it is drawn over the panel next door.
Comments state contracts
and reasons, not what the code does: a `/** */` on every export whose name does not say it all,
`//` only for a decision or gotcha.
+2 -2
@@ -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 # 780 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 784 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
@@ -151,4 +151,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 780 checks as here.
WebGL 2.0, and the same 784 checks as here.