mirror of
https://github.com/stablyai/orca.git
synced 2026-11-01 09:37:33 +00:00
* fix(ssh): a legacy relay restarted at the same socket never takes over an open tab A pane's owner is now its relay endpoint plus the incarnation that relay listed. A relay that restarts at the owner's socket and reuses pty-N under another incarnation is never served for the tab, its exit and output never reach it, and its silence is not read as the original shell's exit: the pane stays unverifiable. * fix(ssh): keep an exit a reconnected relay reported before its listing bound the pane * fix(ssh): a legacy relay's exit report counts when it arrives on the connection that listed the pane * fix(ssh): a pane waiting on a replaced legacy relay keeps its connection * fix(ssh): never hold or retake a replaced legacy relay's owner role for a pane it can't resolve * fix(ssh): an epoch-scoped pane's exit reported during a reconnect counts without a listing row * refactor(ssh): the owner ledger holds the connection that speaks for each legacy relay pane The connection a listing verified stays bound to the owner until it closes, so its exit reports count even after a later listing missed the pane. * refactor(ssh): every legacy relay pane route asks the owner ledger; a replaced pane is never bound Attach, input and stops go through liveRouteOf, which reaches only the connection the ledger says speaks for the pane; exit and output reports use the same check. A pane whose relay was replaced at its socket is never bound to the replacement, and a stop owed to it is abandoned instead of being fenced against the stranger.