epiphany/crates
Levi Neuwirth 1496c81302 editor-gui: undo/redo buttons and shortcuts
Wires the session's undo/redo into the GUI: ↶ Undo / ↷ Redo toolbar buttons,
add_enabled-gated by can_undo()/can_redo() so they grey out when there is
nothing to do, and Ctrl/Cmd+Z (undo) / Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y (redo)
shortcuts read with modifier checks (first in handle_keys, so a modified Z is
not also taken as a plain key). A run_history helper handles the
Option-returning steps, reporting "nothing to undo/redo" when the stack is
empty. These run in the toolbar/key path, before the frame's rerender slot, so
there is no stale-texture concern. Module doc, help text, and the crate
description are updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NAtEiJtt9yKVV1zjKYmZhS
2026-06-30 17:21:02 -04:00
..
epiphany-bundle Pass 11 audit follow-up: honest LayoutObjectId status + doc/test gaps 2026-06-22 10:02:05 -04:00
epiphany-core Agent I-0: real clef + key-signature data in the core graph 2026-06-26 10:31:16 -04:00
epiphany-determinism P12-I2: wire the ratified MUSCLOID layout-object id derivation 2026-06-27 12:46:19 -04:00
epiphany-editor-core editor-core: undo/redo by re-reducing the op-log prefix 2026-06-30 17:12:02 -04:00
epiphany-editor-gui editor-gui: undo/redo buttons and shortcuts 2026-06-30 17:21:02 -04:00
epiphany-engrave layout-ir, engrave: ledger lines 2026-06-29 17:12:56 -04:00
epiphany-layout-ir editor-core: a staff_pitch_at click→pitch vertical inverse 2026-06-29 18:56:34 -04:00
epiphany-ops ops: ModifyEvent materializes metric placement changes (trim/move) 2026-06-30 10:43:10 -04:00
epiphany-render-svg layout-ir, engrave: ledger lines 2026-06-29 17:12:56 -04:00
epiphany-testkit epiphany-editor-core: a headless editor API + a conformance UI-seam gate 2026-06-27 16:47:34 -04:00