Files
orca/tests
Jinwoo HongandE2E Test 23d68112df Restored terminals named only on their tab reattach after a restart (dark, layout-owner build only) (#30986)
* fix(layout): restored terminals named only on their tab reattach after a restart (dark, layout-owner build only)

In a layout-owner build, a terminal recorded only on its tab (an older session, or an SSH tab
whose relay session was never visited) started a new shell after a restart and orphaned the old
one, and an unvisited SSH tab lost its relay session id on the next save.

- Main's Loader binds a one-pane tab's own terminal to its unbound pane in a workspace that was
  live at shutdown, as the window's reconnect does, so main's frames and saves hold it.
- The window's reconnect writes the restored row terminal again: ptyId is a field the frame merge
  leaves to the window, so main's frames never set it on a restored row.

* fix(layout): main binds a restored tab's own terminal once at load, not on every Loader run (dark, layout-owner build only)

The Loader re-derived the binding on each load from fields the window rewrites live, so an exit
main recorded could be undone. A switch-gated Store load repair now binds a one-pane tab's own
terminal to its unbound pane, as the window's reconnect does, and main's saves keep it. It skips
a terminal another mounted pane or a tab-bar tab holds, and a paired server's partition.

* fix(layout): an SSH workspace's restored tab binds only its relay session id; repair runs after the load purge (dark, layout-owner build only)

* test(layout): the reconnect gate test expects the row ptyId write; cover the repair's purge order and SSH repo predicate

---------

Co-authored-by: E2E Test <e2e@test.local>
2026-10-20 00:41:41 -04:00
..