<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Fixes typing and screenshot regressions to make interactions more
reliable. Adds a small delay between keystrokes, focuses the page before
screenshots, and clarifies text input usage.
- **Bug Fixes**
- Add 10ms delay between keystrokes in typing handlers to prevent missed
characters.
- Focus the target page when creating the CDP session for screenshots to
avoid incorrect captures.
- Clarify input action: only index-based text input; never use
coordinates.
<sup>Written for commit 0db058e41b.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
**Description:**
This PR updates the Sandbox Quickstart example to make it fully runnable
when
copied into a standalone script.
**Changes:**
- Added `import asyncio`
- Wrapped the async sandbox entrypoint in:
```python
if __name__ == "__main__":
asyncio.run(production_task())
```
- Prevents the “coroutine was never awaited” runtime error.
**Issue:**
No related issue (minor documentation fix).
**Dependencies:**
None.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixed the async Sandbox Quickstart example so it runs as a standalone
script without errors. Added import asyncio and a __main__ guard that
calls asyncio.run(production_task()), preventing the “coroutine was
never awaited” runtime error.
<sup>Written for commit 7fd4a38a2b.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Added provider options to ChatVercel to control Vercel AI Gateway
routing and fallback order. Also improved handling for Anthropic models
and updated docs and examples.
- **New Features**
- Added provider_options to ChatVercel; passed as
extra_body.providerOptions.
- Supports gateway routing order (e.g., ['vertex', 'anthropic']).
- Anthropic models now follow the optimized structured-output path.
- Updated docs and example to show basic and provider-order usage.
<sup>Written for commit 5c581c642e.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Reverts browser-use/browser-use#3614
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Reverts the previous demo mode overhaul and restores a single, built-in
demo panel with simpler integration. Also streams step start and
completion summaries to the panel for clearer progress.
- **Refactors**
- Embedded the panel script directly in demo_mode.py; removed
browser_use/browser/demo_panel_scripts.py.
- Removed the demo_mode_display option; a single panel mode is used.
- Simplified session integration by removing per-target demo overlay
registration.
- Added demo-mode logs for step start and completion (agent and
notebook).
- Raised some logs from debug to info for better visibility.
- Cleaned up codespell ignore list in pyproject.toml.
- **Migration**
- Remove any use of profile.demo_mode_display in configs. It’s no longer
supported.
<sup>Written for commit a742645416.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds precise coordinate-based scrolling via CDP gestures and updates
prompt templates to guide when to use coordinates. Also auto-sizes
screenshots for Claude and Gemini to improve coordinate scaling
accuracy.
- **New Features**
- Added ScrollAtCoordinateAction and ScrollAtCoordinateEvent using CDP
synthesizeScrollGesture.
- Scales coordinates and scroll deltas from LLM screenshot size to the
real viewport.
- Reworked scroll action: page = viewport height, removed index, memory
reports in px.
- Added Anthropic-specific system prompts and selection logic; prompts
now advise when to use coordinates.
- Auto-configured LLM screenshot sizes: Claude Sonnet 1400x850, Gemini
1024x720.
- **Refactors**
- Shortened click action description.
- History step label is now "step_{number}".
- Included new Anthropic prompt files in packaging.
<sup>Written for commit 79df8fc818.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Fixes newline handling in SendKeys so Enter works reliably in forms and
text areas. Also increases typing timeouts and removes artificial delays
for faster, more reliable input.
- **Bug Fixes**
- Map '\n' and '\r' to Enter by dispatching rawKeyDown, char, and keyUp
(VK 13), ensuring correct submissions and line breaks.
- **Refactors**
- Increase default timeouts for TypeTextEvent and SendKeysEvent from 15s
to 60s.
- Remove 18ms per-character delay in typing and send-keys loops.
<sup>Written for commit c4bb681058.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Added output format to Code Agent docs. Useful for llm code generation.
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Documented CodeAgent output format and return values so users can read
run() results and execution history. Added a new page and updated
parameter docs with current defaults and compatibility notes.
- **New Features**
- New Output Format page covering NotebookSession and CodeCell fields,
helper methods, task completion flags, and examples.
- Parameters doc updated: required/optional flags, defaults
(max_steps=100, use_vision=True), file_system, aliases (controller,
browser_session), and a return value section.
- Added the new page to docs.json navigation.
<sup>Written for commit 0efd006527.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Introduce CodeAgentHistoryList to standardize CodeAgent history with a
clear, typed, eval-compatible API. Replaces ad-hoc mocks and exposes
history directly on NotebookSession.
- **New Features**
- Added CodeAgentHistoryList with AgentHistoryList-compatible methods
(final_result, is_done, errors, urls, screenshots, action_results,
model_actions, save_to_file).
- NotebookSession.history now returns CodeAgentHistoryList; session
stores _complete_history and _usage_summary.
- run() persists history and usage into the session for later access.
- **Refactors**
- Removed DictToObject/MockAgentHistoryList; service.history now returns
CodeAgentHistoryList.
- Centralized history logic in views.py and simplified service.py.
<sup>Written for commit 7851657ded.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Add an env var to control version checks at agent startup. Defaults to
true; set BROWSER_USE_VERSION_CHECK=false to skip the check and the
upgrade log.
- **New Features**
- Gate the latest-version lookup behind
CONFIG.BROWSER_USE_VERSION_CHECK.
- Document BROWSER_USE_VERSION_CHECK in .env.example with a short note.
<sup>Written for commit 9dc64f9b8b.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Previously, when browser launch succeeded after retry using a temporary
directory, the code immediately deleted ALL temporary directories
including the one actively being used by the running browser process.
The fix preserves the currently used temporary directory until browser
cleanup
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes a crash where a successful retry launch deleted the active
temporary user_data_dir, causing Chrome to write to a removed path. We
now keep the in-use temp profile until browser shutdown.
- **Bug Fixes**
- Only remove unused temporary directories after a successful launch.
- Track and preserve the active user_data_dir for cleanup on browser
kill.
<sup>Written for commit 4a7334ae77.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Preserves the active temporary `user_data_dir` after a successful
launch, cleaning only unused temp dirs and deferring the in-use dir
cleanup to browser kill.
>
> - **Watchdog
(`browser_use/browser/watchdogs/local_browser_watchdog.py`)**:
> - Only remove unused temporary `user_data_dir` directories after a
successful launch.
> - Identify the currently used directory and retain it in
`_temp_dirs_to_cleanup` (if temp) for cleanup on browser kill; otherwise
clear the list.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
4a7334ae77. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Switched the CDP URL from localhost to 127.0.0.1 in the local browser
watchdog to prevent IPv4/IPv6 connection issues, and fixed the
apply_to_job instructions (“Make sure to delegate…”).
<sup>Written for commit ca2bed58fe.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Switches CDP URL from localhost to 127.0.0.1 and cleans up example
instructions.
>
> - **Browser watchdog
(`browser_use/browser/watchdogs/local_browser_watchdog.py`)**:
> - Update CDP readiness check to use `http://127.0.0.1:{port}` instead
of `http://localhost:{port}` for both request and returned base
`cdp_url`.
> - **Examples (`examples/use-cases/apply_to_job.py`)**:
> - Minor instruction copy edit: fix capitalization/grammar in the
step-by-step plan note.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ca2bed58fe. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Also dont change focus outside of get_or_create_cdp_session
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Restricts agent focus to page/tab targets via the session manager to
avoid iframes/workers. Screenshot capture validates the focused target
and falls back to a page target without changing focus; adds helpers to
inspect focus and page targets.
- **Bug Fixes**
- Gate focus updates to valid page/tab targets in SwitchTabEvent and
AgentFocusChangedEvent.
- Use get_or_create_cdp_session(..., focus=True) for focus changes;
remove direct agent_focus_target_id writes.
- ScreenshotWatchdog: capture only from page/tab targets; fallback to a
page target if focus is invalid; do not change focus (focus=False).
- **New Features**
- get_focused_target(): returns the currently focused target.
- get_page_targets(): returns all page/tab targets, excluding
iframes/workers.
<sup>Written for commit 7e98622594.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->