browser-pilot-cli
Advanced tools
| # Browser Pilot 0.3.0-rc.2 | ||
| This release candidate fixes a real-Chrome edge case found while accepting the | ||
| multi-Profile routing introduced in `0.3.0-rc.1`. | ||
| Some regular Chrome Profile tabs create a `window.open` target whose | ||
| `TargetInfo.openerId` differs from the page target used for the isolated-world | ||
| dispatch. Chrome still returns the exact per-command URL marker, Profile | ||
| context, and random window name. RC.1 correctly refused to register that target | ||
| but could leave the unregistered blank marker visible until the caller cleaned | ||
| up the reported `unknown_outcome`. | ||
| RC.2 keeps fail-closed ownership verification without relying on opener IDs | ||
| alone. A fallback-created target must be a new page with the exact random URL | ||
| marker and selected Profile context, then prove ownership through either the | ||
| expected opener ID or exact readback of the per-command random `window.name`. | ||
| Profile membership by itself is never accepted. | ||
| All marker candidates are now tracked before validation, target discovery waits | ||
| through a bounded five-second Chrome metadata window, and failure cleanup waits | ||
| for asynchronous target destruction to become observable. A target that fails | ||
| both ownership proofs is closed and never registered or adopted. | ||
| The regression suite covers both paths: a Chrome-normalized opener with a valid | ||
| window-name proof succeeds, while a mismatched opener and mismatched window name | ||
| fails closed and leaves no marker target. | ||
| Automated release gates completed before tagging: | ||
| - TypeScript type checking passed. | ||
| - 266 Node unit, protocol, process, and adapter tests passed. | ||
| - 109 isolated Playwright core, compatibility, and network tests passed. | ||
| - The black-box stdio conformance suite passed all 13 checks. | ||
| - npm distribution verification passed for global, local project, and | ||
| product-bundled executable modes. | ||
| - The npm dry-run package contains both Profile RC notes and the Profile routing | ||
| plan. | ||
| The RC.1 real-Chrome run used one authorization and verified three live Profile | ||
| contexts, cross-Profile user-tab inventory, existing-tab control in two | ||
| Profiles, and managed creation in the direct-create Profile before exposing this | ||
| fallback defect. RC.2 is accepted against the same Chrome setup after installing | ||
| the published package. |
@@ -618,3 +618,5 @@ # Browser Pilot Platform Specification | ||
| fallback-created targets enter janitor ownership before they become | ||
| addressable. | ||
| addressable. Fallback ownership requires the exact new URL marker plus either | ||
| the expected opener ID or exact readback of a per-command random window name; | ||
| Profile membership alone is never sufficient. | ||
| - **BR-33:** Switching to an existing target may update the owning Workspace's | ||
@@ -621,0 +623,0 @@ selected ProfileContext, but never prevents inventory or control of targets |
@@ -141,7 +141,9 @@ # Profile Context Routing Plan | ||
| page target in the selected context, create an isolated world, and call | ||
| `window.open("about:blank", "_blank", <fixed popup window features>)` with a | ||
| debugger user gesture. | ||
| 4. Identify exactly one new target by the pre-dispatch target set, opener ID, | ||
| Profile context, page type, and blank URL. Ambiguous or mismatched targets are | ||
| closed and the operation fails. | ||
| `window.open(<unique blank marker>, <unique window name>, <fixed popup window | ||
| features>)` with a debugger user gesture. | ||
| 4. Identify exactly one new page target by the pre-dispatch target set, unique | ||
| URL marker, and Profile context. Prove ownership through either the expected | ||
| opener ID or exact readback of the per-command random `window.name`; Chrome | ||
| may normalize the reported opener across regular Profile tabs. Ambiguous or | ||
| unverified targets are closed and the operation fails. | ||
| 5. Explicitly adopt the verified target into the janitor before registering it | ||
@@ -181,3 +183,3 @@ publicly, so Broker crash cleanup still closes it. | ||
| compatibility tests. | ||
| - [ ] P6: run real Chrome acceptance and publish `v0.3.0-rc.1`. | ||
| - [ ] P6: run real Chrome acceptance and publish `v0.3.0-rc.2`. | ||
@@ -184,0 +186,0 @@ ## Acceptance |
+2
-1
| { | ||
| "name": "browser-pilot-cli", | ||
| "version": "0.3.0-rc.1", | ||
| "version": "0.3.0-rc.2", | ||
| "description": "CLI tool to control your browser via Chrome DevTools Protocol", | ||
@@ -46,2 +46,3 @@ "repository": "https://github.com/relixiaobo/browser-pilot", | ||
| "docs/releases/v0.3.0-rc.1.md", | ||
| "docs/releases/v0.3.0-rc.2.md", | ||
| "README.md", | ||
@@ -48,0 +49,0 @@ "LICENSE" |
+1
-1
@@ -185,3 +185,3 @@ # browser-pilot | ||
| ```bash | ||
| npm install --save-exact browser-pilot-cli@0.3.0-rc.1 | ||
| npm install --save-exact browser-pilot-cli@0.3.0-rc.2 | ||
| npx --no-install browser-pilot tabs | ||
@@ -188,0 +188,0 @@ ``` |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
1032328
0.42%15
7.14%20522
0.22%