Home page advertises keyboard shortcuts but Workspace has zero — only the Editor has shortcuts (8 tool keys + Ctrl+Z/Y/A/D); the bulk-of-time surface is shortcut-less #156
Labels
No labels
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:verify-failed
bug
deferred
feature-request
in-progress
needs-decompose
needs-triage
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/Kimi_Agent_Brother_10_Digitizing_App#156
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Finding
The Home page feature grid advertises "Keyboard shortcuts: Power through designs with shortcuts for every tool and action" (
src/pages/Home.tsx, the feature cards section). The Help page mentions "keyboard shortcuts" implicitly via the editor'suseKeyboardShortcutshook.The Workspace has no global keyboard shortcuts. Verified by searching for
addEventListener('keydown'insrc/components/workspace/— only the BottomThreadBar's AlternativesPopover has one (Escape to close), and the AppHeader's filename edit (Enter/Escape).The only tool action shortcuts in the entire app are in the Editor (
src/components/editor/useKeyboardShortcuts.ts):n→ select_nodesa→ add_noded→ delete_nodec→ convert_nodep→ draw_paths→ scissorsm→ smoothz→ zoomCtrl+Z/Ctrl+Shift+Z→ undo / redoCtrl+A→ select allDelete/Backspace→ delete selectionTab→ cycle nodesEnter/Escape→ finish / cancel path drawThe Workspace — where the user spends the bulk of their time — has none. The home page promise is unfulfilled for the Workspace.
Where
src/pages/Home.tsx(the "Keyboard shortcuts" feature card)src/components/editor/useKeyboardShortcuts.tssrc/components/workspace/— no global shortcut handlerSuggested fix shape
Add a
useKeyboardShortcutshook in the Workspace that mirrors the editor's shape. Reasonable scope for a first pass:Ctrl+Z/Ctrl+Shift+Z→ undo / redo (the Workspace's reducer hashistorystate; this is the highest-priority shortcut)Delete/Backspace→ delete selected stitch objectsCtrl+S→ save current design to gallery (currently requires clicking the "Save to Gallery" button)Ctrl+D→ trigger auto-digitize (with confirmation if a design is already digitized)?→ open the help page (or show a shortcut cheatsheet modal)Escape→ deselect all, close any open dialogThe hook should match the editor's pattern: skip the shortcut if focus is in an
<input>,<textarea>, or<select>. Otherwise the user can't type in the Hoop Size dropdown without triggering "Save".The Help page should list the shortcuts; the Workspace could also show a "Press ? for shortcuts" hint in the toolbar.
Severity
Medium. The feature is advertised but not implemented. Power users will notice; casual users won't.
Discovered by
Gap analysis (2026-10-02) of workspace affordances.
Related
useKeyboardShortcutsis the model; copy the shape.Fixed in commit
fb4ed81on main. Workspace now has a globaluseKeyboardShortcutshook (mirrors the editor hook shape) that delivers the surface advertised on the Home page:The Help modal now renders the shortcut cheatsheet (was a placeholder). The LeftToolbar shows a small "? help" hint at the bottom. The hook skips events whose target is //<select>/contentEditable, so typing in the Hoop Size dropdown will not trigger Save.</p> <p dir="auto">22 new tests in <code>useKeyboardShortcuts.test.ts</code> cover every shortcut, the input/textarea/select skip path, modifier-vs-letter conflicts, and unmount cleanup. Full suite: 675/675 pass. tsc + eslint clean. CI for <a href="/Mark/Kimi_Agent_Brother_10_Digitizing_App/commit/fb4ed81" class="commit"><code class="nohighlight">fb4ed81</code></a> is still queued ("Waiting to run" — substrate-side issue affecting every recent commit, not specific to this change).</p> </body></html>
computeFitToViewportandcomputeFitToHoopexist incanvasFit.tswith full test coverage but the Workspace's canvas has no button to invoke them — #160 landed for the Editor only #180