Editor Save button is enabled even when the design hasn't been edited since the last save — user clicking Save on an unchanged design gets a misleading 'Updated X' toast, no way to tell 'would do nothing' from 'would update' #243
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#243
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
src/components/editor/EditorHeader.tsx's Save button (line 240+) is disabled only when!canSave:canSaveis computed in the Editor aspaths.some((p) => p.visible && p.nodes.length > 0)(per #150). It's a "has content" check, not a "has changes" check.isDirtyis tracked separately (per #161, thebeforeunloadhandler) but is NOT used to disable the Save button.A user who:
{ updated: true, design })The toast is technically correct (the row was re-saved), but the action is a no-op semantically.
Where
src/components/editor/EditorHeader.tsx:240src/pages/Editor.tsx(paths have content)src/pages/Editor.tsx(has unsaved changes)Suggested fix shape
Either:
The polish move is option 1: the user sees a disabled Save button when there are no changes, the visual cue that "you don't need to save."
The flag should be on the button's "Save" not the dropdown "Save" — when the design is dirty, the dropdown's "Save" and "Save as New" both work; when not dirty, only "Save as New" is meaningful (it forks the unchanged design). The button's "Save" disabled in option 1 handles the "save same content" case.
Severity
Low. The user can ignore the toast. Power users notice the misleading "Updated" message.
Discovered by
Code review (2026-10-02) of editor save flow.
Related
isDirtyflag is the same state.Closed by commit
35e9e7aon main.The Save button (EditorHeader.tsx) is now also gated on
isDirty, not justcanSave. A clean user clicking Save on an unchanged design no longer triggers the misleading "Updated X" toast.Save-as-New split stays accessible — forking an unchanged design is meaningful. 3 new tests in EditorHeader.test.tsx (50/50 pass). ESLint clean.