- **Session restore survival across Sparkle updates**: workspaces, pinned projects, and project directories no longer vanish after installing an update.
- Persist the session **synchronously** on update relaunch (async
Taskcould lose the last full snapshot when Sparkle terminated the process). - Startup restore health failure **no longer deletes** the dual-file snapshot pair; only the primary autosave is quarantined while
.stable.jsonis kept. - Prefer richer project-rooted **stable** when the primary snapshot is home-demoted (classic post-update
$HOMEwipe). - Refuse to overwrite a project-rooted stable with empty/home-only promoting saves after recovery.
- Tighten demotion heuristics so intentional multi-panel
~sessions and mostly-healthy primaries are not replaced by older stable. - Drain the session persistence queue on terminate/update writes so thin autosaves cannot race after the final promote write.
- Cap
*.failed-restore-*.jsonquarantine files (keep newest 3).
- Bumped version to **5.0.12** (build 310).







