Vector Art: no warning from a redrawn picture, no Add shape (#293)

Architecture says when a replaced picture is freed while a shader still names it, Vector Art drops the Add shape button, Development carries the sum of 1668 e2e checks.
admin committed 2026-10-02 13:03:58 +02:00
1 parent 82a952c04b
commit 09d1f978ac
3 files changed
+12 -7

No files matched your search

+7 -3
@@ -176,9 +176,13 @@ src/viewport/ WorldViewport (the drawing of a world or a holder, the ba
symbolIcons (the SVG files in icons/, parsed once, in the theme's colours, #175), symbolIcons (the SVG files in icons/, parsed once, in the theme's colours, #175),
FileLibrary (load once, never retry a failure, tell the listeners) ← TextureLibrary, FontLibrary; FileLibrary (load once, never retry a failure, tell the listeners) ← TextureLibrary, FontLibrary;
generatedPictures (the drawn half of the picture path, #185: one picture per asset kept generatedPictures (the drawn half of the picture path, #185: one picture per asset kept
under its revision key, the older one freed when the newer is drawn; who draws which asset under its revision key, the older one freed when the newer is drawn — or, while a shader
type, and the factory that looks an asset up in the open project) — no GPU, so it is measured still names it, right after the redraw that asked or on a later ask, #293: the mesh of an
without a browser, object with a shader asset keeps its picture bound until it syncs, and a source destroyed
under it made Pixi warn "destroyed while still bound to a shader" with every change to the
drawing; `TextureLibrary` tells by the bind group listening for `change` on the source; who
draws which asset type, and the factory that looks an asset up in the open project) — no
GPU, so it is measured without a browser,
vectorArtPicture (the rasteriser of #129: the draw commands of vectorArtPicture (the rasteriser of #129: the draw commands of
core/model/vectorPath painted onto a render texture of the canvas size, at twice its core/model/vectorPath painted onto a render texture of the canvas size, at twice its
resolution; registers vector art in both halves of the picture path; PaintCache keeps a resolution; registers vector art in both halves of the picture path; PaintCache keeps a
+1 -1
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there) # has and the web server's container has not (SKIP there)
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
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1667 editor checks, screenshots in /tmp/gm-e2e-*.png node tools/seed-e2e.mjs && node tools/e2e.mjs # 1668 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
+4 -3
@@ -135,8 +135,9 @@ Selecting a shape — in the tab or in the list — gives it its own rows:
**Outline** switch; with the switch on, **Line type** and Line width appear. The switch *gives and **Outline** switch; with the switch on, **Line type** and Line width appear. The switch *gives and
takes away* the outline rather than hiding it, and a width of zero is no outline, so the row stops takes away* the outline rather than hiding it, and a width of zero is no outline, so the row stops
at 0.1. at 0.1.
- **Add shape** sits below. With several shapes selected, **Delete shapes** next to it removes - With several shapes selected, **Delete shapes** at the bottom removes them all. There is no
them all. button that adds a shape (#293): a shape without points could not be given any, the Pen draws
a new one.
With several shapes selected, the order buttons and the style rows are those of the one clicked With several shapes selected, the order buttons and the style rows are those of the one clicked
last. A dragged colour or opacity slider is one undo step, not one per pixel of the drag. Selecting last. A dragged colour or opacity slider is one undo step, not one per pixel of the drag. Selecting
@@ -148,7 +149,7 @@ selected.
**A layer** is a stack of shapes with a name and an eye. Every drawing has at least one, and the **A layer** is a stack of shapes with a name and an eye. Every drawing has at least one, and the
layers are drawn bottom to top like the shapes on them. layers are drawn bottom to top like the shapes on them.
- **One layer is the one worked on**, marked in the LAYERS list. The Pen and **Add shape** put new - **One layer is the one worked on**, marked in the LAYERS list. The Pen puts new
shapes on it, and the SHAPES list shows what is on it. A click on a layer's row picks it; shapes on it, and the SHAPES list shows what is on it. A click on a layer's row picks it;
selecting a shape, in the tab or in the list, picks the layer that shape stands on. selecting a shape, in the tab or in the list, picks the layer that shape stands on.
- **The eye** hides a layer. A hidden layer is neither in the tab nor in the picture a sprite wears, - **The eye** hides a layer. A hidden layer is neither in the tab nor in the picture a sprite wears,