mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* perf(persistence): saves name the profile domains they changed UI changes, window moves, SSH terminal exits, phone tab switches and repo/folder/SSH/lineage edits no longer re-serialize and hash the whole profile on the main thread. Each save names its domains (or 'whole' where an operation can't know them), and one per-domain saved form serves both selective and whole saves, writing dependent domains together. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(persistence): keep folder re-tiering and plugin context on named saves Folder workspace unread writes re-tier sort stamps again, and plugins hear an active folder's rename, now that those saves name their domain instead of the whole profile. The folder-note test drains the load's whole save so it checks the named save. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(persistence): typed folder workspace fixture for the re-tier case Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(persistence): build the serializer from typed state in the parity test Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(persistence): read unprojected domains without a type assertion Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(persistence): stall and fail the selective writer UI saves now use Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * perf(persistence): every mutation saves only the domains it changed Removing a project, renaming a worktree's path, re-adopting an SSH target, importing a catalog, deleting a group or folder workspace, retrying a failed terminal close and remapping session panes now name their domains instead of rewriting the whole profile. Only startup load and maintenance resume rewrite every domain, through a separately named entry point a lint rule keeps out of mutation code. A named automationRuns save refreshes a pending run delta so it can't write an older run list. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(persistence): a named automation-run save supersedes older run lists A catalog import replaces the run list while an earlier run write can still be in flight; if that write fails, its restored pending list must not win over the import. Domain lists name the local session through the shared constant so the layout-writer ratchet stays exact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(persistence): keep the whole-row fallback for replaced run lists A run list replaced outside the run-delta path (catalog import, SSH re-adoption) saves as a whole row again, so histories that can't use the per-run storage still save. A failed in-flight run write restores its pending list only while that list is still current; otherwise it marks the run domain for a whole-row save. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * fix(persistence): save run lists per-run rows can't hold as one row A run delta whose list can't be stored as per-run rows (a legacy history with duplicate run ids) now saves as the ordinary whole-row replacement instead of failing the transaction, so a catalog import or run edit on such a profile still commits. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>