Skip to content

Release v1.2.0

Latest

Choose a tag to compare

@wu-changxing wu-changxing released this 13 Jul 01:52
7acfae8

Release v1.2.0

Highlights

co browser is now a multi-agent browser CLI: several AI agents can share one persistent, logged-in browser without stepping on each other's pages — each task in its own tab, with a contention guard that teaches a colliding agent the tab lifecycle instead of silently corrupting a page. The daemon layer was hardened against every startup/shutdown race we could find (and reproduce), and agents can now be interrupted gracefully mid-task.

What's Changed

✨ Features

  • co browser multi-agent tabs (#195): -t/--tab targeting for direct functions and do; tab open / ls / close lifecycle; per-tab ownership claims with a 120s guard window; loud exit-4 teaching errors on contention; wire-v1 JSON envelope (quote-safe caller/tab names); structured exit codes 0/1/2/3/4
  • Graceful stop (#188): a client INTERRUPT is honored at the iteration boundary via the existing stop_signal
  • Hosted-session safety + Patchright stealth (#186, #189): per-session tabs never tear down each other's context; patchright pinned to 1.61.2 with a stealth-driver integrity check
  • Outlook token rotation (#187): refresh tokens on every use and persist the rotation

🐛 Bug Fixes

  • Daemon startup race (#197): two terminals' simultaneous first commands could fork two daemons (the loser unlinked the winner's live socket — reproduced in practice). The daemon now holds a lifetime flock across probe-and-bind; a pid file distinguishes a busy daemon from a stale socket, so a long do can never be mistaken for a dead daemon
  • Ownership cleanup: releasing a tab drops its page, registration, claim, and remembered URL together — a reused tab name starts blank, never on the previous owner's page
  • A typo'd command no longer acquires a 120s tab claim; close_tab() without an argument closes the caller's own tab, never the shared main tab
  • Clients tell "daemon busy" apart from "daemon did not start", and fail fast on a dead daemon's stale socket

📚 Documentation

  • New docs/co-browser.md: quick start, tab lifecycle, contention model, exit-code contract, everyday-function examples, do guidance, visible-vs-headless, troubleshooting
  • Managed key onboarding clarified (#159)

Installation

pip install --upgrade connectonion

Breaking Changes

None.

Full Changelog: v1.1.0...v1.2.0