chore: refresh TypeScript CDP and retire hidden surfaces#2014
Conversation
|
Claude (@claude) review |
|
Greptile (@greptileai) review |
|
Claude finished Nikhil (@shadowfax92)'s task in 2m 51s —— View job Claude's ReviewI reviewed the diff against Tasks
OverallThis is a clean, well-scoped refactor. The projection pattern in Findings
Test coverageThe new/updated tests ( Note on verificationI was not able to execute |
Greptile SummaryRefreshes the generated TypeScript CDP contract and removes hidden tab/window surfaces.
Confidence Score: 5/5The PR appears safe to merge, with no concrete changed-code defect identified. The generated protocol refresh, owned page-state projection, scheduled background-page lifecycle, and reduced MCP schemas are coordinated across implementation and contract tests without an established broken caller or runtime invariant. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Chromium["Combined Chromium CDP protocol"] --> Generator["Validated deterministic generator"]
Generator --> CDP["@browseros/cdp-protocol"]
CDP --> Core["browser-core projection"]
Core --> PageInfo["Owned PageInfo without compatibility-only fields"]
PageInfo --> MCP["browser-mcp structured results"]
Server["Scheduled task"] --> Background["Managed background page"]
Background --> Core
Reviews (1): Last reviewed commit: "chore: merge latest main" | Re-trigger Greptile |
Greptile SummaryRefreshes the generated TypeScript CDP contract and removes hidden browser surfaces.
Confidence Score: 5/5The PR appears safe to merge, with no concrete blocking or independently actionable issues identified in the changed behavior. The generated protocol exports remain coordinated, BrowserOS-owned page state explicitly excludes compatibility-only fields, and hidden-surface removal is consistently propagated through core, server, MCP contracts, prompts, and tests. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Chromium["Chromium combined CDP protocol"] --> Generator["Validated deterministic generator"]
Generator --> Wire["@browseros/cdp-protocol<br/>complete wire contract"]
Wire --> Projection["browser-core TabInfo projection"]
Projection --> PageInfo["BrowserOS PageInfo<br/>hidden compatibility fields omitted"]
PageInfo --> MCP["Browser MCP structured results"]
Scheduler["Scheduled task"] --> Background["Managed background page"]
Background --> Projection
Reviews (2): Last reviewed commit: "chore: merge latest main" | Re-trigger Greptile |
✅ Tests passed — 1694/1698
|
* chore(deps): bump golang.org/x/crypto to v0.52.0 in apps/cli (#1994) Refresh go.sum and the x/sys transitive dependency. * chore(deps): bump the uv group across 1 directory with 5 updates (#1995) Bumps the uv group with 5 updates in the /packages/browseros directory: | Package | From | To | | --- | --- | --- | | [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.0` | | [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` | | [cryptography](https://github.com/pyca/cryptography) | `46.0.3` | `48.0.1` | | [idna](https://github.com/kjd/idna) | `3.11` | `3.15` | | [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.7.0` | Updates `requests` from 2.32.5 to 2.33.0 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.5...v2.33.0) Updates `python-dotenv` from 1.2.1 to 1.2.2 - [Release notes](https://github.com/theskumar/python-dotenv/releases) - [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md) - [Commits](theskumar/python-dotenv@v1.2.1...v1.2.2) Updates `cryptography` from 46.0.3 to 48.0.1 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](pyca/cryptography@46.0.3...48.0.1) Updates `idna` from 3.11 to 3.15 - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md) - [Commits](kjd/idna@v3.11...v3.15) Updates `urllib3` from 2.5.0 to 2.7.0 - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](urllib3/urllib3@2.5.0...2.7.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: direct:production dependency-group: uv - dependency-name: python-dotenv dependency-version: 1.2.2 dependency-type: direct:production dependency-group: uv - dependency-name: cryptography dependency-version: 48.0.1 dependency-type: direct:production dependency-group: uv - dependency-name: idna dependency-version: '3.15' dependency-type: indirect dependency-group: uv - dependency-name: urllib3 dependency-version: 2.7.0 dependency-type: indirect dependency-group: uv ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): pin transitive dependency resolutions in browseros-agent (#1997) Refresh a batch of pinned transitive resolutions to their current patch releases via overrides and update bun.lock. * Revert "fix(claw-app): scale Audit tab navigation (#1987)" (#1998) This reverts commit ee46ec4. * feat(claw): rewrite BrowserClaw harness skill (#1999) Frontmatter description now carries the standing instruction — default to BrowserClaw for browser work unprompted, over in-app browser surfaces — and the body becomes a compact operating manual: session etiquette, task-owned tabs, the snapshot -> act -> verify loop, read/grep and tool escalation, failure handling, and the untrusted-page-content rule. Validation test probes and line budget updated to match. * fix(agent): reconcile aliased skill targets by identity (#2001) * fix(agent): reconcile aliased skill targets by identity * fix(claw): use app resources in local launchers * test(claw): assert physical skill manifest paths * fix: address review findings for browserclaw-skill-target-identity * feat(claw): show total tokens consumed on Audit surfaces (#2000) * feat(claw): show total tokens consumed on Audit surfaces Materialize per-session token estimates (input+output, summed across dispatches) onto the tasks table via recompute_task, so the total is available live and not only from the post-teardown efficiency projection. Expose it through the canonical OpenAPI path as an optional SessionSummary tokenUsage field, present only when the session has dispatches and every one carries token-estimator v1 (legacy/unmeasured sessions omit it). Both Audit surfaces render it from the one shared field: a compact Tokens column on the session list (exact count on hover, em dash when unmeasured) and a Tokens entry on the session-detail summary card. * fix(claw): sort unmeasured token totals last in both directions The Tokens-column accessor mapped unmeasured sessions to 0, which only sank them on a descending sort — an ascending sort surfaced them ahead of every measured session. Return undefined and use tanstack's sortUndefined:'last' so unmeasured rows stay at the bottom either way. * fix(claw): hide tokens in audit list (#2002) * fix(claw): ground screenshot token baseline (#2003) * fix(claw): ground screenshot token baseline * test(claw): update cockpit efficiency expectation * test(claw): preserve signed savings coverage * feat(claw): move audit observation off the tool path (#2005) * refactor(claw): separate tool observers from effects * feat(claw): queue audit observations in bounded worker * fix(claw): flush coalesced audit previews on session close * test(claw): verify async audit shutdown lifecycle * fix: address review findings for 260723-1154_async_audit_observer * fix(claw): sum tool durations for human time saved (#2004) * fix(claw): sum tool durations for time saved * fix(claw): preserve retained efficiency history * fix(claw): guard efficiency backfill from session reuse * fix(claw): stop cockpit saved-stats labels from overlapping (#2006) Both the "used" and "screenshot-first" token labels were absolutely positioned inside the same overflow-hidden budget track. Around the mid-range their text occupied the same pixels and painted through each other (e.g. "used 63.2K" over "112.3K"). Lift both numbers into a legend row above the bar — a flex justify-between row that wraps to two lines before the labels could ever meet — and keep the track as a pure gauge: accent fill = what BrowserClaw used, striped remainder = what a screenshot-first agent would have spent. The bar carries no text now, so nothing can collide or clip at any used/total ratio or label length. Accessibility, reduced-motion (the pulsing dot keeps motion-reduce), theme tokens, and the stats/API contract are unchanged. Tests assert the structural invariant (no labels inside the bounded bar) across low, mid, and full ratios, and the fill width replaces the old marker-position assertions. * refactor(patches): retire hidden window implementation (#2007) * refactor(patches): retire hidden window implementation * fix(patches): preserve single-close window teardown * chore: sync internal-docs submodule (#2008) Co-authored-by: browseros-bot <bot@browseros.ai> * chore: sync internal-docs submodule (#2009) Co-authored-by: browseros-bot <bot@browseros.ai> * fix(claw): use session duration for human time saved (#2010) * fix(claw): use session duration for saved time * fix(claw): backfill saved time from task durations * perf(core): acquire snapshots concurrently (#2011) * perf(core): batch cursor backend-node resolution * refactor(core): separate snapshot frame acquisition * perf(core): acquire snapshot sibling frames concurrently * perf(core): trace concurrent snapshot capture * fix: address review findings for snapshot-concurrent-acquisition * fix: address review findings for snapshot-concurrent-acquisition * fix: address review findings for snapshot-concurrent-acquisition * fix: suppress intentional cursor asset expression * fix(core): clear frame sessions after reconnect * fix(core): address snapshot PR review notes * feat(claw-app): default replays to 2x (#2015) * chore: refresh TypeScript CDP and retire hidden surfaces (#2014) * chore(cdp): refresh TypeScript protocol definitions * refactor(server): use background pages for scheduled tasks * refactor(browser-core): retire hidden page and window behavior * refactor(browser-mcp): remove hidden tab and window controls * test: repair TypeScript verification baselines * test(claw-app): prepare WXT aliases before tests * fix(claw): exclude red from automatic tab-group colors (#2016) * fix(claw): exclude red from automatic tab groups * test(claw): update automatic tab color fixture * test(claw): cover snapshot concurrency contracts (#2017) * test(claw): add snapshot concurrency fixtures * test(claw): cover live cursor snapshot acquisition * test(claw): cover concurrent iframe snapshot contracts * test(claw): stress overlapping snapshot contracts * fix: address review findings for snapshot-concurrency-contract-tests * fix: address review findings for snapshot-concurrency-contract-tests * refactor: refresh Rust CDP and retire hidden windows (#2013) * chore(cdp): sync Rust protocol from Chromium * refactor(core): retire hidden window state * refactor(mcp): remove hidden window controls * refactor(server): drop hidden window runtime references * test(core): align getProperties fixtures with protocol * test(mcp): retire hidden conformance cases * chore(release): build v0.48.3 [skip ci] Automated nightly macOS version bump. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nikhil <nikhilsv92@gmail.com> Co-authored-by: browseros-bot <bot@browseros.ai> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Summary
@browseros/cdp-protocolfrom the exact 58-domain combined Chromium protocol, with validated input provenance and deterministic formattingDesign
The generated CDP package remains the complete mixed-version wire contract. Browser core now explicitly projects generated
TabInfointo the narrower ownedPageInfo, so compatibility fields cannot leak into application or MCP payloads. Scheduled runs use managed background pages, while normal/background and explicit-window creation semantics remain intact.Test plan
CDP_PROTOCOL_JSON=/Users/shadowfax/code/chromium-checkouts/chromium-1/src/out/Default_arm64/gen/third_party/blink/public/devtools_protocol/protocol.json bun run gen:cdpbun run checkbun run testbun run test:maingit diff --check