Release notes from stagehand
Articles about Release notes from stagehand
Release @browserbasehq/eve@0.2.1 · browserbase/stagehand
@browserbasehq/eve@0.2.1
Release @browserbasehq/stagehand@4.2.1 · browserbase/stagehand
@browserbasehq/stagehand@4.2.1
Stagehand-python@4.2.1: Release Stagehand packages (#3160)
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. Releases @browserbasehq/eve@0.2.1 Patch Changes Updated dependencies [bfeda48]: @browserbasehq/stagehand@4.2.1 @browserbasehq/stagehand@4.2.1 Patch Changes #3157 bfeda48 Thanks @github-actions! -
Stagehand-python@4.2.1a0.dev1594: fix(extension): bind LLM/gateway fetch to a load-time reference (#3153)
What Internal hardening of how the browser runtime issues authenticated LLM and Model Gateway requests: they now use a fetch reference captured at startup rather than the ambient global. No public API or behavior change for callers. Changes extension/llm/boundFetch.ts (new) — a fetch reference captured at module load. extension/llm/aiSdkClient.ts — pass boundFetch into the provider connection (OpenAI/Anthropic/Google/Groq/Cerebras). extension/llm/LLMProvider.ts — pass boundFetch into getAISDKLanguageModel's provider factory.
Release stagehand-python@4.2.1a0.dev1593 · browserbase/stagehand
[Claimed #3155] fix: accept new model IDs without a Stagehand release
Stagehand-python@4.2.0: Release Stagehand packages (#2969)
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. Releases @browserbasehq/eve@0.2.0 Minor Changes #2821 a237c77 Thanks @shrey150! - Replace the Eve extension's browser and web tools with Stagehand V4 run, snapshot, and screenshot.
Stagehand-python@4.2.0a0.dev1591: [fix]: use `progress` tracker in `waitForSelector()` (#3146)
why waitForSelector() did not include frame resolution or locator world readiness in its timeout. time spent preparing or retrying the browser wait was not deducted from its timeout. the browser helper also turned zero into a fresh 30-second wait, & could keep watching the page after the caller timed out. what changed gave selector waits one shared deadline across frame resolution, locator-world readiness, & the element wait. internal calls reuse their parent's remaining time without taking ownership of its progress.
Stagehand-python@4.2.0a0.dev1590: [docs]: add docs for `onToolsAdded` & `onToolsRemoved` (#3148)
what changed added docs for onToolsAdded() & onToolsRemoved() hooks also updated the docs test to remove these events from ignored list Summary by cubic Adds reference documentation for the onToolsAdded and onToolsRemoved hooks for TypeScript, Python, and Go, and removes the docs test exception that previously skipped coverage for these hooks. Documents the subscription lifecycle, tool identity rules, and callback signatures for page.onToolsAdded() and page.onToolsRemoved().
Stagehand-python@4.2.0a0.dev1589: [chore]: fix typing in docs test (#3145)
why unspecified type was causing TS to infer it incorrectly what changed specified the correct type Summary by cubic Fixes a TypeScript type inference issue in the docs SDK reference test by explicitly typing the sdkSlugs set as Set. Written for commit 71688c1. Summary will update on new commits.
Release stagehand-python@4.2.0a0.dev1588 · browserbase/stagehand
[fix]: discover extension automatically & deprecate extension id para
Stagehand-python@4.2.0a0.dev1587: Point eval sites at Vercel instead of GitHub Pages (#3141)
GitHub Pages has been unreliable for the eval sites, so they now also deploy to Vercel at https://stagehand-eval-sites.vercel.app/. This PR swaps the host. Paths are unchanged: What changed (76 files) Every browserbase.github.io/stagehand-eval-sites/ URL across evals tasks, sdk-ts tests, the TS/Python/Go examples and the docs is now the Vercel URL. git grep 'github\.io/stagehand-eval-sites' matches only get_url.ts. packages/evals/core/tasks/page-info/get_url.ts stored the host as an escaped regex. Its allowlist now accepts both hosts.
Stagehand-python@4.2.0a0.dev1586: [chore]: disable proxies in CI (#3143)
Summary by cubic Disables Browserbase proxies in CI eval runs so tests use direct browser connections instead of proxied ones. Written for commit acd3b5b. Summary will update on new commits.
Stagehand-python@4.2.0a0.dev1585: docs: host DeepWiki README badge locally (#3136)
Summary Replace the externally hosted DeepWiki badge with a repository-local SVG. Use a static Ask DeepWiki badge styled to match the README badges; keep the DeepWiki destination unchanged. Set explicit dimensions to match the neighboring 32px badges. Why The external badge endpoint returns HTTP 429 with a Vercel challenge, consistent with the broken image in the README. Hosting the badge locally removes that external dependency. Validation git diff --check passed. SVG XML parsing passed.
Release stagehand-python@4.2.0a0.dev1584 · browserbase/stagehand
feat(sdk-go): add Browserbase ClientOptions to launch and connect (#3
Stagehand-python@4.2.0a0.dev1582: [Claimed #3105] evals: add a static observation fixture recorder (#3106)
Mirrored from external contributor PR #3105 after approval by @miguelg719. Original author: @alanagoyal Original PR: #3105 Approved source head SHA: b48795840bce28f4c26f48b35183bb035a1ea519 @alanagoya
Stagehand-python@4.2.0a0.dev1580: [chore]: ignore docs test on cua toolset page (#3134)
why there is no golang sdk that applies here, so we can ignore the test that checks for a golang tab what changed omitted the cua toolset page form sdk reference test Summary by cubic Adjusts the SDK reference test so the Claude CUA toolset page no longer requires a Go snippet, since that toolset has no Go SDK. Adds per-page language requirements so pages can support a subset of the standard TypeScript, Python, and Go set. Updates the test to fail only when a page misses a language it actually supports.
Stagehand-python@4.2.0a0.dev1579: docs: add claude toolset integration guide (#3122)
Summary Add a Claude Toolset integration guide to the Stagehand v4 docs. Why Developers need setup instructions for connecting Claude to local Chrome or Browserbase through the published Stagehand Claude SDK packages. What changed Add TypeScript and Python installation, browser-task examples, session cleanup, Browserbase configuration, and domain-filtering limitations. Link the guide from navigation and integration overviews, distinguishing its native toolset from the shared MCP tool contract.
Release stagehand-python@4.2.0a0.dev1578 · browserbase/stagehand
[chore]: bump various transitive JS deps across monorepo (#3115)
Stagehand-python@4.2.0a0.dev1577: [Claimed #2789] docs: Cookbooks tab for Stagehand workflows (#3116)
Mirrored from external contributor PR #2789 after approval by @charlypoly. Original author: @antonvishal Original PR: #2789 Approved source head SHA: 5d32c83ec49a1d1dfb1ce40d42a74593196635bc @anto
Stagehand-python@4.2.0a0.dev1576: [refactor]: use `progress` tracker in `act`/`extract`/`observe` (#3109)
why this PR wires the progress tracker into act(), extract(), observe(). before this PR, act(), observe(), & extract() had their own timeout tracking mechanism, which only checked remaining time between between major IO steps. a stalled snapshot, model request, or browser action could keep the call waiting past its timeout. nested work also did not share the caller's remaining time. what changed gave each call one shared deadline across snapshots, cache reads & writes, model requests, & browser work. each step gets only the time left.
Release stagehand-python@4.2.0a0.dev1575 · browserbase/stagehand
chore(python): add keywords and classifiers for Pypi discoverability
Stagehand-python@4.2.0a0.dev1574: Harden Codex CUA facade isolation, evidence, and tool logging (#2907)
Stack Top-of-stack child of #2906 (evals/consolidation-17-gemini-cua). Review against that immediate parent, not main. Summary Port the remaining focused Codex/Stagehand facade hardening from the experimental Codex worktree without replacing the consolidation stack's newer shared runtime. Add opt-in facade JSONL tool logging: request/session IDs, actual arguments/code, paired starts/ends, timing, errors, bounded result previews and browser readiness. Never write logs to MCP stdout; redact known credentials and omit image payloads.
Stagehand-python@4.2.0a0.dev1565: docs: add Amel Bajramovic to README acknowledgements (#3095)
Adds Amel Bajramovic to the contributors list in the README Acknowledgements section.
Release stagehand-python@4.2.0a0.dev1564 · browserbase/stagehand
feat(eve): publish native Browserbase extension with session cleanup
Stagehand-python@4.2.0a0.dev1563: fix(ci): push Browse tags despite npm propagation delay (#3015)
Browse 0.10.0 uploaded successfully in the Release workflow, but the following tag step saw a temporary npm 404 and returned unpublished. The job finished green without pushing the release tag. Push the validated local tag that Changesets creates after a successful upload without requiring immediate registry visibility. When no local tag exists, retain the registry check and original version-bump commit guard for recovery.
Stagehand-python@4.2.0a0.dev1562: [feat]: expose `timeout` param in `page.snapshot()` (#3083)
why page.snapshot() had no timeout param, nor did some of its internal helpers. the helpers that it calls are also called by other functions in the codebase that require timeout handling. this PR wires the progress object through the shared downstream helpers, and also exposes a user facing timeout param in page.snapshot() what changed added a snapshot timeout in milliseconds to typescript, python, & go. omission or 0 keeps snapshots unlimited. made one deadline cover frame readiness, element lookup, document & accessibility tree reads,
Release stagehand-python@4.2.0a0.dev1561 · browserbase/stagehand
ci: restore Browse alphas for CLI changes (#3082)
Release stagehand-python@4.2.0a0.dev1560 · browserbase/stagehand
docs(examples): add packages/examples/ for stagehand.dev/showcase (
Release stagehand-python@4.2.0a0.dev1558 · browserbase/stagehand
[feat]: evals welcome — animated onboarding on the agent benchmarks
Release stagehand-python@4.2.0a0.dev1557 · browserbase/stagehand
[fix]: enforce screenshot & pdf deadlines across downstream steps
Stagehand-python@4.2.0a0.dev1556: [feat]: expose timeout param in ts & protocol (#3033)
why this PR adds the timeout param to the protocol, & exposes it publicly in ts. the default timeout is 20 seconds what changed added optional timeout settings to all 17 terminal locator methods,
Stagehand-python@4.2.0a0.dev1551: docs: fix broken links in Go, Java, and evals pages (#3076)
why Three links in the v3 docs are broken, and two Go code samples were rewritten into links, so they no longer show valid Go. what changed v3/sdk/go.mdx: restore param.Override[T](value) and param.Override[stagehand.FooParams](12). Both had been turned into links to non-existent files (stagehand-go/blob/main/value and /12). The restored text matches the stagehand-go README. v3/sdk/java.mdx: the OkHttp logging interceptor link pointed at square/okhttp/tree/master. That repo's default branch is main, and master no longer resolves.
Stagehand-python@4.2.0a0.dev1550: docs: Prose guide fix and clarify purpose of template (#3077)
why Fixing a prose issue surfaced in another PR, and while in there, added clarity about the functions starter code and what could be replaced what changed Updates docs prose from "we recommend" to "Browserbase recommends" Specifies which node version Adds a note about the template code and what must stay vs be replaced test plan Summary by cubic Fixes prose in the deployment guide and clarifies that the Functions template is starter code you replace. Changes "we recommend" to "Browserbase recommends" and specifies
Stagehand-python@4.2.0a0.dev1549: Release browse@0.11.1 (#3041)
Release Browse independently of the Stagehand SDKs. Merging this PR publishes the CLI from the merged commit. 0.11.1 Patch Changes #3055 8308d8d Thanks @akeimach! - functions init now scaffolds a Stagehand project. It installs @browserbasehq/stagehand instead of playwright-core, installs the zod version that Stagehand uses, and writes a Stagehand starter function. #3055 8308d8d Thanks @akeimach! - Fix Functions builds that failed because of how functions publish generated package-lock.json or how functions init set up pnpm:
Stagehand-python@4.2.0a0.dev1548: docs: Update Stagehand deployment docs with Functions support (#3056)
why The release of Function Secrets enables us to support Stagehand deployments on Browserbase. This PR showcases that in the new deployment guide what changed test plan Summary by cubic Updates the Stagehand deployment guide to recommend Browserbase Functions with encrypted project secrets as the primary deployment path instead of Vercel. Adds setup, extension upload, Function development, local testing, publishing, secret attachment, invocation, and troubleshooting steps.
Stagehand-python@4.2.0a0.dev1547: fix(cli): Functions CLI updates for `init` and `publish` (#3055)
why Before Browserbase had secrets support, functions init would install a playwright template. But now we support secrets so we can update the starter template to showcase Stagehand. There were some rough edges around the functions publish command related to pnpm 11. Added a few updates so that the functions CLI works out of the box. what changed test plan It works if nothing in this path errors: [in stagehand repo] pnpm build && cd packages/cli
Stagehand-python@4.2.0a0.dev1546: [chore]: fix failing CI due to external website change (#3069)
why example.com changed, this broke some smoke tests in our ci what changed swapped it to a hosted eval site that is similar to example.com Summary by cubic Fixes failing CI smoke tests by replacing https://example.com with a hosted eval site that mirrors example.com across the Go, Python, and TypeScript SDK examples and the TypeScript Browserbase smoke test. Written for commit dfd525e. Summary will update on new commits.
Stagehand-python@4.2.0a0.dev1545: docs: reorganize integrations and add Stripe WebMCP guide (#3011)
Summary Make the integrations overview a general directory for connecting Stagehand to agents, frameworks, and application workflows. Organize the overview and sidebar into Agent Frameworks, CLI Agents, and Automations. Add dedicated overviews for Agent Frameworks and CLI Agents. Cover framework connections separately from MCP adapter setup for coding agents, with Pi documented as a native extension. Update navigation and security links, and replace the removed MCP best-practices entry with the CLI Agents guide.
Release stagehand-python@4.2.0a0.dev1544 · browserbase/stagehand
[chore]: use absolute gh URLs for readme links (#3066)
Stagehand-python@4.2.0a0.dev1543: feat: expose PDF rendering across Stagehand SDKs (#3030)
why Expose PDF rendering through the existing Stagehand SDK conventions after the internal extension implementation is in place. This is PR2 of 2, stacked directly on #3034 (amel/pdf-render-extension). Merge the parent first and follow the repository's stacked-PR handoff rules when moving this PR to main. what changed Register the page.pdf protocol operation and connect the extension router, controller, and runtime to the internal implementation from #3034. Replace its temporary native-CDP signature with the canonical protocol types.
Stagehand-python@4.2.0a0.dev1541: fix(extension): read text() from direct child text nodes (#2728) (#3052)
thanks @mikhail-koviazin for the contribution here! why The composed-tree XPath parser evaluates text() and . through the same helper, element.textContent. In XPath these are not the same thing: . is the string-value of the element, so it covers the whole subtree, while text() is the node-set of the element's direct child text nodes. This parser is not a rare path. It takes over whenever the document contains a shadow root anywhere, so a single unrelated web component on
Stagehand-python@4.2.0a0.dev1540: [Claimed #2738] fix(protocol): make telemetry export opt-in (#3045)
Mirrored from external contributor PR #2738 after approval by @miguelg719. Original author: @abhinavkr26104 Original PR: #2738 Approved source head SHA: e77c269fcc7ab33d2b76f213f26da62b77b1e826 @ab
Stagehand-python@4.2.0a0.dev1539: [docs]: change intro copy (#3048)
why clean up copy & test the editorial docs change workflow Summary by cubic Cleans up the introduction copy by removing redundant phrasing and tests the editorial docs change workflow. Written for commit aff9504. Summary will update on new commits.
Stagehand-python@4.2.0a0.dev1538: [chore]: separate docs previews from production publishing (#3042)
why SDK changes must include documentation, but merging those docs into main should not publish unreleased APIs to the public site what changed Add Mintlify previews for docs PRs targeting main and a persistent preview updated by docs pushes to main. Report the URL and wait for deployment success. Run docs reference tests and Mintlify validation independently of SDK path filters, including on docs-only PRs and production backports. Include Go SDK source in the docs test cache inputs. Add explicit main-only guards to SDK publishing jobs,
Stagehand-python@4.2.0a0.dev1537: fix: verify cached local Chrome debug port before trusting it (#2542)
What's the issue? Browse can fail to connect to a healthy local Chrome because it trusts an old browser connection URL saved in the profile's DevToolsActivePort file. The existing check only confirms that something is listening on the cached port; it does not confirm that the saved browser target still exists. For example, the file points to ws://127.0.0.1:9222/devtools/browser/old-id, while the running Chrome exposes /devtools/browser/new-id. Browse selects old-id, and the connection fails with a 404 or connection reset.
Stagehand-python@4.2.0a0.dev1536: Release browse@0.11.0 (#3022)
Release Browse independently of the Stagehand SDKs. Merging this PR publishes the CLI from the merged commit. 0.11.0 Minor Changes #3021 2c098f4 Thanks @AzamAbdul! - Add browse functions secrets attach to attach an existing project secret to a function by ID. #3021 2c098f4 Thanks @AzamAbdul! - Add browse cloud secrets create with public-key lookup, local encryption, and secret input from stdin, a named environment variable, or a hidden prompt. #3021 2c098f4 Thanks @AzamAbdul! - Add browse functions secrets detach to remove a f
Release stagehand-python@4.2.0a0.dev1535 · browserbase/stagehand
[fix]: wait for the locator world when a deep XPath crosses an iframe
Stagehand-python@4.2.0a0.dev1534: fix(cli): resolve template sources and align setup instructions (#2799)
1. What is the problem? browse templates clone playwright passes the public catalog slug playwright to the scaffolder, although the catalog entry identifies its source as playwright/quickstart-playwright. The scaffolder expects quickstart-playwright. Puppeteer and Selenium have the same mismatch. The printed setup instructions also ignore the generated project's package manager and Python environment: TypeScript always gets npm commands, and Python can get uv sync followed by bare python main.py. 2. Why does it matter, and what changes?
Stagehand-python@4.2.0a0.dev1533: feat(cli): add project and function secrets commands (#3021)
why Browse needs commands to manage project secrets and attach them to Functions. The seven component PRs were merged into agent/browse-v4-7-context-names; this PR brings those changes onto current main at fbcdf61. what changed Add browse cloud secrets commands to list, get, create, update, and delete secrets, including client-side encryption for create/update and password input support. Add browse functions secrets commands to attach, detach, and list secrets for a function.
Stagehand-python@4.2.0a0.dev1532: Release browse@0.10.0 (#3012)
Release Browse independently of the Stagehand SDKs. Merging this PR publishes the CLI from the merged commit. 0.10.0 Minor Changes #2835 38e3a20 Thanks @shrey150! - migrate the Browse CLI runtime to Stagehand V4 and remove the --return-xpath option from coordinate actions Summary by cubic Releases browse@0.10.0, publishing the Browse CLI independently from the Stagehand SDKs. Migrates the Browse CLI runtime to Stagehand V4. Removes the --return-xpath option from coordinate actions; scripts relying on it must update to the new output.
Stagehand-python@4.2.0a0.dev1531: Decouple Browse releases from the Stagehand SDKs (#3010)
Browse currently shares the SDK release PR and publisher. This separates it into a Release browse@… PR on release/browse and an independent publishing job. The remaining packages retain the existing Stagehand release group, including Python/Go releases and SDK alphas. The coordinator uses Changesets' official release planner, changelog writer, and publisher. It selects changesets by group and temporarily excludes other public packages from publishing. It also prevents pending Browse notes from blocking SDK publication.
Stagehand-python@4.2.0a0.dev1530: [AP-2925] Enable server-side caching by default in v4 (#2964)
v4 shipped with server-side caching opt-in, where v3 had it on by default. Anyone who upgraded without passing cache lost caching without an error. Change Both defaults flip to true, so v4 matches v3: caching runs unless the instance or the call opts out. Docs v4/best-practices/caching.mdx described opt-in, which this makes wrong. The v3 migration guide also mapped enableCaching → cache. enableCaching was a v2-era local option that v3 had already replaced with cacheDir; the server-side option v3 users actually had
Stagehand-python@4.2.0a0.dev1529: refactor(cli): remove coordinate XPath return flag (#2835)
Summary Remove the unsupported --return-xpath option from Browse's coordinate click, hover, scroll, and drag commands. The CLI rejects the flag, and strict driver schemas reject stale returnXPath payloads before performing a mouse action. Update the examples and the Browse minor changeset for the V4 migration and flag removal. XPath selectors and snapshot xpathMap remain supported. Scope The cursor overlay (#2869) and network sidecar (#2849) are already merged into main. This branch includes the final parent and reconciles
Stagehand-python@4.2.0a0.dev1528: fix(cli): restore V3 network capture through a CDP sidecar (#2849)
Summary Restore Browse V3 network-capture behavior on Stagehand V4 through a CLI-private CDP sidecar, without committing core Stagehand, its protocol, or generated SDKs to a public network-event schema. Stack (#2872) #2833 — exact Browse V3 baseline import #2834 — Stagehand V4 runtime and standard command parity #2869 — CLI-owned cursor overlay
Stagehand-python@4.2.0a0.dev1527: docs: restore Trendshift badge and add website banner (#2999)
Summary Restore the original Trendshift badge below the README badges. Add the latest Stagehand website screenshot immediately afterward, linked to stagehand.dev. Store the screenshot as media/stagehand-website-banner.png. Validation git diff --check passed. Screenshot visually inspected and copied without modification. Formatter not run: local oxfmt executable is unavailable. Documentation-only change. Summary by cubic Restores the Trendshift badge below the existing README badges and adds
Stagehand-python@4.2.0a0.dev1526: [Claimed #2987] Improve Python SDK type checking with ty (#2992)
Mirrored from external contributor PR #2987 after approval by @miguelg719. Original author: @antonvishal Original PR: #2987 Approved source head SHA: ff8d7771e96c597b1adbcf7819fbe179b84d640a @anto