Changelog¶
The project has no tagged releases yet, so this list is grouped by commit date
from the git history on main. Commit hashes link to GitHub.
2026-10-06¶
- Proxy hardening (84248ea).
Browser.close,Browser.crash,Browser.crashGpuProcessandBrowser.setWindowBoundsare swallowed, so Puppeteer'sbrowser.close()no longer quits your browser.Target.attachToBrowserTargetis refused. A new front door on 9222 answers plain HTTP itself, soPUT /json/newworks./jsonreserves the tab it lists, a pool tab takes one page socket, and/json/closeonly closes pool tabs. Owned tabs are recorded intabs.jsonand closed on the next start.browserContextIdis honoured (Playwrightnew_contextno longer hangs) and a client's contexts are disposed when it leaves. An error in one command no longer ends the session. The stage releases its lock on failure.broker.logrotates at 5 MB and launchd's stdio files are trimmed past 10 MB.install.shpins one Python withwebsockets>=13, and the client keepalive retries instead of giving up. - brave-cdp-guard.sh (94249b0): on macOS, reopens a Brave under 90 seconds old that came up without remote debugging.
- Windows supervisor does the same for
brave.exe(2bb62b6).
2026-10-02¶
- Windows support (064cea0):
windows/install.ps1(Task Scheduler at-logon task),launch-browser.ps1andrun-broker.ps1. Verified on Windows 11, Brave (Chromium 154), Python 3.14. - Stage: one tab per agent (b06d599).
The stage used one shared tab, so each agent's
showclosed the page another agent had just shown. Each owner now has its own stage tab.
2026-09-27¶
- README rewrite: plain summary, "What I built", and fixes where the text disagreed
with
proxy.py(b8be446).
2026-09-20¶
- The stage (01d16b9):
POST /show,POST /unstage,GET /stage, thebb-showcommand and the example Claude Code hook. Verified with three concurrent callers: A shown at 0.7 s, B refused with409at 0.0 s, C queued and shown at 7.9 s. - Hidden tabs don't paint (5fb3028).
Corrected the docs: the backgrounding flags keep timers running but
requestAnimationFramenever fires in a hidden tab. Found by @Hronom in issue #1. - Credited Hronom in CREDITS.md (6b1d340).
2026-09-19¶
- README: Linux verified for the browser-level CDP path, with what the test did not cover (84d10b2).
2026-09-08¶
broker.pyalso switched to background tabs; the off-screen window code was removed everywhere. README now opens on the tab collision. Added the one-line installerget.sh(851962e).
2026-09-07¶
- Agent tabs are ordinary background tabs (36d57cc).
The off-screen window at x=-4200 was dropped from
proxy.pybecause the extra window pushed the human's window aside. Isolation never depended on the window.
2026-09-05¶
- First commit (821fe6d):
broker.pylease broker,broker_client.py, macOS launcher and LaunchAgent. - proxy.py (26d4c6a): the transparent CDP endpoint on 9222, with the browser moved to 9229. Verified with Playwright (three pages including Gmail and LinkedIn logged in), a raw first-page client on Yahoo, two concurrent clients, and REST leases.
- Each hidden tab briefly got its own off-screen window (ec7216a); reverted two days later.
- README additions: Windows/Linux note, the local-first stack, prior art.