Editor has no Save button — user can edit a design but must navigate back to Workspace and click 'Save to Gallery' to persist; the Editor offers no save affordance #150
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#150
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 Editor (
src/pages/Editor.tsx) has no "Save" or "Save to Gallery" button. The Editor header (src/components/editor/EditorHeader.tsx) exposes:A user who opens a saved design from the Gallery, edits it in the Editor, then clicks "Back to Workspace" has no way to persist the edits from inside the Editor. They must:
The Editor writes its changes to
sessionStorageon every modification (via the existing useEffect inEditor.tsx:188-210). The Workspace re-hydrates from that sessionStorage on mount. So the data IS carried across the route change. But the user has to know to click "Save to Gallery" in the Workspace, and the Editor offers no way to trigger it directly.This is a real UX gap: the user is in a context (the Editor) where they expect to be able to save their work, and they can't. They have to navigate to a different context (the Workspace) to do it.
Where
src/components/editor/EditorHeader.tsx— buttons at line 84-110 (Export), 118-134 (Undo), 137-153 (Redo), 76-89 (Back to Workspace). No Save.src/pages/Editor.tsx:188-210(carries edits across navigation)src/components/workspace/useWorkspace.ts(thehandleSavecallback, exact line not relevant here)Suggested fix shape
Add a Save button to the Editor header, between Undo/Redo and the right edge of the actions group. The button:
The simplest implementation: move the
handleSavelogic out ofuseWorkspaceinto a shareduseSaveDesignhook that both the Workspace and the Editor can call. The hook takes the design state, the snapshot, and the current stitchObjects/threadStops/designSettings and writes to localStorage.The Save button could also be a "Save & Close" variant that saves then navigates to /gallery, giving the user a clear end-state.
Severity
High. Editing in the Editor and returning to the Workspace without manually clicking "Save to Gallery" loses the work. A user expectation broken.
Discovered by
Gap analysis (2026-10-02) of Editor/Gallery integration.
Related
Fixed in commit
7de1e29on origin/main.Implementation:
src/components/gallery/saveDesign.tshelper (saveDesignToGallery) that both the Workspace header and the Editor call. Returns a structured{ok, design}/{ok: false, error}result so callers surface toasts consistently.useWorkspace.saveCurrentDesignto delegate to the helper — Workspace behavior is unchanged byte-for-byte (same id shape, sametc_design_snapshots/<id>sidecar, same source/folder defaults, same quota fallback).handleSavereuses the existingpathsToStitchObjects/pathsToThreadStopsconverters that already feed the ExportDialog — single source of truth for what gets persisted.Verification: 622/622 tests pass, lint+typecheck clean. Added 9 new tests (4 for the helper, 5 for the Editor Save flow including filename round-trip and sessionStorage-snapshot-intact-after-save).
selectedPathIdis local useState, the right panel re-renders with no selection on remount #162