Files
orca/config/ast-grep
Brennan BensonandClaude Opus 5.5 6b7da572e5 perf(persistence): window moves and UI edits no longer re-save the whole profile (#40627)
* 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>
2026-11-10 20:49:00 -08:00
..