mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* fix(session-tabs): keep the server's per-device tab pick on the tab the desktop shows The server hands its remembered pick back whenever the desktop has no tab groups of its own for a workspace. A desktop that kept its groups never reported what it showed, so that pick went stale and such an open landed on the wrong tab. * fix(session-tabs): report only a ready visible pane, and retry after an error answer Name the pane the desktop shows and require it ready, so a report never starts a pending sibling's terminal. A failure envelope no longer marks the pick as reported. * fix(session-tabs): report a desktop's pane once per change and connection Two windows sharing one device id could steer the pick back and forth. Report again only when this desktop's own pane changes, scope the record to the pairing and connection, and resolve the visible tab with the existing helper. * fix(session-tabs): report only the on-screen workspace, compare panes, and remember agreement Reports stay with the workspace on screen, whose pane attaches anyway, so a report never starts a terminal elsewhere. The pick is compared pane for pane, and an agreeing frame records the pane so a later change of this desktop's pane reports again. * fix(session-tabs): settle before reporting, report on opening a workspace, and only to its owner A click records its activation after an async hop, so a report now waits until the pane settles and compares against the latest frame. Opening a workspace reports from its latest frame. A workspace id two servers share is reported only to its owner. The e2e now drives the real flow: a stale pick, then a desktop restart. * fix(session-tabs): keep one outstanding pick check per workspace, fenced to its connection A busy workspace's frames no longer postpone the check. A frame from a replaced pairing or connection is dropped, and a frame without the per-device projection clears the cached one. * fix(session-tabs): bound the pick report caches and clear them on mirror teardown One record per workspace, with the connection in the value. Environment teardown drops reports, frames and timers. The tests use checked types, and the e2e notes why it waits and why it needs more time. * fix(session-tabs): check again when the user moved on before a report finished The host does not order activations, so a report that completes after the user picked another pane may have landed last. Clear its record and recheck from the latest frame. * fix(session-tabs): type the visible pane's leaf as optional * fix(session-tabs): send a browser or chat pick again when a late report landed after it A terminal report that completes after the user picked a browser or chat tab may have had the last word. Re-send that pick the way a click does. * fix(session-tabs): recheck a late report against the host's answer, and fence it to teardown The activate answer is the host's per-device frame after the report, so a late landing is checked against it instead of a cached frame. A report answered after mirror teardown or a new connection does nothing. * test(session-tabs): drop the in-connection suppression check from the restart e2e Whether the desktop repairs a stale pick within the connection depends on which frames settle first; the guarded outcome is the pick after a restart. * fix(session-tabs): reconcile the user's newer pick after any report outcome, timeouts included A report whose answer timed out may still have landed after the user's newer pick. Settle every outcome the same way: retry on failure, then reconcile with what the desktop shows.