Commit Graph
6 Commits
Author SHA1 Message Date
OrcaWinandOrcaWin a49fca7a98 fix(runtime): keep the restored tab selected after a serve restart; update stale paired e2e specs (#39980)
* fix(runtime): keep a restored tab selected after orca serve restarts

Since #38844 a cold rebuild restores the saved tab groups, and a saved
group's null active tab was kept as an explicit "nothing selected". A
headless server never saves its own selection, so after a restart its
workspaces listed every terminal with none selected. Saved groups now
only declare a null selection when the session also saved an active
group; otherwise the restored tab stays selected, as before.

* test(e2e): bring layout-compat and paired-client specs up to current behavior

- old-phone baseline: phone snapshots carry tabGroupLayout since #38844.
- tab composition: drop onto where the active tab sits once a drag
  undocks it; create the server-placed browser page on the server, since
  a phone's create through the desktop is desktop-hosted (#37705); the
  desktop serves its phone the server page it mirrors (#36447).
- project removal: retry the host's "can't answer yet" terminal list and
  wait for a terminal whose shell has spawned.

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-08 14:29:52 -08:00
Jinwoo Hong cfd9e9c82c Editor tabs main-first: the window asks main for every editor tab change and draws only main's update (dark, layout-owner build only) (#31438)
* Editor tabs main-first: the window sends each editor action to main and draws editor tabs only from main's frames (dark, layout-owner build only)

With ORCA_LAYOUT_OWNER_IS_MAIN on, editor open (preview replace, open to the side), reopen at
its position, close, close-all, promote, the resolved conflict placeholder, a restored-editor
move and a disk rename are layout commands the window sends before it draws anything. Window
content (open file records, drafts, buffers, the autosave gate) is written at once for an open,
and rekeyed in the same store update as the frame for a move or rename. Main publishes each
non-edit tab's view, keeps views in memory across applies and partition changes, stamps the
tab's time, folds same-file duplicates, and republishes a windowless host's session.tabs after
its own file open. The switch-off path is unchanged.

* test(d3a-2): the buffer view index follows a rename main answers

* test(e2e): the old-phone baseline records a windowless server opening the file, as main does since #31291 (test only)
2026-10-21 12:38:35 -04:00
Jinwoo HongandE2E Test b1b4c785c0 test(e2e): the old-phone layout baseline expects a layout-owner build's file open to succeed (#31138)
Co-authored-by: E2E Test <e2e@test.local>
2026-10-20 10:09:52 -04:00
Jinwoo HongandE2E Test 2d461d20be test(e2e): the old-phone layout baseline lists customTitle on terminal rows (#31127)
#30037 made the headless row builder emit customTitle on every terminal row; the Linux baseline
recorded before it (#27688) never listed the field, so the spec fails on main with either layout
switch.

Co-authored-by: E2E Test <e2e@test.local>
2026-10-20 09:05:04 -04:00
Jinwoo Hong 0e4207400b fix(terminal): keep a named terminal's title across an orca serve restart (#28126)
* fix(terminal): keep a host-made terminal's title across a serve restart

A title given to terminal.create was kept only on the live process record, so
after an orca serve restart the tab read "Terminal N" and terminal.list
listed no title. The runtime now writes it as the tab's saved name when it
admits the pane, and terminal.list falls back to that saved name for a
terminal that has no title of its own yet, as a window does.

* test(e2e): record the kept terminal titles in the layout-compat baselines

* fix(terminal): save a created terminal's name only when the window would show it

A background create (a worker the window never reveals) keeps its live title:
a window reads a saved name on hydration and shows it over the agent's own
title. Also corrects two comments and drops a key count.
2026-10-12 22:25:55 -04:00
Jinwoo Hong 8dfa2b1875 test(e2e): mixed-version, two-client and phone layout baselines recorded on main (#27688)
* test(e2e): record mixed-version, two-client and phone layout baselines on main (P3)

* test(e2e): P3 review fixes: reconnect and I/O proof, restart order bounds, Linux-only baselines

* test(e2e): re-record Linux phone and serve-restart baselines

* test(e2e): P3: echo drawn in the desktop pane; bound the group selection after restart

* test(e2e): re-record serve-restart group selection

* test(e2e): name P3 baseline helpers for what they record
2026-10-11 21:18:16 -04:00