The circuit breaker and agent error handler were using a hardcoded 20s
timeout, but the worst-case auto-reconnect window is ~48s (3 attempts *
15s + 7s delays). Handlers would raise ConnectionError while reconnection
was still in progress. Now both use BrowserSession.RECONNECT_WAIT_TIMEOUT
(54s) derived from the actual reconnect parameters.
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Fixes radio button clicks when a label overlaps the input by updating
the occlusion check to recognize label↔input associations. Adds
CI-friendly deterministic tests for sibling, wrapped, custom-styled
radios, and group switching; removes the flaky HTML fixture and the old
agent-based test. Addresses the radio button interaction issue noted in
Linear.
- **Bug Fixes**
- Treat label-input associations as clickable in the occlusion check:
label[for]→input, label wrapping input, and label↔input hit cases.
- Ensure clicks work when labels occlude inputs, including
CSS-customized radios; tests now use Tools.click with CDP assertions,
cover group switching, and drop the flaky HTML fixture.
<sup>Written for commit de8039288d.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Make navigation resilient on slow or heavy pages and redirect chains.
Respects wait_until, adds a 20s guard on Page.navigate to prevent hangs,
and bumps NavigateToUrlEvent timeout to 30s.
- **Bug Fixes**
- _navigate_and_wait accepts wait_until ('commit', 'domcontentloaded',
'load', 'networkidle') and returns on that signal.
- Wrapped Page.navigate with a 20s timeout; raises RuntimeError on
timeout.
- Increased NavigateToUrlEvent default timeout from 15s to 30s.
- Added CI tests for slow servers, redirect chains, DOMContentLoaded
acceptance, recovery after slow nav, and timeout correctness.
- **Dependencies**
- Set pre-commit default Python to 3.11.
- Lint workflow pins Python 3.11 and syncs with --python 3.11.
<sup>Written for commit 6c984ad02b.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
- Introduced type aliases for captcha results to improve clarity and maintainability.
- Updated event handler signatures to use specific event types from the CDP module.
- Ensured consistent typing for captcha result attributes within the CaptchaWaitResult class.
- Added assertion for timeout handling in the captcha waiting logic.
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Upgraded Laminar (lmnr) to 0.7.42 in eval and dev environments to pick
up recent fixes and improvements. This keeps our tooling and evaluation
stack aligned on the same version.
- **Dependencies**
- pyproject.toml: bump lmnr[all] from 0.7.17 to 0.7.42 in eval and
dev-dependencies.
<sup>Written for commit e3d63c0e13.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
## Summary
- update telemetry runtime log message to the canonical monitoring
telemetry docs URL
- add Terms of Service and Privacy Policy links on the telemetry docs
page
- expose Homepage, Documentation, Telemetry, Terms of Service, and
Privacy Policy under `project.urls` for PyPI
- add a short legal-links notice in the README (used as PyPI long
description)
## Why
- make telemetry/legal references easier to find from logs, docs, and
PyPI
- align package-facing surfaces with legal-link guidance from counsel
## Testing
- pre-commit hooks pass on commit
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Add ToS/Privacy links to the telemetry docs and simplify the README
legal FAQ to a generic services data policy; update the telemetry
startup log to the canonical monitoring docs URL.
Expose Homepage, Docs, Telemetry, ToS, and Privacy links in PyPI
project.urls and bump version to 0.11.12.
<sup>Written for commit afd17cf318.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Low Risk**
> Documentation/metadata-only changes plus a log-message URL update; no
runtime behavior or data handling changes.
>
> **Overview**
> Updates public-facing references for telemetry and legal policies. The
telemetry startup log now points to the canonical docs URL, the
telemetry docs add a **Legal** section linking Terms of Service and
Privacy Policy, and the README FAQ adds a ToS blurb for the hosted
services.
>
> Also bumps the package version to `0.11.12` and expands
`pyproject.toml` `project.urls` (Homepage/Docs/Telemetry/ToS/Privacy) so
these links show up in PyPI metadata.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
cf1b003ba0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Removed the lightweight “simple judge” that auto-validated agent success
to simplify the flow and reduce LLM calls. The agent now relies only on
the full judge when enabled, with no automatic success overrides.
- **Refactors**
- Removed construct_simple_judge_messages, SimpleJudgeResult, and
_run_simple_judge.
- Deleted simple judge imports and calls from service (including
take_step/_execute_step); full judge path remains unchanged.
- Cleaned unused imports and fixed ruff formatting in modified files.
- **Migration**
- Remove any imports/usages of SimpleJudgeResult or simple judge
messages/hooks and use the full judge or custom validation instead.
- Outputs will no longer include “[Simple judge: …]” notes in
extracted_content or metadata.
<sup>Written for commit 2c878aa75c.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
- Combined environment setup and package install into step 1
- Chromium install moved to comment in step 1
- Made API key step optional with alternative providers as comments
- Updated to claude-sonnet-4-6 (latest Anthropic model)
- Simplified agent code: no Browser wrapper, no history return
- Moved Template Quickstart and CLI sections below Demos
- No pip install extras needed - LLM providers are core dependencies
Co-authored-by: Magnus Müller <MagMueller@users.noreply.github.com>
- auto-detects chrome executable and user data dir on
macos/windows/linux
- auto-selects first available profile if none specified
- added Browser.list_chrome_profiles() to see available profiles
- updated examples to prompt user for profile selection
- fixed missing browser.stop() in save_cookies.py
- overview in docs of auth methods
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Added Browser.from_system_chrome() to auto-detect Chrome and user data
dirs across macOS, Windows, and Linux for easy real-browser setup. Added
a new Authentication guide (real browser, storage state, TOTP/email/SMS
2FA), refreshed real-browser and parameters docs, updated examples to
prompt for profile selection, and fixed save_cookies.py to stop the
browser after export.
- **New Features**
- Browser.from_system_chrome(): detects Chrome paths; supports
profile_directory; auto-selects the first available profile when none is
provided.
- Browser.list_chrome_profiles(): returns available profiles with
directory and name.
<sup>Written for commit 2249e75fd8.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Improved CDP connectivity handling to prevent hangs and flaky behavior
when the WebSocket drops. Adds connection-state checks, safer startup
with timeout and cleanup, and smarter tab recovery.
- **Bug Fixes**
- Added is_cdp_connected to detect a live CDP WebSocket.
- Wrapped connect() in a 15s timeout during BrowserStartEvent with
cleanup and a clear error on timeout.
- Circuit breaker in watchdog handlers to skip non-lifecycle events when
CDP is disconnected.
- AboutBlankWatchdog skips recovery when CDP is down or shutting down,
and guards about:blank checks.
- Redirected chrome://newtab → about:blank in parallel for faster
stabilization.
- Reduced TabClosedEvent timeout from 10s to 3s to speed recovery.
<sup>Written for commit c9232a63ed.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Update the package version to 0.11.11 in pyproject.toml. This promotes
0.11.10a2 (pre-release) to a stable release for publishing.
<sup>Written for commit 9d927120c1.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds a fast direct CLI mode that reconnects to the browser via CDP per
command, with coordinate-based clicking in CLI and MCP. Includes
HTML/screenshot tools and viewport-aware state for accurate pixel
clicks; supports local or cloud browser via --remote.
- **New Features**
- Direct CLI: lightweight CDP for most commands; full session only for
state/first open; optional --remote for cloud browser.
- Coordinate clicking: MCP browser_click accepts index or
coordinate_x/coordinate_y; CLI click supports <index> or <x> <y>.
- Tools: browser_get_html and browser_screenshot (base64 + viewport);
CLI adds html, eval, keys.
- State: viewport/page/scroll and screenshot_dimensions for precise
pixel-to-coordinate mapping.
- Selector cache: persisted for click-by-index; auto-invalidated on
navigation. Commands: open, state, click, type, input, screenshot,
scroll, back, keys, html, eval, close.
- Tests: click arg parsing, event dispatch, and selector cache
conversion/invalidations.
- **Migration**
- CLI: use click <index> or click <x> <y>; parser now accepts flexible
args.
- MCP: keep index usage or pass coordinate_x and coordinate_y for pixel
clicks.
- Direct CLI: run state once before index-based clicks to warm the
selector cache.
<sup>Written for commit 69d96c1f45.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds file attachments to structured output. The done action resolves
files_to_display and auto-attaches BrowserSession downloads, returning
file paths in ActionResult.attachments.
- **New Features**
- StructuredOutputAction supports files_to_display to attach files from
FileSystem (missing files are ignored).
- Auto-attaches BrowserSession downloaded_files with deduplication.
- ActionResult now includes an attachments list.
- JSON schema hides internal fields (success, files_to_display).
- **Migration**
- Update Tools.done calls to pass file_system and browser_session.
- Use files_to_display to include specific files.
<sup>Written for commit 86b12491dc.
Summary will update on new commits.</sup>
<!-- End of auto-generated description by cubic. -->