9878 Commits

Author SHA1 Message Date
Laith Weinberger d8e556b92f eval.yml: max-parallel 15 for the failed-task rerun (60min timeout, 429 headroom) 2026-07-23 00:57:04 -07:00
Magnus Müller 96ec5dc137 Gate the skeleton-screen 'still loading?' hint on in-flight network requests (#5273)
The skeleton hint (`prompts.py`, added in #4427 alongside an unrelated
image fix, Linear AGI-497) uses a pure text-density threshold:
`total_elements > 20 and text_chars < total_elements * 5`. Measured over
~40k eval steps it fires on **75.7% of all prompts**, mostly on fully
rendered element-heavy pages — and models have learned to ignore it
(steps where it fired waited *less* than steps where it didn't), which
also devalues the hint in the one case a page really is loading.

`BrowserStateSummary.pending_network_requests` is computed on every
state build by `dom_watchdog._get_pending_network_requests()`
(readyState + performance API, ad-filtered) and was previously read by
nothing. This PR gates the hint on it, so "still loading?" only appears
while requests are actually in flight. The skeleton fixture test
simulates one pending request; the rich-page test is unchanged (the gate
only tightens the condition). All 4 tests in `test_action_blank_page.py`
pass.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Gate the skeleton-screen hint on actual in‑flight network requests and
reword hints to “consider waiting,” including the request count. This
cuts false positives (~76% before) and gives clearer, data‑driven
guidance.

- **Bug Fixes**
- Gate the low-text-density skeleton hint on
`BrowserStateSummary.pending_network_requests` in
`browser_use/agent/prompts.py`; message shows the in‑flight count and
says “page may still be loading, consider waiting.”
- Update empty‑page hint to “Page appears empty — consider waiting”;
adjust `tests/ci/test_action_blank_page.py` to simulate a pending
request and assert on the new wording.

<sup>Written for commit 6618c97ebd.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5273?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-22 20:47:52 -07:00
Magnus Müller 6618c97ebd Merge branch 'main' into fix/skeleton-hint-network-gate 2026-07-22 20:46:31 -07:00
MagMueller 962cada3cb style: ruff format 2026-07-22 20:33:49 -07:00
Magnus Müller bf650fa5b1 Fix clear-to-empty on React controlled inputs (native value setter) (#5274)
`_clear_text_field` clears via the instance `this.value = \"\"`. React
patches the instance value setter to track changes, so that assignment
updates React's tracker and the synthetic `input` event gets deduped —
onChange never fires and the controlled component keeps its old state
while the DOM looks empty. The synchronous `finalText` check reads
`\"\"` at that instant, so the keystroke fallbacks (which would work)
are unreachable, and the action reports "Typed ''" success.

**Blast radius is narrow but real**: only `input(index, \"\",
clear=true)` (pure clear). When text follows the clear, the real
per-character key events resync React on the first keystroke, and
#4023's concat retry backstops. The pure-clear path is the silent one —
observed in evals as an agent retrying a search-box clear 11 times while
the React-filtered list never reset.

History (why this is a gap, not a choice): the original
`_clear_text_field` (d80549038, Aug 2025) used real Ctrl+A+Backspace key
events — React-safe. A same-day follow-up (f4a34bc1d "fix-clear-text",
no body) promoted JS value-set to Strategy 1. Later commits added the
correct native-setter technique for date inputs (`_set_value_directly`,
0badc5d4c) and for the type-retry path (#4023) — it just never reached
the clear path. Related user reports: #3415, #2867 (dropdown flavor of
the same tracker mechanism).

Two changes:
1. `_clear_text_field` uses the prototype's native value setter (same
technique as `_set_value_directly`), so React's tracker sees the change
and onChange fires with the cleared value.
2. If a pure clear still fails, raise `BrowserError` instead of logging
a warning and reporting success — the agent gets an honest failure it
can react to.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fixes clearing React‑controlled text fields so the DOM and component
state stay in sync. Uses the native prototype value setter on real
inputs so React sees the change and `onChange` fires.

- **Bug Fixes**
- Clear now calls the element‑type’s native value setter for
`HTMLInputElement`/`HTMLTextAreaElement` with `instanceof` guards; web
components and other elements keep their own setter to avoid Illegal
invocation.
- Fixed the descriptor lookup in the concat‑retry path to pick the
correct setter per element type, with a safe fallback to `this.value`.

<sup>Written for commit d4abb27612.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5274?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-22 20:33:09 -07:00
MagMueller f60fdd10f1 hint wording: consider waiting (grammatical, per review) 2026-07-22 20:29:35 -07:00
MagMueller 923287e3a4 hint wording per Magnus: consider to wait 2026-07-22 20:29:35 -07:00
MagMueller 69f69bb06b skeleton hint: actionable data-driven wording; empty-page hint tells the model what to do
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:29:35 -07:00
MagMueller 5adce7bf9b fix: gate skeleton-screen hint on in-flight network requests
The low-text-density heuristic fires on ~76% of prompts on fully rendered
element-heavy pages (measured over ~40k eval steps), and models have learned
to ignore it. pending_network_requests is already computed on every browser
state build and was previously unread; using it as a gate keeps the hint for
the one case it is true.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:29:35 -07:00
MagMueller d4abb27612 review fixes: instanceof-guarded native setter (web components keep their own setter), drop dead honest-failure hunk, fix same descriptor bug in the concat-retry path
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:22:03 -07:00
MagMueller 369678054c input clear: fail honestly when a pure clear leaves text behind
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 20:22:03 -07:00
MagMueller 4ebc0f5d0d input clear: use native prototype value setter so React controlled inputs actually clear 2026-07-22 20:22:03 -07:00
Magnus Müller 854a7473e6 extract: stop auto-inheriting output_model_schema into per-page extraction (#5278)
## What

Removes the auto-bridge (both `Agent` and beta agent) that copied
`output_model_schema` into `extraction_schema`. Per-page `extract` now
uses a schema only when the caller passes `extraction_schema=`
explicitly.

## Why

`output_model_schema` describes the **final task result** — e.g.
`{summary, step_results}`. The auto-bridge (added Feb 2026) fed that
same schema to **every per-page extract**, asking the model to produce
the whole-task shape from one page. That's the wrong shape for a
single-page extraction, and on the **browser-use gateway** it routes the
structured extract sub-call through the agent action protocol, which the
fine-tuned bu-* models answer with `done(data={...})` — the client then
dies with `KeyError: 'action'` (deterministic, every structured-extract
call, all releases since 0.11.8).

Reproduced live against production: a bu-2-0 agent with
`output_model_schema` set failed `extract` 4/4 times ("Error executing
action extract: 'action'") on browser-use.com, then completed the task
by reading state directly — so it was silent wasted steps, not a hard
failure.

## Behavior change (called out deliberately)

- Users who set **only** `output_model_schema` (final structured
output): `extract` returns to free-text (the pre-Feb-2026 default).
Their final `done` result is still structured — unchanged.
- Users who want structured per-page extraction: pass
`Agent(extraction_schema=...)` explicitly — unchanged.

This is complementary to the gateway-side fix (cloud, unwraps
`done.data` for non-agent schemas), which fixes existing installs
without an upgrade; this PR fixes the root coupling for anyone who
upgrades and also stops feeding a semantically wrong schema to
non-gateway models.

## Tests

`tests/ci/test_structured_extraction.py` (28) pass — none depended on
the auto-bridge; they exercise explicit `extraction_schema` via `act()`,
which is unchanged.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Stop auto-inheriting `output_model_schema` into per-page `extract`,
restoring the free-text default and fixing `browser-use` gateway
failures; adds tests to lock in this behavior.

- **Bug Fixes**
- Avoids using the final-result shape for single-page extraction, which
caused `KeyError: 'action'` on the `browser-use` gateway.
- Final `done` output remains structured when `output_model_schema` is
set; only per-page extraction behavior changes.

- **Migration**
- To get structured per-page results, pass `extraction_schema=...` to
the `Agent`.

<sup>Written for commit ba755a735c.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5278?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-22 20:15:57 -07:00
MagMueller ba755a735c test: lock in that output_model_schema no longer auto-bridges into extraction_schema 2026-07-22 20:05:08 -07:00
MagMueller 0a64aaa4d4 extract: don't auto-inherit output_model_schema into per-page extraction
output_model_schema describes the final task result (e.g. {summary, step_results}).
Auto-copying it into every extract call (added Feb 2026) asks the model to produce
the whole-task shape from a single page, and on the browser-use gateway routes the
extract sub-call through the agent action protocol, which breaks it (client
KeyError 'action'). Per-page extract now uses a schema only when the caller passes
extraction_schema explicitly; free-text extraction is the default again.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 19:55:00 -07:00
laithrw 40717057a3 fix: handle file:// urls in _extract_start_url (#5276)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Add support for `file://` URLs in start URL extraction and reduce false
positives. Keeps local file paths intact and avoids forcing `https://`.

- **Bug Fixes**
- Add `file://` to URL regex and scheme detection; keep `file://` as-is
and skip extension filtering for them.
- De-duplicate overlapping matches by tracking matched spans across
patterns.
- Safer heuristics: only prepend `https://` when no scheme is present,
and only exclude `.htm` when the match is domain-like; still respects
nearby “never/don’t” context.

<sup>Written for commit 581ab0d901.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5276?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-22 17:43:25 -07:00
Laith Weinberger 581ab0d901 fix 2026-07-22 17:37:06 -07:00
Laith Weinberger 62df6b11f9 fix: handle file:// urls in _extract_start_url 2026-07-22 17:30:30 -07:00
Magnus Müller b9c8dc88bb Fix tool name in flash prompts: replace_file_str -> replace_file (#5272)
The flash system prompts (`system_prompt_flash.md`,
`system_prompt_anthropic_flash.md`, `system_prompt_flash_anthropic.md`)
instruct the model to use `replace_file_str`, but the registered tool is
`replace_file` (`tools/service.py:1776`). Models cope by inferring the
right name (0 wrong-name calls observed in 42k eval steps), so impact is
hygiene — but the prompt should name the tool that exists. The two
remaining `replace_file_str` occurrences are the internal `FileSystem`
method, which is not model-facing and unchanged.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Updated flash system prompts to reference the correct tool
`replace_file` instead of `replace_file_str`. Aligns instructions with
the registered tool to avoid confusion when updating files.

<sup>Written for commit daf7a3e112.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5272?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-22 17:09:37 -07:00
MagMueller daf7a3e112 fix: prompts referenced non-existent tool name replace_file_str (registered tool is replace_file)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 16:55:32 -07:00
Saurav Panda 2be09b6c5e fix: dont send default params in gemini genconfig (#5173)
Gemini 3+ models may throw errors if a default value is set for
parameters like temperature, top-p, etc.

The 3-series models use 1.0 as the default temperature, so this should
be a backwards-compatible change.

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Skip setting a default temperature in the Gemini 3-series generation
config to avoid API errors. Keep explicit values, and default to 0.5
only for non–Gemini 3 models.

- **Bug Fixes**
- In `ChatGoogle`, only set `temperature` if provided or if the model is
not `gemini-3*` (then use 0.5).
- Added tests to confirm: non–Gemini 3 defaults to 0.5, `gemini-3*`
leaves `temperature` unset, explicit values are preserved.

<sup>Written for commit a567c6dacf.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5173?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-20 10:26:41 -07:00
Mark McDonald a567c6dacf Merge branch 'main' into gemini-params 2026-07-20 08:48:31 +05:30
Gregor Žunič 950eb03617 Release 0.13.6 with Browser Harness 0.1.6 (#5245)
## Summary

- bump `browser-use` from `0.13.5` to `0.13.6`
- pin `browser-harness==0.1.6`
- sync both Browser Use skill copies from Browser Harness `main`, adding
the recordings and video workflow

## Validation

- `uv run --frozen pre-commit run --files pyproject.toml
skills/browser-use/SKILL.md browser_use/skills/browser-use/SKILL.md`
- `uv run --frozen python scripts/sync_browser_harness_skill.py --check`
- built the wheel and verified its metadata requires
`browser-harness==0.1.6`
- verified the packaged skill contains the recordings/video instructions

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Release `browser-use` 0.13.6 and pin `browser-harness` 0.1.6. Adds
recordings and video workflow guidance to the Browser Use skill so users
can opt into local traces and create videos.

- **Dependencies**
  - Bump `browser-use` to `0.13.6`.
  - Pin `browser-harness` to `0.1.6`.

- **New Features**
  - Synced both Browser Use skill docs from `browser-harness` `main`.
- Added recordings/video workflow: CLI enable/disable, `BH_RECORD`
override, `start_recording`/`stop_recording`, and safe use of
`recordings --latest`.
  - Included `make-video.md` in Interaction Skills.

<sup>Written for commit 169ebee82e.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5245?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
0.13.6
2026-07-16 22:28:49 -07:00
Gregor Žunič 169ebee82e Release 0.13.6 with Browser Harness 0.1.6 2026-07-16 22:24:40 -07:00
laithrw 058e1cf73d Bump browser-use version to 0.13.5 + sync BH (#5243) 0.13.5 2026-07-16 17:45:56 -07:00
Laith Weinberger 3cd3816c57 sync browser-use skill from harness main 2026-07-16 16:26:01 -07:00
Laith Weinberger a23c6ebdc7 Bump browser-use version to 0.13.5 2026-07-16 16:20:51 -07:00
laithrw e9c3457140 support MCP registry (#5242) 2026-07-16 16:12:16 -07:00
Laith Weinberger 604392c392 support MCP registry 2026-07-16 15:54:33 -07:00
Alexander Yue dbc4d46e0c feat: accept bu-qa-1 model alias in ChatBrowserUse (#5226)
## Summary

Adds `bu-qa-1` to the accepted `bu-*` alias list in `ChatBrowserUse`.
The gateway already serves this model (browser-use/cloud#4945 — website
QA agent that tests a site and scores functionality/aesthetics 0-2), but
the client rejected it at construction:

```
ValueError: Invalid model: 'bu-qa-1'. Use a 'bu-*' alias (bu-latest, bu-1-0, bu-2-0) ...
```

Changes:
- `bu_aliases` list: add `'bu-qa-1'`
- docstring: document the alias
- test: extend the existing alias parametrize with `bu-qa-1`

## Usage

```python
agent = Agent(
    task='https://example-site.com\nSpec: landing page with working signup form',
    llm=ChatBrowserUse(model='bu-qa-1'),
    output_model_schema=WebsiteQAResult,  # recommended: reasoning + functionality/aesthetics ints, see cloud#4945
)
```

## Testing

- `tests/ci/models/test_llm_browseruse.py`: 20 passed, 1 skipped
- Verified end-to-end against the staging gateway: agent tested
quotes.toscrape.com and returned a validated result (functionality=2,
aesthetics=1)
- Note: `bin/lint.sh` pyright failures (`browser_harness` imports in
cli.py) are pre-existing on main and unrelated

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Enables the `bu-qa-1` Website QA model in `ChatBrowserUse`, removing
construction-time “Invalid model” errors when using this gateway-served
alias.

- **New Features**
  - Add `bu-qa-1` to accepted `bu-*` aliases.
  - Document the alias in `ChatBrowserUse` docstring.
  - Update tests to include `bu-qa-1`.

<sup>Written for commit 4b1cc6375a.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5226?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-14 14:31:26 -07:00
Alexander Yue 4b1cc6375a feat: accept bu-qa-1 model alias in ChatBrowserUse 2026-07-14 12:46:07 -07:00
shawn pana c9206829c1 Update README.md (#5197) 2026-07-12 21:41:42 -07:00
shawn pana d66b3eb31d Update README.md 2026-07-11 20:57:06 -07:00
laithrw 68afe46456 mcp for CLI 3.0 (#5194)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Adds a stdio MCP server for CLI 3.0 behind `--cli-mcp`, exposing
persistent `browser_harness` execution and screenshots to MCP clients.
Uses a shared, silent stdio runner and validates `max_dim` inputs.

- **New Features**
- New `--cli-mcp` flag starts `browser_use.mcp.cli_mcp` via a shared
stdio runner (`mcp.server.stdio`).
  - Tools:
- `browser_exec`: run Python in a persistent namespace with helpers
pre-imported.
- `browser_screenshot`: returns base64 PNG; supports `full`; `max_dim`
must be a positive integer.
- Automatically calls `ensure_daemon` (except for remote admin calls).
Disables logging to keep stdio clean.

- **Migration**
- Run: `browser-use --cli-mcp`. Sets `BH_CLIENT=browser-use-mcp` by
default.
- Connect your MCP client over stdio. Prefer `browser_screenshot` over
in-code captures.

<sup>Written for commit 133761dbbd.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5194?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
0.13.4
2026-07-11 11:34:14 -07:00
Laith Weinberger 133761dbbd shared mcp runner + max_dim guard 2026-07-11 11:28:12 -07:00
Laith Weinberger 328186acb0 Fix ruff-format lint 2026-07-11 11:08:16 -07:00
Laith Weinberger 0f5c5cfb91 mcp for CLI 3.0 2026-07-11 11:02:49 -07:00
laithrw fa21b78201 Pin browser-harness to 0.1.5 (#5190)
Ship browser-harness 0.1.5 (Windows reliability, robust telemetry,
cloud-browser suggestion) with the upcoming browser-use 0.13.4 release.

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Pin `browser-harness` to 0.1.5 to ship Windows reliability fixes, more
robust telemetry, and cloud-browser suggestion support alongside
`browser-use` 0.13.4.

- **Dependencies**
  - Bump `browser-harness` from 0.1.4 to 0.1.5 in `pyproject.toml`.

<sup>Written for commit e3616da919.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5190?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-10 17:46:57 -07:00
Laith Weinberger e3616da919 Pin browser-harness to 0.1.5 2026-07-10 17:43:50 -07:00
laithrw f785855759 Restructure README quickstart: CLI and Python library paths (#5176)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Restructures the README into a simpler Quickstart for agent setup and a
clear Python library path to speed up onboarding. Moves demos into a
“What can Browser Use do?” section and adds an FAQ on when to use CLI vs
library; updates benchmarks.

- **Refactors**
- Consolidates intros into two paths: Quickstart (CLI skill) and Python
library.
- Quickstart: paste-in prompt uses Python 3.12, says run `browser-use
skill install`, and links to the `browser-harness` install guide;
removes the old CLI section and code example.
- Python library: Python >= 3.11, clarify `.env` API key setup, remove
`BrowserProfile` import, and show `uv add `browser-use``.
  - Move demos to the new “What can Browser Use do?” section at the top.
- Add Odysseys leaderboard note to the benchmarks and include a Citation
section.
- Tests: update CI to look for “run `browser-use skill install` to
register the skill”.

<sup>Written for commit 50bf4b222c.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5176?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-09 11:17:12 -07:00
Laith Weinberger 50bf4b222c improvements 2026-07-09 11:09:31 -07:00
Laith Weinberger b376851b5a fix test 2026-07-09 11:00:08 -07:00
Laith Weinberger 0d1691acd9 clarification 2026-07-09 10:46:10 -07:00
Laith Weinberger 5b67034b4c improvements 2026-07-09 10:11:26 -07:00
Laith Weinberger f3f2bea8de Restructure README quickstart: CLI and Python library paths 2026-07-08 11:36:16 -07:00
Mark McDonald 8b38ec09d8 fix: dont send default params in gemini genconfig
Gemini 3+ models may throw errors if a default value is set for
parameters like temperature, top-p, etc.

The 3-series models use 1.0 as the default temperature, so this
should be a backwards-compatible change.
2026-07-08 17:47:10 +08:00
laithrw cf2c921d7d hint for unknown CLI cmds (#5171)
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Show a clear hint when `browser-use` runs piped code that references an
unknown helper, and unify the CLI 3.0 guidance across errors and
migration hints. Tighten detection so only `NameError`s raised by user
code are wrapped.

- **New Features**
- On `NameError` from exec’d stdin, print the traceback, then a friendly
message to stderr (example, core helpers, install steps, docs link,
`browser-use --doctor`) and exit with code 2. Shared `_CLI3_GUIDE` is
used in both the unknown-helper hint and legacy migration message.

- **Bug Fixes**
- Only treat `NameError` from the final frame of piped code (`<string>`)
as an unknown helper; internal/helper `NameError`s propagate.

<sup>Written for commit 36a8525c13.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5171?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-07 17:18:50 -07:00
Laith Weinberger 36a8525c13 lint 2026-07-07 17:11:55 -07:00
Laith Weinberger 2de48f89b8 hint for unknown CLI cmds 2026-07-07 17:01:10 -07:00
laithrw 2635449c46 sync browser-use skill from harness main (cloud-browser section) (#5170)
The `browser-use skill sync` check compares the committed SKILL.md
copies against browser-harness main, which recently gained the
cloud-browser-suggestion section. The committed copies were stale, so
the check fails on every PR (it also failed on #5169, unrelated to that
PR's changes).

This re-runs `scripts/sync_browser_harness_skill.py` to bring both
copies current. `--check` passes locally.

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Syncs the `browser-use` SKILL.md copies with browser-harness main by
adding the cloud-browser guidance section, fixing the `browser-use skill
sync` check that was failing on every PR. Re-ran
`scripts/sync_browser_harness_skill.py`; `--check` passes locally.

<sup>Written for commit 9fb49e03ee.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/browser-use/browser-use/pull/5170?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->
2026-07-07 16:33:01 -07:00