mirror of
https://github.com/stablyai/orca.git
synced 2026-11-02 10:08:13 +00:00
* fix(editor): keep an editor tab Orca moved to its file's workspace across restart The move saved the tab under the file's owned id and left the tab's workspace pointing at the old one. Restore rebuilt a local file under its bare path, so the tab named no open file and was dropped. Restore now maps a saved owned id to the id it rebuilds, and the move gives the tab its new workspace. * refactor(editor): delete reorderFiles, which nothing calls * chore: prune the renderer layout-writer baseline * fix(layout-owner): keep diff, preview and conflict records when a frame redraws editor tabs Switch-on builds only. A frame rebuilds the window's tabs through the restore builders, which drop every diff, conflict and check tab (restore has no record for them), and the store patch dropped every open file the frame did not carry. Frames carry only edit-mode files, so the next frame after opening a diff closed it in the window while main kept it, and a markdown preview kept its tab but lost its record. The rebuild now keeps a transient tab whose record the window holds, and a held record goes only with the last tab showing it; a record no tab shows (a conflict review's selected file) stays. * feat(layout-owner): record renamed open files and closed conflict placeholders in main Switch-on builds only; switch-off behaviour is unchanged. A rename or move in the explorer rekeys open editor, preview and diff tabs in the window and main learned it only from the window's save. The window now records the rekey as a `renameEditorFiles` command, under the ids it chose (bare path, owner-qualified id, diff id), one per workspace, with each edit-mode file's new record. It records rather than asks first: the rekey is atomic with drafts and the autosave echo gate, and its answer gates the move coordinator. Main's path-keyed `editorFilesRenamed` transition, which nothing produced and which could not match owner-qualified or diff ids, becomes this command. A git status poll that sees a deleted-side conflict resolved drops its placeholder record but leaves the tab to the tab reconcile; frames then brought main's edit record back. Main now closes that tab. * test: type the rename command as a window layout command * fix(editor): map a moved tab's owned id on restart only; main records a renamed file only for a tab it shows * fix(editor): restore a moved tab's file under the owned id the tab names Restart and frames now agree: neither rekeys the tab, and a frame that redraws one workspace never points its tab at a same-path file in another. A rename that changes nothing leaves no empty file list. * test: a moved tab's owned id stays apart from a sibling's same-path file in any frame