Tier: Fix first · Order: 3 of 35 · Effort: M · Impact: high
What
The top bar always shows Unsaved / Saving / Saved / Published. Closing the tab with unsaved work warns you. Errors stay visible until dismissed. Publish refuses to run if the save before it failed.
Why
Audit: no dirty tracking or beforeunload; errors vanish after 3s; no resp.ok checks; publish() ignores save()'s result (useWhpApi.ts:252), so a failed save still “publishes” stale content and shows Published.
Today
Status flashes for 2-3s then disappears (TopBar.tsx:84-100).
Design notes
Dirty = Craft history changed since last successful save, or page/design context changed. One small toast component replaces five ad-hoc status flashes.
**Tier:** Fix first · **Order:** 3 of 35 · **Effort:** M · **Impact:** high
## What
The top bar always shows Unsaved / Saving / Saved / Published. Closing the tab with unsaved work warns you. Errors stay visible until dismissed. Publish refuses to run if the save before it failed.
## Why
Audit: no dirty tracking or beforeunload; errors vanish after 3s; no resp.ok checks; publish() ignores save()'s result (useWhpApi.ts:252), so a failed save still “publishes” stale content and shows Published.
## Today
Status flashes for 2-3s then disappears (TopBar.tsx:84-100).
## Design notes
Dirty = Craft history changed since last successful save, or page/design context changed. One small toast component replaces five ad-hoc status flashes.
## Depends on
- #28 Autosave must not run until a load succeeded
---
From the 2026-10-07 site-builder research (competitor review, user sentiment, code audit, Fable prioritization). Roadmap: https://claude.ai/artifact/QpQcSCk21z6SN7LPSm8tKE · id `save-state-truth`
Shipped in WHP release 2026.10.3 (site-builder mainbdb4789, deployed fleet-wide 2026-10-07). Implemented, reviewed and verified as part of the editor-polish batch.
Shipped in WHP release **2026.10.3** (site-builder `main` bdb4789, deployed fleet-wide 2026-10-07). Implemented, reviewed and verified as part of the editor-polish batch.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Tier: Fix first · Order: 3 of 35 · Effort: M · Impact: high
What
The top bar always shows Unsaved / Saving / Saved / Published. Closing the tab with unsaved work warns you. Errors stay visible until dismissed. Publish refuses to run if the save before it failed.
Why
Audit: no dirty tracking or beforeunload; errors vanish after 3s; no resp.ok checks; publish() ignores save()'s result (useWhpApi.ts:252), so a failed save still “publishes” stale content and shows Published.
Today
Status flashes for 2-3s then disappears (TopBar.tsx:84-100).
Design notes
Dirty = Craft history changed since last successful save, or page/design context changed. One small toast component replaces five ad-hoc status flashes.
Depends on
From the 2026-10-07 site-builder research (competitor review, user sentiment, code audit, Fable prioritization). Roadmap: https://claude.ai/artifact/QpQcSCk21z6SN7LPSm8tKE · id
save-state-truthShipped in WHP release 2026.10.3 (site-builder
mainbdb4789, deployed fleet-wide 2026-10-07). Implemented, reviewed and verified as part of the editor-polish batch.