mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* fix(native-chat): a closed chat tab stays closed while the host is still closing it Closing a chat tab removes it from the window at once. A tab-list frame the host publishes before it has handled the close (a working chat's status update, for one) still listed the chat, and the window appended it back at the end of the strip until the host's own removal arrived. The window now leaves out a chat whose close it has not heard back on, using the in-flight close record it already keeps, and re-reads the host's tab list once the close settles so a chat the host kept comes back. * fix(native-chat): hide a closing chat tab through the existing close intent Record a close intent for agent-session:<id> under the chat's host when a chat tab close begins, so a host frame sent before the host handles the close cannot re-add the chat at the end of the strip. The intent lifts when a host frame stops listing the chat, or by its TTL. Only a failed host close clears it and re-reads that worktree at the version already applied, so the chat the host kept comes back. Replaces the close-owner gate and the re-read after every close. * fix(native-chat): end a chat close intent even when no host frame follows Re-read the closed chat's worktree after every settled close, not only after a failure, so a close the host had nothing new to publish for still ends its intent; otherwise the same chat reopened within the intent's 20 s limit stayed hidden. Skip the intent for floating-panel chats, whose frames are never applied. Share one one-worktree local refresh with the Session History reopen path. Reset close intents between tests in the reopened-tab e2e file, whose harness tears the host down before a close's follow-up re-read lands. * fix(native-chat): re-read after a successful chat close only for paired servers This machine's host emits its removal frame before the close answers, and the window applies it, so a local chat re-reads only when the close fails. A paired server's frames travel apart from its answer, so, as for its terminal closes, every close is followed by a read, and that read no longer joins a tab-list request that began before the close. Floating-panel chats record no intent and get no read. * fix(native-chat): pin a chat close intent to the pairing the close began under Record and clear the intent with one owner captured at close start, as paired terminal closes do, so re-pairing a server mid-close cannot miss the clear, and pass that pairing to the paired re-read.