Releases: 2heal1/agent-browser
Releases · 2heal1/agent-browser
Release list
v0.34.0
New Features
- Added persistent session-to-tab binding for shared Chrome sessions. Named sessions connected through
--cdpor--auto-connectnow remember their CDP target across commands and daemon restarts, and CDP target ids can be used directly as tab references. Start each session with--pin-tabto make the binding strict, so a tab closed externally returns a stabletab_goneerror instead of silently adopting a neighboring tab. JSON output includesdata.targetIdand an optional sanitizeddata.lastUrl; batch exposes the same recovery data underresult(vercel-labs#1589)
Improvements
- Added a Remote Agent Browser provider guide covering Vercel authentication, disposable and stable sessions, custom VCR images, snapshots, and live-view URLs (vercel-labs#1648)
Bug Fixes
- Fixed parallel sessions sharing one Chrome hijacking each other's tabs. Event-discovered targets no longer steal a pinned session's active tab, re-attach restores the persisted target instead of selecting index 0, and preliminary plus existing-daemon
--cdpand--auto-connectpaths preserve explicit pin enable and disable. Agent skill guidance now requires a named--sessionbefore the first command (vercel-labs#1589) - Fixed
agent-browser doctorhanging on Chrome version detection. Windows reads the version from the executable resource table without spawning Chrome; other platforms bound the version subprocess with a deadline, kill, and reap so inherited output handles cannot block forever or leave an orphan browser (vercel-labs#1641)
Contributors
v0.33.2
New Features
- Added input priority and per-client delivery settings to the stream server: each WebSocket connection now splits into a reader task and a writer loop, so clicks and keystrokes dispatch to the browser without queueing behind a frame write. Adds a per-client
{"type":"config","maxFps":N}cap (1 to 120,0uncapped) and opt-in ack pacing via{"type":"config","pacing":"ack"}with{"type":"ack","seq":N}, which keeps one frame in flight so a stalled client never drains a backlog. Both settings can also be declared on the connection URL (?pacing=ack&maxFps=10), the only way to cover the opening frame. Every frame now carries a monotonicseq(vercel-labs#1594) - Added configurable stream encoding: frames were hardcoded to jpeg quality 80 at the session viewport, so frame rate was the only bandwidth lever.
AGENT_BROWSER_STREAM_QUALITY,AGENT_BROWSER_STREAM_MAX_WIDTHandAGENT_BROWSER_STREAM_MAX_HEIGHTare read once per daemon and cut bytes without dropping frames: on a busy page at 1280x720, quality 20 takes a frame from 54 KB to 25 KB, and quality 20 at 640x360 takes it to 9 KB, frame rate unchanged in both. Width and height default to the session viewport, so a larger viewport is never downscaled unless both are set (vercel-labs#1626)
Behavior Changes
- Frame delivery is now latest-wins. The stream server holds only the newest frame and reads it at send time, so frames produced while an earlier one is still being written are skipped. A client that assumed it received every frame from the WebSocket now receives fewer. Nothing in this repo consumes the stream that way, since
recordcaptures through CDP and the dashboard is a viewer, so this affects external consumers only (vercel-labs#1594) metadata.timestampnow carries a real value. It was always 0, because CDP sends the capture time as a float in seconds and the code read it as an integer. It is now epoch milliseconds, so a client can measure how stale the frame it is drawing is. A client that treated 0 as unknown is unaffected (vercel-labs#1594)
Bug Fixes
- Fixed keyboard input over the stream, which worked in none of the three shapes the docs publish: an absent
key,code, ortextreached CDP as an explicit null, which rejects the whole command, so every key release and every non-printable key was silently dropped, the dashboard's own payloads included (vercel-labs#1594) - Fixed click latency behind mouse movement: input dispatch awaited Chrome's reply before reading the next message, so a click sat one round trip behind every queued mouse move. After a 300-event sweep a click landed 2471ms late; it now lands in 6ms (vercel-labs#1627)
- Fixed
stream disablereturning while a slow client's input reader was still running (vercel-labs#1594)