Workspace has no 'Save as new' affordance — user wants to fork a loaded design into a new file with a different name, but only the editor has Save as New (and only when onSaveAsNew is wired) #250
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#250
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's Save button has a "Save as New…" option in the dropdown (per #187 fix), but the workspace's save button does not.
grep -n 'saveAsNew' src/components/workspace/returns 0. The workspace's save path only hashandleSave(overwrite in place). If the user loaded design "flower.pes" and wants to create "flower_v2.pes" as a separate file, they have to:grep -n 'Save As\|Save as\|saveAs' src/components/workspace/returns 0.Where
src/components/workspace/AppHeader.tsx(Save button)src/components/workspace/useWorkspace.ts:handleSave(single save path)grep -n 'saveAsNew' src/components/workspace/returns 0Suggested fix shape
Add a "Save as New…" option to the workspace's Save button (split-button pattern, same as the editor's per #187):
onSaveAsNewopens a small modal: "Save as New. What should the new design be named?" with a text input pre-filled to<current name> copy. On confirm, the workspace callssaveDesignToGallerywithloadedDesignId: null(force a new row) and the new filename.This mirrors the editor's #187 implementation. The user can fork the loaded design in either the workspace or the editor.
Severity
Low. The user can save + rename. The fork-in-place is a polish improvement.
Discovered by
Gap analysis (2026-10-02) of workspace save affordances.
Related
DesignCard.tsx:531) is the post-save rename fallback.Shipped in commit
0c3a4b1(fix(#250)).What landed:
<current> copyand refocusing the input on each open.loadedDesignId: nullso the helper takes the "create fresh row" branch (#152) instead of updating the loaded row in place. Binding is cleared after the save so a follow-up Save click in the same session keeps creating new rows.Tests: 502 passed (5 new AppHeader tests; full suite +5 vs prior baseline). Lint + tsc clean.
Use case: user loads "flower.pes" -> clicks Save caret -> "Save as New…" -> types "flower_v2.pes" -> confirms -> fresh gallery row appears, original untouched.