-
Notifications
You must be signed in to change notification settings - Fork 0
Save button announces success on failed and no-op saves #41
Copy link
Copy link
Closed
Labels
accessibilityScreen-reader, keyboard, and assistive-technology correctness (spec 8.2)Screen-reader, keyboard, and assistive-technology correctness (spec 8.2)autosavebugSomething isn't workingSomething isn't workingdata-lossCan lose or silently corrupt the user's workCan lose or silently corrupt the user's workuiRelated to the user interfaceRelated to the user interface
Milestone
Description
Metadata
Metadata
Assignees
Labels
accessibilityScreen-reader, keyboard, and assistive-technology correctness (spec 8.2)Screen-reader, keyboard, and assistive-technology correctness (spec 8.2)autosavebugSomething isn't workingSomething isn't workingdata-lossCan lose or silently corrupt the user's workCan lose or silently corrupt the user's workuiRelated to the user interfaceRelated to the user interface
The Save button announces success unconditionally, including when the save failed or when there was nothing to save.
src/ui/shell/TransportBar.tsx:AutosaveQueue.flushNow()is documented and implemented to never reject: on failure it catches, re-queues the batch, callsonErrorand returnsfalse;flushNowre-arms and returns. So:saveNow()isawait queue?.flushNow()→ resolves instantly → "Project saved" is announced when there is no project at all.There is no
.catchon the chain, and the booleanflushNowreturns is discarded.§4.4 requires
saveNow()to be surfaced in the UI. It is surfaced — but it reports success it has not verified, which is worse than not reporting at all, because the user stops checking.Suggested fix
Have
saveNow()propagate the outcome (return theflushNowboolean, or reject) and announce accordingly — "Project saved", "Save failed — retrying", or "Nothing to save". The autosaveonErrortoast already knows a failure happened; the explicit Save path should not contradict it.