Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
c86ae33
chore(workspace-browser-tab): add IMPLEMENT-SPEC-PROMPT to public source
Fectivnfy112357 Oct 21, 2026
d2b2574
docs(webui): measure the tab model's two-page case against a real bro…
Fectivnfy112357 Oct 21, 2026
f0519e7
feat(webui): the isolated Chromium holds one page per web tab
Fectivnfy112357 Oct 21, 2026
bf4b12a
feat(webui): open_tab answers with the identity of the page it created
Fectivnfy112357 Oct 21, 2026
8c50962
feat(webui): the runtime owns the session's web tabs and publishes them
Fectivnfy112357 Oct 21, 2026
12977ab
feat(webui): the image stream is keyed by the target, not by the run
Fectivnfy112357 Oct 21, 2026
525bb8a
feat(webui): a session's pages are released when the session ends
Fectivnfy112357 Oct 21, 2026
a59ad38
feat(webui): the Agent opens tabs, and a run with no selection is not…
Fectivnfy112357 Oct 21, 2026
29945e4
feat(webui): a tab is a stable id and the content it is showing
Fectivnfy112357 Oct 21, 2026
8de2b14
feat(webui): the strip renders web tabs
Fectivnfy112357 Oct 21, 2026
2486d5a
feat(webui): the new tab page
Fectivnfy112357 Oct 21, 2026
f7f2aa9
feat(webui): a web tab carries a toolbar
Fectivnfy112357 Oct 21, 2026
e3c158b
feat(webui): the run's selection and the person's tab are two cells
Fectivnfy112357 Oct 21, 2026
6027cf2
test(webui): the acceptance of the workspace browser tab model
Fectivnfy112357 Oct 21, 2026
456f814
fix(webui): the review's five findings, and the file cache's key
Fectivnfy112357 Oct 21, 2026
0cc664a
docs(webui): the plan records that the slice is delivered
Fectivnfy112357 Oct 21, 2026
341dde4
docs(webui): the external review, and what closed its findings
Fectivnfy112357 Oct 21, 2026
5d15467
chore(workspace-browser-tab): record the review in the public source
Fectivnfy112357 Oct 21, 2026
42b594d
docs(webui): the gate, and what it was run against
Fectivnfy112357 Oct 21, 2026
782c137
fix(webui): a selection follows the page it names, and a cleanup retries
Fectivnfy112357 Oct 21, 2026
4d247f4
docs(webui): the gate record says what the last two runs found
Fectivnfy112357 Oct 21, 2026
4e7efd4
docs(webui): the gate record says what the CI says, and what it does not
Fectivnfy112357 Oct 21, 2026
acbf1b4
docs(webui): the gate record names the commit the gate was run at
Fectivnfy112357 Oct 21, 2026
983f3ab
docs(webui): the gate record says what the CI said on the delivered c…
Fectivnfy112357 Oct 21, 2026
fe4d76d
docs(webui): the gate record names the base branch's CI precisely
Fectivnfy112357 Oct 21, 2026
01cf578
docs(webui): the gate record names the mechanism of the ubuntu failure
Fectivnfy112357 Oct 21, 2026
12afcf4
docs(webui): the gate record says what the CI said at the tip, and wh…
Fectivnfy112357 Oct 21, 2026
9d945e5
test(webui): the external-bridge harness names the step that stops
Fectivnfy112357 Oct 21, 2026
a4f8f7c
test(webui): the external-bridge cleanup stops the browser before the…
Fectivnfy112357 Oct 21, 2026
54db73a
docs(webui): the gate record says where the six external-bridge cases…
Fectivnfy112357 Oct 21, 2026
3d3b784
docs(webui): the gate record says the ubuntu job is green at last
Fectivnfy112357 Oct 21, 2026
4a0a5d9
docs(webui): the review findings say the path is reachable, because i…
Fectivnfy112357 Oct 21, 2026
9ac6762
test(webui): a browser's profile directory is removed with a retry
Fectivnfy112357 Oct 21, 2026
b495a4d
docs(webui): the gate record carries the second ENOTEMPTY and the run…
Fectivnfy112357 Oct 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .plan/browser-use/complete/isolated-chromium.acceptance.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
},
"observed": "a pointer click and a text input both arrived in the page the provider was driving",
"result": "pass",
"at": "2026-10-21T11:54:23.014Z",
"at": "2026-10-21T20:11:49.442Z",
"os": "linux 7.0.0-38-generic",
"suite": "isolated-chromium"
},
Expand All @@ -37,7 +37,7 @@
},
"observed": "the stale identity was refused with browser_target_stale and the page that replaced it received nothing",
"result": "pass",
"at": "2026-10-21T11:54:24.551Z",
"at": "2026-10-21T20:11:50.962Z",
"os": "linux 7.0.0-38-generic",
"suite": "isolated-chromium"
}
Expand Down
20 changes: 10 additions & 10 deletions .plan/browser-use/complete/real-browser.acceptance.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the handshake completed and the host reported the surface connected",
"result": "pass",
"at": "2026-10-21T11:45:49.589Z",
"at": "2026-10-21T19:27:12.077Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-browser"
},
Expand All @@ -36,12 +36,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": false
},
"observed": "the host refused the extension and reported no connected surface",
"result": "pass",
"at": "2026-10-21T11:45:49.934Z",
"at": "2026-10-21T19:27:12.388Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-browser"
},
Expand All @@ -59,12 +59,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the handshake completed and the host reported the surface connected",
"result": "pass",
"at": "2026-10-21T11:45:50.315Z",
"at": "2026-10-21T19:27:12.712Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-browser"
},
Expand All @@ -82,12 +82,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": false
},
"observed": "the host refused the extension and reported no connected surface",
"result": "pass",
"at": "2026-10-21T11:45:50.734Z",
"at": "2026-10-21T19:27:13.062Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-browser"
},
Expand All @@ -105,12 +105,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development, on both surfaces",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "both browsers were connected, each on its own surface, and each surface's provider belonged to that surface",
"result": "pass",
"at": "2026-10-21T11:45:51.751Z",
"at": "2026-10-21T19:27:13.921Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-browser"
}
Expand Down
24 changes: 12 additions & 12 deletions .plan/browser-use/complete/real-external.acceptance.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the host noticed the terminated worker, the surface went down and came back, and a command against the live tab answered again",
"result": "pass",
"at": "2026-10-21T11:45:53.073Z",
"at": "2026-10-21T19:27:15.162Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
},
Expand All @@ -36,12 +36,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the text the host sent appeared in the page's field, and a non-empty image frame for that page arrived at the host",
"result": "pass",
"at": "2026-10-21T11:45:53.694Z",
"at": "2026-10-21T19:27:15.714Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
},
Expand All @@ -59,12 +59,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the command in the allowed subset answered with the page's title, and a command outside it was refused as unsupported",
"result": "pass",
"at": "2026-10-21T11:45:54.021Z",
"at": "2026-10-21T19:27:16.023Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
},
Expand All @@ -82,12 +82,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the host noticed the terminated worker, the surface went down and came back, and a command against the live tab answered again",
"result": "pass",
"at": "2026-10-21T11:45:55.053Z",
"at": "2026-10-21T19:27:16.993Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
},
Expand All @@ -105,12 +105,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the text the host sent appeared in the page's field, and a non-empty image frame for that page arrived at the host",
"result": "pass",
"at": "2026-10-21T11:45:55.726Z",
"at": "2026-10-21T19:27:18.015Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
},
Expand All @@ -128,12 +128,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "development",
"extensionId": "dejpmdkbdhkjjhkjkodimegojblnglde",
"extensionId": "njihcobnpalklclcjdhfnlcdonhhiddm",
"installationKeyProved": true
},
"observed": "the command in the allowed subset answered with the page's title, and a command outside it was refused as unsupported",
"result": "pass",
"at": "2026-10-21T11:45:56.175Z",
"at": "2026-10-21T19:27:18.417Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-external"
}
Expand Down
36 changes: 18 additions & 18 deletions .plan/browser-use/complete/real-packaged.acceptance.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
"surface": "chrome",
"build": "store",
"allowlist": "store",
"extensionId": "ejnneljbcbiapcamdfmgfkaappehipac",
"extensionId": "klfboeijbpnckbjcbjanlheebbhgmpbl",
"installationKeyProved": true
},
"observed": "the browser assigned the extension the id the public key determines (ejnneljbcbiapcamdfmgfkaappehipac)",
"observed": "the browser assigned the extension the id the public key determines (klfboeijbpnckbjcbjanlheebbhgmpbl)",
"result": "pass",
"at": "2026-10-21T11:45:57.026Z",
"at": "2026-10-21T19:27:19.196Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -28,12 +28,12 @@
"surface": "chrome",
"build": "store",
"allowlist": "store",
"extensionId": "ejnneljbcbiapcamdfmgfkaappehipac",
"extensionId": "klfboeijbpnckbjcbjanlheebbhgmpbl",
"installationKeyProved": true
},
"observed": "the packaged manifest carries the store's public key and differs from the development manifest in nothing else",
"result": "pass",
"at": "2026-10-21T11:45:57.028Z",
"at": "2026-10-21T19:27:19.197Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -51,12 +51,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "store",
"build": "store",
"extensionId": "ejnneljbcbiapcamdfmgfkaappehipac",
"extensionId": "klfboeijbpnckbjcbjanlheebbhgmpbl",
"installationKeyProved": true
},
"observed": "the packaged host completed the handshake and reported the surface connected",
"result": "pass",
"at": "2026-10-21T11:45:57.107Z",
"at": "2026-10-21T19:27:19.283Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -74,12 +74,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "store",
"extensionId": "ejnneljbcbiapcamdfmgfkaappehipac",
"extensionId": "klfboeijbpnckbjcbjanlheebbhgmpbl",
"installationKeyProved": true
},
"observed": "the packaged host refused the extension and reported no connected surface",
"result": "pass",
"at": "2026-10-21T11:45:57.153Z",
"at": "2026-10-21T19:27:19.330Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -93,12 +93,12 @@
"surface": "edge",
"build": "store",
"allowlist": "store",
"extensionId": "gaflfamaoomjenkedomchkimnkabfkmo",
"extensionId": "edppplbagledhnfaipdcjbfefdbaoddg",
"installationKeyProved": true
},
"observed": "the browser assigned the extension the id the public key determines (gaflfamaoomjenkedomchkimnkabfkmo)",
"observed": "the browser assigned the extension the id the public key determines (edppplbagledhnfaipdcjbfefdbaoddg)",
"result": "pass",
"at": "2026-10-21T11:45:57.930Z",
"at": "2026-10-21T19:27:20.035Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -112,12 +112,12 @@
"surface": "edge",
"build": "store",
"allowlist": "store",
"extensionId": "gaflfamaoomjenkedomchkimnkabfkmo",
"extensionId": "edppplbagledhnfaipdcjbfefdbaoddg",
"installationKeyProved": true
},
"observed": "the packaged manifest carries the store's public key and differs from the development manifest in nothing else",
"result": "pass",
"at": "2026-10-21T11:45:57.931Z",
"at": "2026-10-21T19:27:20.036Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -135,12 +135,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "store",
"build": "store",
"extensionId": "gaflfamaoomjenkedomchkimnkabfkmo",
"extensionId": "edppplbagledhnfaipdcjbfefdbaoddg",
"installationKeyProved": true
},
"observed": "the packaged host completed the handshake and reported the surface connected",
"result": "pass",
"at": "2026-10-21T11:45:58.024Z",
"at": "2026-10-21T19:27:20.106Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
},
Expand All @@ -158,12 +158,12 @@
"fullCdp": "enforced in the runtime service, not in the bridge",
"allowlist": "development",
"build": "store",
"extensionId": "gaflfamaoomjenkedomchkimnkabfkmo",
"extensionId": "edppplbagledhnfaipdcjbfefdbaoddg",
"installationKeyProved": true
},
"observed": "the packaged host refused the extension and reported no connected surface",
"result": "pass",
"at": "2026-10-21T11:45:58.097Z",
"at": "2026-10-21T19:27:20.158Z",
"os": "linux 7.0.0-38-generic",
"suite": "real-packaged"
}
Expand Down
5 changes: 3 additions & 2 deletions .plan/workspace-browser-tab/complete/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
This directory is where the workspace browser tab model's **completion evidence** will live: the
records the suites write while they run, and the completion note.

The plan is [`../workspace-browser-tab-plan.md`](../workspace-browser-tab-plan.md). There is no
execution board for this programme yet, and none of the work has started.
The plan is [`../workspace-browser-tab-plan.md`](../workspace-browser-tab-plan.md). The execution board is
[`../board/`](../board/), and the work has started.

## What belongs here

| File | Written by | What it holds |
| --- | --- | --- |
| `<suite>.acceptance.json` | the Playwright suites, through `packages/webui/test/browser/acceptance-record.ts` | one record per case: what was set up, what was observed, and what the person saw |
| `*.evidence.json` | a probe run by hand | what a real isolated Chromium did, on the machine named in the record |
| `two-page-spike.json` | the issue #200 spike, run by hand against a real isolated Chromium | what the browser can do with two pages at once, and what the repository's provider does today — the matrix in `packages/webui/docs/browser-use/01-capability-matrix.md` is written from it |

The published acceptance record for this work is
`packages/webui/docs/browser-use/09-acceptance-record.md`, and the decision record is
Expand Down
Loading
Loading