<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Added an analysis step for reruns that replaces extract replay,
generating fresh results from filtered page markdown and optional
screenshot. Rerun now routes extract actions through this step and
supports a dedicated LLM.
- **New Features**
- Added _execute_ai_step with system/user prompts, clean markdown
extraction, optional screenshot, and LLM invocation with timeout.
- rerun_history accepts ai_step_llm; extract actions are re-evaluated
via the analysis step, while other actions run in batch with order
preserved.
- New prompts: get_ai_step_system_prompt and get_ai_step_user_prompt.
- Updated example to show custom LLM usage for the analysis step and
summary.
- Added tests (basic extraction, screenshot handling, error path) in
tests/ci/test_ai_step.py.
<sup>Written for commit 00866bd885.
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 fallback LLM support to keep the agent running when the primary
model hits rate limits or provider errors. Also standardizes HTTP error
handling to custom exceptions used by the agent.
- **New Features**
- Agent accepts a fallback_llm and switches on 401, 402, 429, 500, 502,
503, 504 after primary retries are exhausted.
- Fallback stays active for the rest of the run and is registered with
token cost tracking.
- New properties: is_using_fallback_llm and current_llm_model.
- Added example and docs for configuring and observing fallback
behavior.
- **Refactors**
- ChatBrowserUse now raises ModelProviderError and ModelRateLimitError
(instead of ValueError) for HTTP failures.
- Updated tests to cover fallback switching and new exception types.
<sup>Written for commit cad2216410.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
ref: #3710
cc: @mertunsall @MagMueller
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixed the broken “Supported Models” link in AGENTS.md by pointing to the
correct docs URL. This ensures readers can access the models list
without 404s.
<sup>Written for commit a26832d730.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Closes#3702
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes Agent.logger to be safe during initialization and when IDs are
missing, preventing crashes and malformed log names. Closes#3702.
- **Bug Fixes**
- Use getattr to safely read task_id and browser_session; slice IDs only
when present.
- Fallback to '----' for missing task/session IDs and '--' for missing
target ID.
- Precompute ID fragments to avoid repeated attribute access and slicing
errors.
<sup>Written for commit ef03559d51.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Update `examples/features/judge_trace.py` to instantiate
`ChatBrowserUse()` without an explicit `base_url`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
3ffd26fbe0. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Update judge_trace example to initialize ChatBrowserUse() without a
hardcoded localhost base_url. This makes the example work out of the box
with default settings and avoids connection errors when no local server
is running.
<sup>Written for commit 3ffd26fbe0.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Drops the `force` parameter from `ClickElementAction` and always
dispatches coordinate clicks with `force=True`.
>
> - **Click actions**:
> - Remove `force` field from `ClickElementAction` in
`browser_use/tools/views.py`.
> - In `browser_use/tools/service.py`, `_click_by_coordinate` now always
dispatches `ClickCoordinateEvent` with `force=True` and no longer reads
from params.
> - **Types/API**:
> - Updates action input model and event dispatch to align with the
removal of `force`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
aa0d1fb00f. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Removed the force flag from ClickElementAction and made coordinate
clicks always forced. This simplifies the API and makes click behavior
consistent.
- **Migration**
- Remove the force field from ClickElementAction payloads; it is no
longer supported.
- Adjust any logic that relied on optional safety gating for coordinate
clicks.
<sup>Written for commit aa0d1fb00f.
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
Switched the Mistral example to mistral-small-2506 with temperature 0.6
for faster, more varied outputs.
<sup>Written for commit b25480ec81.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
Description:
add ChatMistral with max_tokens/safe_prompt handling, env overrides,
provider tagging, and improved error parsing
introduce MistralSchemaOptimizer to strip unsupported JSON schema
keywords (minLength, maxLength, pattern, format) for structured outputs
wire Mistral exports and presets (mistral_large/medium/small, codestral,
pixtral_large) into browser_use and llm modules
document Mistral support and include runnable example
examples/models/mistral.py
add unit test verifying banned schema keywords are removed
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds a Mistral chat provider with safe JSON schema sanitization for
structured outputs, plus model presets, docs, and an example to make
Mistral easy to use in browser_use.
- **New Features**
- ChatMistral with max_tokens, optional safe_prompt, env overrides
(MISTRAL_API_KEY, MISTRAL_BASE_URL), provider tag, and clearer
error/rate-limit handling.
- MistralSchemaOptimizer removes unsupported schema keywords (minLength,
maxLength, pattern, format).
- Model presets and aliases: mistral_large/medium/small, codestral,
pixtral_large; wired into exports and get_llm_by_name.
- Updated README and a runnable example (examples/models/mistral.py).
- Unit test validates banned schema keywords are stripped.
- **Migration**
- Set MISTRAL_API_KEY (optional MISTRAL_BASE_URL).
- Use ChatMistral or presets via get_llm_by_name (e.g.,
"mistral_medium"); structured outputs work automatically.
<sup>Written for commit 38b3bb2edd.
Summary will update automatically on new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Introduces `ChatMistral` with schema sanitization, env-configured
client, model presets/aliases, docs, example, and tests, wired into lazy
imports and model factory.
>
> - **LLM / Mistral**:
> - Add `ChatMistral` (`browser_use/llm/mistral/chat.py`): supports
`max_tokens`, optional `safe_prompt`, env
`MISTRAL_API_KEY`/`MISTRAL_BASE_URL`, improved error parsing, usage
reporting, and OpenAI-style message serialization.
> - Add `MistralSchemaOptimizer` (`browser_use/llm/mistral/schema.py`)
to strip unsupported JSON Schema keywords (`minLength`, `maxLength`,
`pattern`, `format`) for structured outputs.
> - Wire into exports and lazy imports: `browser_use/__init__.py`,
`browser_use/llm/__init__.py`.
> - Extend model factory (`browser_use/llm/models.py`): handle
`mistral_*` provider and top-level aliases
(`mistral_large/medium/small`, `codestral`, `pixtral_large`); update
`__all__`.
> - Tests: add `browser_use/llm/tests/test_mistral_schema.py` to verify
keyword stripping.
> - Docs/Example: update `browser_use/llm/README.md` with Mistral
specifics; add runnable example `examples/models/mistral.py`.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
38b3bb2edd. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- 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. -->