Add undo and redo to the interface

Ctrl+Z undoes, Ctrl+Y and Ctrl+Shift+Z redo, caught in the capture
phase so a focused entry or spin never undoes only its own text; both
are in the header-bar menu too. The history keeps whole snapshots of
the project (currentProject() plus the immutable source list itself,
so stepping back never decodes again), compared by their JSON.
requestRender() notes every edit, and a step is committed once the
controls have been still for half a second. New and Open start the
history over once the project's images are in.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Si
2026-09-26 23:15:03 +02:00
co-authored by Claude Opus 5.5
parent f9fe6e0fa5
commit 5402a50742
5 changed files with 331 additions and 1 deletions
+4
View File
@@ -10,6 +10,10 @@ commit that made it. The interface shows this file under Changelog in its menu.
- The Font of a text stage (and of a text style) is picked from the fonts
installed on this machine with a font chooser, rather than typed by name.
The command line still takes any family, as `--font-family "DejaVu Serif"`.
- Undo and redo: Ctrl+Z steps back through the edits to the project (the
chain, params, styles, canvas, video settings, seed and images), and Ctrl+Y
or Ctrl+Shift+Z steps forward again; both are in the menu as well. A burst
of edits, like a spin held down or a word typed, is one step.
## [0.8.0] - 2026-09-26