b0a32ae4736d5643f2f59fa369219b23db514c4a
Every mutation in WorkspaceView computed its new tree from the `layout` its callback closed over, and two of the paths are not immediate: the resize debounce fires 500 ms after the drag began, and a window resize fires onLayout on every group at once. So the later write was computed from a tree that predated the earlier one and silently undid it — remove a panel just after dragging a splitter and it came back. Worse now that panel identity lives in the layout: the resurrected tree carries an older `config`, so a panel that was just given an agent's name reverts to anonymous and the agent stops being addressable through it. All eight now pass an updater to setValue, which composes against the current cache. The debounce timer also had no cleanup at all, so it outlived the component. It now flushes on unmount rather than dropping — with an updater the early write is correct, and dropping would lose a splitter drag made just before navigating away, which the no-cleanup version did at least persist. Neither file is prettier-clean at HEAD, so neither was formatted; the new code is written to match. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
No description provided
42 MiB
Languages
TypeScript
90.9%
Shell
4.7%
JavaScript
4.1%
CSS
0.2%
HTML
0.1%