feat(claw-app): default audit replay to 2x#2015
Conversation
|
Greptile (@greptileai) review |
|
Claude (@claude) review |
|
Claude finished Nikhil (@shadowfax92)'s task in 1m 37s —— View job Review
Scope: Findings:
Not verified: I wasn't able to execute No correctness, security, or style issues found. LGTM. |
Greptile SummaryThe PR changes Audit Replay’s initial playback speed from 1× to 2× while retaining the existing 1×, 2×, and 4× controls, and adds a focused transport test covering the default selection and manual changes. Confidence Score: 5/5The PR appears safe to merge with no actionable defects identified. The new default is consistently exposed through usePlayback, the existing speed options remain selectable, and no changed path introduces a concrete playback, build, or test failure. Important Files Changed
Reviews (1): Last reviewed commit: "feat(claw-app): default replays to 2x" | Re-trigger Greptile |
Greptile SummaryUpdates Audit Replay to begin playback at 2× by default.
Confidence Score: 5/5The PR appears safe to merge with no actionable defects identified. The new default flows through the existing playback-speed synchronization path, all supported controls remain selectable, and the focused test follows the repository’s established isolated DOM-test pattern. Important Files Changed
Reviews (2): Last reviewed commit: "feat(claw-app): default replays to 2x" | Re-trigger Greptile |
✅ Tests passed — 1695/1699
|
* 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
Design
The replay transport now names 2× as its default alongside the supported speed list, and
usePlaybackinitializes from that default. The existing controlled toggle group and rrweb speed synchronization remain unchanged.Test plan
bun test apps/claw-app/screens/replay/PlaybackTransport.test.tsxbun run testfromapps/claw-appbun run --filter @browseros/claw-app typecheckBaseline notes
bun run checkstill reports the two existingnoUnsafeOptionalChainingerrors inapps/server/tests/lib/agents/acpx-runtime.test.ts; that file is identical toorigin/main.bun run teststill reports the existing stalesetup-uv@v8.2.0assertion inscripts/release/release-claw-server-rust-workflow.test.ts; that file is identical toorigin/main.