Neil
eff317939a
fix(terminal): mount one surface per workspace id in the workbench (STA-4846) ( #17432 )
...
* fix(terminal): mount one surface per workspace id in the workbench (STA-4846)
* test(terminal): pin the workbench projection against under-selecting
Losing a surface unmounts live terminals, which is worse than the
duplicate mount STA-4846 fixes, so cover every catalog shape that reaches
the workbench: local-only rows that name no host, an unqualified row
colliding with a host-qualified one, two SSH hosts on one id, folder rows
across three hosts, folder ids alongside git worktree ids, and a
whole-catalog assertion that the emitted id set equals the distinct input
id set. Also pin the `useAllWorktrees` -> `useWorktreeMap` swap: both read
the same WeakMap-cached snapshot, so the zustand compare is unchanged.
Harden the folder tie-break to require the row to name its own host.
`getCatalogOwnerHostId` defaults an unstamped row to `local`, which would
let a row that never named a host win the `local` tie and mount another
host's path; it now keeps first-wins instead of guessing.
* fix(terminal): surface the unresolvable folder-surface collision
When two hosts publish the same folder-workspace id and the active workspace's
host cannot be resolved, the projection drops one row's folderPath first-wins.
That path is the PTY cwd for any tab without a startupCwd, so the drop was
silent. Warn on it, and pin the two tie-break branches the unit tests missed:
a colliding row that is not the active workspace, and the same collision with
the rows in swapped order (a host reconnect re-appends its rows, flipping which
row is first mid-session).
* test(e2e): ride out Playwright's spurious main-process evaluate rejection
`e2e / changed e2e specs` failed on `pr11346-selected-runtime-add.spec.ts`
with "Execution context was destroyed, most likely because of a navigation"
from the paired client's first `app.evaluate` — the isolated-HOME assert that
runs one millisecond after `electron.launch()` resolves, which is before the
app is `ready`. Nothing navigates there: Playwright raises that message for
any main-process CDP failure that is neither a JS error nor a closed session,
and `ElectronApplication.evaluate` is unreliable on Electron 27+
(microsoft/playwright#33737 ). Reproduced locally, and a plain re-run of the
same commit went green.
Extract the retry `installTerminalPtyWriteSpy` already carried for this exact
message into `retryTransientMainEvaluate`, and use it for the launch-time home
read in all three launchers. The read is idempotent and a real boundary escape
still throws on the first successful read.
Also forward the paired client's process logs before the assert instead of
after: this failure reached CI with none of the client's own output, because
forwarding had not started yet.
* test(e2e): wait on the owning group before asserting a Cmd-J browser tab is active
`changed e2e specs` then failed at the remote browser-page step: the store poll
had already seen `activeBrowserTabId` land on the mirrored workspace, but
`[data-tab-id=...][data-active="true"]` never appeared. `data-active` on a
`BrowserTab` is the strip's active tab, which comes from the owning group's
`activeTabId` — not from `activeBrowserTabId` — so the DOM assert was racing an
activation the poll never waited for. The simulator rows in the same spec
already poll the group; the two browser-page rows did not.
Poll the same triple for them, so a genuinely stuck group fails with the ids it
ended on instead of a bare "element(s) not found".
2026-08-31 18:45:52 -07:00
..
2026-08-31 08:17:40 -07:00
2026-08-29 22:37:05 -07:00
2026-08-31 18:45:52 -07:00
2026-07-20 01:14:17 -07:00
2026-07-06 02:12:32 -07:00
2026-06-29 22:38:29 -07:00
2026-08-13 12:48:47 -07:00
2026-07-15 13:25:24 -07:00
2026-07-28 12:33:17 -07:00
2026-07-13 19:13:19 -07:00
2026-07-28 12:33:17 -07:00
2026-06-10 17:23:12 -07:00
2026-08-07 20:36:23 -07:00
2026-08-10 15:52:59 -07:00
2026-08-10 15:52:59 -07:00
2026-08-30 11:45:21 -07:00
2026-08-30 11:45:21 -07:00
2026-06-19 17:14:55 -07:00
2026-06-11 12:46:43 -07:00
2026-08-25 04:00:59 -07:00
2026-08-30 11:45:21 -07:00
2026-07-10 17:27:47 -07:00
2026-07-30 18:51:11 -07:00
2026-08-11 21:16:36 -07:00
2026-06-07 18:16:53 -07:00
2026-07-20 03:04:28 -04:00
2026-06-08 01:00:29 -07:00
2026-08-30 11:45:21 -07:00
2026-06-28 23:13:03 -07:00
2026-08-30 20:28:35 -07:00
2026-08-17 14:53:19 -07:00
2026-07-20 22:04:01 -04:00
2026-08-12 16:07:08 -07:00
2026-08-03 13:02:56 -07:00
2026-08-17 14:53:19 -07:00
2026-08-03 13:02:56 -07:00
2026-08-11 03:07:44 -07:00
2026-08-31 02:46:17 -04:00
2026-08-25 15:36:51 -07:00
2026-08-29 15:43:36 -07:00
2026-08-27 08:49:02 -07:00
2026-06-29 23:37:30 -07:00
2026-08-11 18:19:43 -07:00
2026-08-25 15:36:51 -07:00
2026-08-11 18:19:43 -07:00
2026-08-04 22:07:30 -07:00
2026-07-20 18:18:11 -07:00
2026-08-23 09:45:52 -07:00
2026-08-24 19:32:52 -07:00
2026-06-07 17:49:01 -07:00
2026-08-15 00:41:45 -07:00
2026-08-06 21:18:52 -07:00
2026-08-29 01:50:38 -07:00
2026-06-17 20:05:55 -07:00
2026-08-17 23:28:38 -07:00
2026-07-21 20:51:28 -07:00
2026-08-07 22:33:50 -07:00
2026-06-29 22:38:29 -07:00
2026-07-25 13:42:28 -07:00
2026-06-29 22:38:29 -07:00
2026-05-13 18:48:14 -07:00
2026-05-13 18:48:14 -07:00
2026-08-03 22:55:17 -07:00
2026-08-22 21:40:47 -07:00
2026-05-30 22:46:38 -07:00
2026-05-30 22:46:38 -07:00
2026-07-26 23:48:20 -07:00
2026-07-06 02:12:32 -07:00
2026-06-19 17:14:55 -07:00
2026-08-23 14:25:03 -07:00
2026-08-05 12:57:02 -07:00
2026-08-14 19:04:55 -04:00
2026-08-14 19:04:55 -04:00
2026-05-25 22:21:39 -07:00
2026-07-28 20:52:09 -07:00
2026-04-27 20:55:47 -07:00
2026-08-24 19:32:52 -07:00
2026-06-22 16:27:33 -07:00
2026-07-29 21:43:45 -07:00
2026-08-26 22:17:59 -07:00
2026-06-09 20:57:43 -07:00
2026-08-30 15:14:49 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-08-14 00:33:15 -07:00
2026-06-29 22:38:29 -07:00
2026-07-05 19:46:49 -07:00
2026-08-11 03:07:44 -07:00
2026-08-25 04:00:59 -07:00
2026-08-17 23:28:38 -07:00
2026-08-24 09:38:46 -07:00
2026-08-24 09:38:46 -07:00
2026-08-13 10:31:08 -07:00
2026-08-10 20:42:43 -07:00
2026-08-13 09:56:30 -07:00
2026-08-13 09:31:20 -07:00
2026-08-13 00:58:55 -07:00
2026-08-13 00:58:55 -07:00
2026-08-13 10:26:20 -07:00
2026-08-13 10:31:08 -07:00
2026-08-13 09:31:20 -07:00
2026-08-13 09:56:30 -07:00
2026-08-28 00:55:45 -07:00
2026-08-24 08:58:19 -07:00
2026-08-28 00:55:45 -07:00
2026-08-12 21:28:32 -07:00
2026-08-13 10:26:20 -07:00
2026-08-26 12:48:52 -07:00
2026-07-31 00:22:53 -07:00
2026-07-29 20:04:55 -07:00
2026-08-21 17:11:17 -07:00
2026-08-05 12:57:02 -07:00
2026-08-05 17:49:04 -07:00
2026-08-19 15:47:31 -07:00
2026-08-25 15:36:51 -07:00
2026-08-19 15:47:31 -07:00
2026-08-13 23:59:18 -07:00
2026-08-11 18:19:43 -07:00
2026-07-31 18:01:24 -07:00
2026-08-31 09:20:12 -07:00
2026-08-04 22:07:30 -07:00
2026-07-20 14:50:12 -07:00
2026-08-04 12:37:59 -07:00
2026-08-09 16:35:24 -07:00
2026-08-13 22:48:24 -07:00
2026-08-03 11:11:14 -07:00
2026-08-21 17:11:17 -07:00
2026-08-25 15:36:51 -07:00
2026-07-22 16:10:53 -07:00
2026-08-27 13:44:03 -07:00
2026-08-25 16:46:42 -07:00
2026-07-17 18:57:26 -07:00
2026-07-23 23:18:03 -07:00
2026-08-27 16:59:38 -07:00
2026-05-25 16:43:22 -07:00
2026-07-04 23:29:05 -07:00
2026-07-31 01:57:41 -07:00
2026-06-22 12:29:18 -07:00
2026-08-18 21:37:35 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 22:48:24 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-08-09 01:16:09 -07:00
2026-07-30 03:05:10 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 22:48:24 -07:00
2026-07-19 11:27:29 -07:00
2026-08-14 18:36:51 -07:00
2026-08-14 18:36:51 -07:00
2026-08-23 09:45:52 -07:00
2026-08-23 09:45:52 -07:00
2026-08-09 14:49:36 -07:00
2026-07-30 00:49:23 -07:00
2026-07-30 00:49:23 -07:00
2026-08-23 09:45:52 -07:00
2026-07-29 11:31:35 -07:00
2026-08-25 15:36:51 -07:00
2026-08-13 22:40:58 -07:00
2026-08-25 15:36:51 -07:00
2026-08-21 17:11:17 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-31 18:45:52 -07:00
2026-08-25 23:18:30 -07:00
2026-08-25 15:36:51 -07:00
2026-08-29 22:38:59 -07:00
2026-08-23 16:47:12 -07:00
2026-08-25 15:36:51 -07:00
2026-08-30 11:45:21 -07:00
2026-08-25 15:36:51 -07:00
2026-08-29 22:38:59 -07:00
2026-08-13 22:48:24 -07:00
2026-08-30 03:07:20 -04:00
2026-08-25 15:36:51 -07:00
2026-08-26 22:30:48 -07:00
2026-08-30 03:11:55 -04:00
2026-08-04 22:59:06 -07:00
2026-08-03 19:44:30 -07:00
2026-07-30 18:27:06 -07:00
2026-07-30 03:05:10 -07:00
2026-08-31 08:17:40 -07:00
2026-07-31 16:01:44 -07:00
2026-07-29 20:04:55 -07:00
2026-08-10 16:10:47 -07:00
2026-07-29 20:04:55 -07:00
2026-08-16 13:45:54 -07:00
2026-08-25 15:36:51 -07:00
2026-08-12 22:33:19 -07:00
2026-08-12 21:35:35 -07:00
2026-08-29 22:37:05 -07:00
2026-08-23 12:21:15 -07:00
2026-07-27 17:56:07 -07:00
2026-07-27 17:56:07 -07:00
2026-07-28 12:33:17 -07:00
2026-07-27 17:56:07 -07:00
2026-08-31 18:45:52 -07:00
2026-08-22 16:08:21 -07:00
2026-08-09 23:14:17 -07:00
2026-07-15 17:14:10 -07:00
2026-08-20 02:15:42 -07:00
2026-08-01 00:00:12 -07:00
2026-08-09 21:21:18 -07:00
2026-07-23 01:45:24 -07:00
2026-08-11 18:19:43 -07:00
2026-08-13 12:38:08 -07:00
2026-08-13 22:48:24 -07:00
2026-08-25 15:36:51 -07:00
2026-07-12 22:40:57 -07:00
2026-08-13 22:48:24 -07:00
2026-08-03 22:48:37 -07:00
2026-07-27 19:04:56 -07:00
2026-06-29 22:38:29 -07:00
2026-07-17 17:18:36 -07:00
2026-07-17 17:18:36 -07:00
2026-07-12 22:40:57 -07:00
2026-05-21 01:19:49 -04:00
2026-07-28 20:51:14 -07:00
2026-08-25 02:28:08 -07:00
2026-08-26 22:30:48 -07:00
2026-08-10 14:32:08 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 22:48:24 -07:00
2026-08-13 22:48:24 -07:00
2026-08-08 17:15:43 -07:00
2026-08-13 02:56:43 -07:00
2026-08-13 02:56:43 -07:00
2026-06-10 21:14:53 -07:00
2026-08-07 10:14:37 -07:00
2026-08-09 01:32:34 -07:00
2026-07-05 19:46:49 -07:00
2026-07-25 19:31:44 -07:00
2026-07-30 21:45:44 -07:00
2026-08-13 12:38:08 -07:00
2026-08-31 14:56:15 -04:00
2026-07-20 14:50:12 -07:00
2026-08-19 22:39:48 -07:00
2026-07-25 19:31:44 -07:00
2026-07-04 22:56:55 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-06-22 16:42:20 -07:00
2026-06-22 16:42:20 -07:00
2026-08-03 16:17:00 -07:00
2026-06-22 16:42:20 -07:00
2026-06-22 16:42:20 -07:00
2026-08-27 19:40:38 -07:00
2026-08-31 08:17:40 -07:00
2026-08-11 03:07:44 -07:00
2026-08-28 00:59:21 -07:00
2026-08-13 08:58:04 -07:00
2026-08-03 02:18:05 -07:00
2026-08-29 20:15:10 -07:00
2026-08-10 17:33:46 -07:00
2026-07-12 23:50:00 -07:00
2026-08-25 15:36:51 -07:00
2026-07-24 12:05:38 -07:00
2026-08-02 20:43:27 -07:00
2026-07-11 03:20:55 -07:00
2026-08-27 19:47:15 -07:00
2026-08-28 14:16:50 -07:00
2026-07-31 00:36:09 -07:00
2026-08-27 19:40:38 -07:00
2026-08-27 19:40:38 -07:00
2026-08-25 15:36:51 -07:00
2026-08-25 15:36:51 -07:00
2026-08-16 13:45:54 -07:00
2026-08-12 22:33:19 -07:00
2026-08-26 09:50:12 -07:00
2026-07-20 18:54:44 -07:00
2026-07-20 18:54:44 -07:00
2026-08-16 13:45:54 -07:00
2026-08-24 22:46:29 -07:00
2026-08-04 17:11:18 -07:00
2026-07-10 17:27:47 -07:00
2026-07-05 21:51:32 -07:00
2026-08-17 23:28:38 -07:00
2026-06-19 17:14:55 -07:00
2026-08-10 16:11:19 -07:00
2026-05-16 11:50:26 -07:00
2026-06-25 18:36:11 -07:00
2026-08-30 19:07:01 -07:00
2026-08-10 15:52:59 -07:00
2026-08-03 21:00:57 -07:00
2026-08-14 01:47:03 -07:00
2026-06-29 22:38:29 -07:00
2026-07-20 03:04:28 -04:00
2026-05-25 15:07:40 -07:00
2026-08-08 19:06:50 -07:00
2026-07-27 20:54:02 -07:00
2026-07-14 02:58:34 -07:00
2026-07-05 21:51:32 -07:00
2026-06-20 02:03:24 -07:00
2026-06-10 21:14:53 -07:00
2026-06-19 19:43:42 -07:00
2026-08-01 23:38:46 -07:00
2026-08-30 11:45:21 -07:00
2026-08-16 01:16:11 -07:00
2026-07-10 19:50:44 -07:00
2026-08-18 23:15:32 -07:00
2026-08-17 17:12:40 -07:00
2026-08-26 19:49:26 -07:00
2026-08-30 11:45:21 -07:00
2026-08-30 11:45:21 -07:00
2026-07-12 22:40:57 -07:00
2026-08-30 01:58:32 -07:00
2026-06-09 13:52:58 -07:00
2026-08-08 19:06:50 -07:00
2026-08-09 16:06:00 -07:00
2026-08-14 01:47:03 -07:00
2026-08-30 01:58:32 -07:00
2026-07-29 16:12:20 -07:00
2026-08-30 03:12:22 -07:00
2026-08-08 19:06:50 -07:00
2026-08-30 02:23:04 -07:00
2026-08-11 00:10:40 -07:00
2026-08-14 01:47:03 -07:00
2026-08-29 14:13:35 -07:00
2026-07-19 22:54:39 -04:00
2026-08-15 00:13:27 -07:00
2026-08-30 02:23:04 -07:00
2026-08-30 03:12:22 -07:00
2026-08-14 01:47:03 -07:00
2026-06-19 17:14:55 -07:00
2026-08-11 12:27:54 -07:00
2026-08-11 18:19:43 -07:00
2026-07-30 03:05:10 -07:00
2026-07-10 17:27:47 -07:00
2026-08-08 19:06:50 -07:00
2026-08-09 18:40:01 -07:00
2026-08-13 10:26:20 -07:00
2026-08-01 00:25:35 -07:00
2026-06-20 01:27:41 -07:00
2026-06-20 01:27:41 -07:00
2026-08-16 12:49:02 -07:00
2026-08-30 11:45:21 -07:00
2026-06-27 09:30:29 -07:00
2026-08-13 23:59:18 -07:00
2026-08-15 00:54:20 -07:00
2026-07-12 22:40:57 -07:00
2026-08-15 00:54:20 -07:00
2026-07-16 13:07:44 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-31 08:17:40 -07:00
2026-07-14 00:15:34 -07:00
2026-07-29 00:47:18 -07:00
2026-08-11 18:19:43 -07:00
2026-07-15 20:28:39 -07:00
2026-06-24 20:16:14 -07:00
2026-07-17 17:18:36 -07:00
2026-07-17 17:18:36 -07:00
2026-06-20 02:03:24 -07:00
2026-07-16 13:26:15 -07:00
2026-08-24 09:38:46 -07:00
2026-06-22 16:42:20 -07:00
2026-07-10 17:27:47 -07:00
2026-07-13 00:48:51 -07:00
2026-08-05 00:51:33 -07:00
2026-06-22 16:42:20 -07:00
2026-07-17 17:18:36 -07:00
2026-07-29 00:47:18 -07:00
2026-08-24 00:01:53 -07:00
2026-07-13 14:17:49 -07:00
2026-06-23 00:23:34 -07:00
2026-07-15 20:28:39 -07:00
2026-08-27 15:25:30 -07:00
2026-08-06 20:07:55 -07:00
2026-07-22 00:22:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-08-31 16:45:36 -07:00
2026-06-19 17:14:55 -07:00
2026-08-01 03:26:30 -07:00
2026-07-10 17:27:47 -07:00
2026-08-19 14:58:00 -07:00
2026-08-03 22:48:22 -07:00
2026-08-03 22:48:22 -07:00
2026-06-23 00:23:34 -07:00
2026-07-20 03:04:28 -04:00
2026-08-11 21:16:36 -07:00
2026-07-05 21:51:32 -07:00
2026-07-05 21:51:32 -07:00
2026-06-12 16:31:24 -07:00
2026-07-16 12:38:31 -07:00
2026-07-17 16:16:17 -07:00
2026-06-22 16:42:20 -07:00
2026-07-13 21:30:10 -07:00
2026-07-20 18:54:44 -07:00
2026-08-29 14:13:26 -07:00
2026-08-29 22:37:05 -07:00
2026-08-03 01:00:58 -07:00
2026-08-18 02:12:21 -07:00
2026-08-30 11:45:21 -07:00
2026-05-15 23:52:37 -07:00
2026-06-07 17:49:01 -07:00
2026-08-17 23:28:38 -07:00
2026-06-29 22:38:29 -07:00
2026-05-17 15:43:53 -04:00
2026-08-29 22:37:05 -07:00
2026-08-22 11:00:01 -07:00
2026-08-19 22:39:48 -07:00
2026-08-09 20:25:15 -07:00
2026-08-09 21:39:24 -07:00
2026-08-19 22:39:48 -07:00
2026-08-24 18:14:12 -07:00
2026-08-30 11:45:21 -07:00
2026-08-24 10:12:38 -07:00
2026-08-30 11:45:21 -07:00
2026-08-19 22:39:48 -07:00
2026-07-13 16:15:44 -07:00
2026-07-22 15:52:42 -07:00
2026-07-31 16:15:20 -07:00
2026-06-29 22:38:29 -07:00
2026-06-18 00:11:32 -07:00
2026-07-10 03:00:51 -07:00
2026-08-13 22:48:24 -07:00
2026-08-17 23:28:38 -07:00
2026-08-01 00:40:47 -07:00