1. Export dialog (Ctrl+Shift+S): replaced react-hotkeys-hook handler with
a capture-phase keydown listener on window so the browser's native
"Save Page As" dialog is intercepted before it can fire.
2. Text tool: created useTextTool hook that spawns an inline textarea
overlay on canvas click, commits the text as a Konva Text object on
blur/Enter, and wired it into the useActiveToolHandlers dispatcher.
3. Undo (Ctrl+Z): removed the 500ms debounce from zundo's handleSet.
The debounce caused a race where calling undo before the timer fired
would discard the future-states stack, making undo appear to do
nothing. The equality function (keyed on _historyVersion) already
prevents intermediate states from being recorded, so the debounce
was redundant.
Implements Agent 2 deliverables for the image editor: move tool with Konva
Transformer and smart guide snapping, rectangular/elliptical marquee and
lasso selection with marching ants animation, magic wand flood fill, crop
tool with darkened overlay and rule-of-thirds grid, free transform with
numeric inputs, context menu with z-ordering and clipboard operations,
rulers with drag-to-create guides, smart alignment guides, and canvas/image
resize dialogs. Also creates the shared editor types and Zustand store with
full layer management, z-ordering, clipboard, guide, and document operations.