streamline release (#1095)

* update release

* more docs

* dates
This commit is contained in:
Chris Tate
2026-03-30 19:53:53 -05:00
committed by GitHub
parent cc9da7aff7
commit 6c93480d0d
15 changed files with 372 additions and 634 deletions
-23
View File
@@ -1,23 +0,0 @@
# Changesets
This project uses [Changesets](https://github.com/changesets/changesets) for versioning and changelog generation.
## Adding a changeset
When you make a change that should be released, run:
```bash
pnpm changeset
```
This will prompt you to:
1. Select the type of change (patch, minor, major)
2. Write a summary of your changes
The changeset file will be committed with your PR.
## Release process
When changesets are merged to `main`, the release workflow will:
1. Create a "Version Packages" PR that updates version numbers and changelogs
2. When that PR is merged, packages are automatically published to npm
-11
View File
@@ -1,11 +0,0 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
+41 -31
View File
@@ -10,12 +10,40 @@ concurrency: ${{ github.workflow }}-${{ github.ref }}
permissions:
contents: write
pull-requests: write
jobs:
# Build native binaries for all platforms first
check-release:
name: Check for new version
runs-on: ubuntu-latest
outputs:
should_release: ${{ steps.check.outputs.should_release }}
version: ${{ steps.check.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Compare package.json version to npm
id: check
run: |
LOCAL_VERSION=$(node -p "require('./package.json').version")
echo "Local version: $LOCAL_VERSION"
NPM_VERSION=$(npm view agent-browser version 2>/dev/null || echo "0.0.0")
echo "npm version: $NPM_VERSION"
if [ "$LOCAL_VERSION" != "$NPM_VERSION" ]; then
echo "Version changed: $NPM_VERSION -> $LOCAL_VERSION"
echo "should_release=true" >> "$GITHUB_OUTPUT"
else
echo "Version unchanged, skipping release"
echo "should_release=false" >> "$GITHUB_OUTPUT"
fi
echo "version=$LOCAL_VERSION" >> "$GITHUB_OUTPUT"
build-binaries:
name: Build ${{ matrix.name }}
needs: check-release
if: needs.check-release.outputs.should_release == 'true'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
@@ -137,19 +165,13 @@ jobs:
path: artifacts/${{ matrix.binary }}
retention-days: 7
# Create release PR or publish to npm (with binaries)
release:
name: Release
needs: build-binaries
publish:
name: Publish to npm
needs: [check-release, build-binaries]
runs-on: ubuntu-latest
outputs:
published: ${{ steps.changesets.outputs.published }}
publishedPackages: ${{ steps.changesets.outputs.publishedPackages }}
steps:
- name: Checkout Repo
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup pnpm
uses: pnpm/action-setup@v4
@@ -163,7 +185,7 @@ jobs:
cache: pnpm
registry-url: 'https://registry.npmjs.org'
- name: Install Dependencies
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Download all binary artifacts
@@ -191,7 +213,7 @@ jobs:
"agent-browser-darwin-x64"
"agent-browser-darwin-arm64"
)
MIN_SIZE=100000 # Binaries should be at least 100KB
MIN_SIZE=100000
ERRORS=0
for binary in "${EXPECTED_BINARIES[@]}"; do
if [ ! -f "bin/$binary" ]; then
@@ -213,29 +235,18 @@ jobs:
fi
echo "All 7 platform binaries present and valid"
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
version: pnpm ci:version
publish: pnpm ci:publish
title: 'chore: version packages'
commit: 'chore: version packages'
- name: Publish to npm
run: pnpm publish --no-git-checks
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_VERCEL_TOKEN_ELEVATED }}
# Create GitHub release with binaries after npm publish
github-release:
name: Create GitHub Release
needs: release
if: needs.release.outputs.published == 'true'
needs: [check-release, publish]
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: main
- name: Download all artifacts
uses: actions/download-artifact@v4
@@ -282,10 +293,9 @@ jobs:
- name: Create GitHub Release
run: |
VERSION=$(node -p "require('./package.json').version")
VERSION="${{ needs.check-release.outputs.version }}"
TAG="v$VERSION"
# Check if release already exists
if gh release view "$TAG" &>/dev/null; then
echo "Release $TAG already exists, uploading assets..."
gh release upload "$TAG" bin/agent-browser-* dashboard.zip --clobber
+51 -5
View File
@@ -9,6 +9,7 @@ This project uses **pnpm**. Always use `pnpm` instead of `npm` or `yarn` for ins
## Code Style
- Do not use emojis in code, output, or documentation. Unicode symbols (✓, ✗, →, ⚠) are acceptable.
- In documentation and markdown, never use double hyphens (`--`) as a dash. Use an emdash (—) sparingly when needed. Prefer rewriting the sentence to avoid dashes entirely.
- CLI colored output uses `cli/src/color.rs`. This module respects the `NO_COLOR` environment variable. Never use hardcoded ANSI color codes.
- CLI flags must always use kebab-case (e.g., `--auto-connect`, `--allow-file-access`). Never use camelCase for flags (e.g., `--autoConnect` is wrong).
@@ -16,10 +17,10 @@ This project uses **pnpm**. Always use `pnpm` instead of `npm` or `yarn` for ins
When adding or changing user-facing features (new flags, commands, behaviors, environment variables, etc.), update **all** of the following:
1. `cli/src/output.rs` -- `--help` output (flags list, examples, environment variables)
2. `README.md` -- Options table, relevant feature sections, examples
3. `skills/agent-browser/SKILL.md` -- so AI agents know about the feature
4. `docs/src/app/` -- the Next.js docs site (MDX pages)
1. `cli/src/output.rs` `--help` output (flags list, examples, environment variables)
2. `README.md` Options table, relevant feature sections, examples
3. `skills/agent-browser/SKILL.md` so AI agents know about the feature
4. `docs/src/app/` the Next.js docs site (MDX pages)
5. Inline doc comments in the relevant source files
This applies to changes that either human users or AI agents would need to know about. Do not skip any of these locations.
@@ -31,6 +32,51 @@ In the `docs/src/app/` MDX files, always use HTML `<table>` syntax for tables (n
- Never use native browser dialogs (`alert`, `confirm`, `prompt`). Use shadcn/ui components (`Dialog`, `AlertDialog`, etc.) instead.
- Use param-case (kebab-case) for all file and folder names (e.g., `session-tree.tsx`, not `SessionTree.tsx`). The `ui/` directory follows shadcn conventions which already uses param-case.
## Releasing
Releases are manual, single-PR affairs. There is no changesets automation. The maintainer controls the changelog voice and format.
To prepare a release:
1. Create a branch (e.g. `prepare-v0.24.0`)
2. Bump `version` in `package.json`
3. Run `pnpm version:sync` to update `cli/Cargo.toml`, `cli/Cargo.lock`, and `packages/dashboard/package.json`
4. Write the changelog entry in `CHANGELOG.md` at the top, under a new `## <version>` heading
5. Add a matching entry to `docs/src/app/changelog/page.mdx` at the top (below the `# Changelog` heading)
6. Open a PR and merge to `main`
When the PR merges, CI compares `package.json` version to what's on npm. If it differs, it builds all 7 platform binaries, publishes to npm, and creates the GitHub release automatically.
### Writing the changelog
Review the git log since the last release and write the entry in `CHANGELOG.md`. Follow the existing format and voice. Group changes under `### New Features`, `### Bug Fixes`, `### Improvements`, etc. Bold the feature/fix name, then describe it concisely. Reference PR numbers in parentheses.
Example:
```markdown
## 0.24.0
### New Features
- **Foo command** - Added `foo` command for bar (#1234)
### Bug Fixes
- Fixed **baz** not working when qux is enabled (#1235)
```
Do not prefix entries with commit hashes. Do not use the changesets `### Patch Changes` / `### Minor Changes` headings. Use descriptive section names instead.
### Docs changelog
The docs changelog at `docs/src/app/changelog/page.mdx` mirrors `CHANGELOG.md` but uses a slightly different format. Each entry uses:
- A `v` prefix on the version (e.g. `## v0.24.0`)
- A date line with the full date: `<p className="text-[#888] text-sm">March 30, 2026</p>`
- A `---` separator between entries
Match the existing style in that file.
## Architecture
This is a Rust codebase. The browser automation daemon lives in `cli/src/native/` (daemon, actions, browser, CDP client, snapshot, state). The `--engine` flag selects Chrome vs Lightpanda. The `install` command downloads Chrome from Chrome for Testing directly.
@@ -68,7 +114,7 @@ cd cli && cargo clippy # Lint
## Windows Debugging
A remote Windows Server 2022 EC2 instance is available for debugging Windows-specific issues. It uses AWS Systems Manager (SSM) -- no SSH, no open ports. Commands run via `aws ssm send-command` and return stdout/stderr.
A remote Windows Server 2022 EC2 instance is available for debugging Windows-specific issues. It uses AWS Systems Manager (SSM) with no SSH or open ports. Commands run via `aws ssm send-command` and return stdout/stderr.
### Prerequisites
+235 -33
View File
@@ -1,8 +1,210 @@
# Changelog
## v0.23.2
<p className="text-[#888] text-sm">March 30, 2026</p>
### New Features
- **Dashboard session creation** - Sessions can now be created directly from the dashboard UI. A new session dialog provides a unified selector grid for local engines (Chrome, Lightpanda) and cloud providers (Browserbase, Browserless, Browser Use, Kernel) with async creation, loading state, and error display (#1092)
- **Dashboard provider icons** - The session sidebar now shows the provider or engine icon for each session, making it easy to identify which backend a session is using (#1092)
### Bug Fixes
- Fixed **Browser Use** provider using an intermediate API call instead of connecting directly via WSS, which caused connection failures (#1092)
- Fixed **Browserbase** provider not sending an explicit JSON body and `Content-Type` header, causing session creation to fail (#1092)
- Fixed **provider navigation** hanging because `wait_for_lifecycle` waited for page load events that remote providers may not emit. Navigation with `--provider` now automatically sets `waitUntil=none` (#1092)
- Fixed **remote CDP connections** timing out by increasing the CDP connect timeout from 10s to 25s for cloud providers (#1092)
- Fixed **zombie daemon processes** not being cleaned up when a provider connection fails during session creation from the dashboard (#1092)
---
## v0.23.1
<p className="text-[#888] text-sm">March 30, 2026</p>
### New Features
- **Auto-dismissal for alert and beforeunload dialogs** - JavaScript `alert()` and `beforeunload` dialogs are now automatically accepted to prevent the agent from blocking indefinitely. `confirm` and `prompt` dialogs still require explicit `dialog accept/dismiss` commands. Disable with `--no-auto-dialog` flag or `AGENT_BROWSER_NO_AUTO_DIALOG` environment variable (#1075)
- **Puppeteer browser cache fallback** - Chrome discovery now searches `~/.cache/puppeteer/chrome/` (or `PUPPETEER_CACHE_DIR`) for Chrome binaries, so users with an existing Puppeteer installation can use agent-browser without a separate install step (#1088)
- **Console output improvements** - `console.log` of objects now shows the actual object preview (e.g. `{userId: "abc", count: 42}`) instead of `"Object"`. JSON output includes a raw `args` array for programmatic access (#1040)
### Bug Fixes
- Fixed **same-document navigation** (e.g. SPA hash routing) hanging forever because `wait_for_lifecycle` waited for a `Page.loadEventFired` that never fires on same-document navigations (#1059)
- Fixed **save_state** only capturing cookies and localStorage for the current origin, silently dropping cross-domain data (e.g. SSO/CAS auth cookies). Now uses `Network.getAllCookies` and collects localStorage from all visited origins (#1064)
- Fixed **externally opened tabs** not appearing in `tab list` when using `--cdp` mode. Tabs opened by the user or another CDP client are now detected and tracked (#1042)
- Fixed **dashboard server** not picking up installed files without a restart. `dashboard install` now takes effect immediately on a running server (#1066)
- Fixed **Windows Chrome extraction** failing because zip path normalization used forward slashes while the extraction code expected backslashes (#1088)
---
## v0.23.0
<p className="text-[#888] text-sm">March 27, 2026</p>
### New Features
- **Observability dashboard** - Added a local web UI (`dashboard`) that shows live browser viewports, command activity feeds, console output, network requests, storage, and extensions for all sessions. Manage it with `dashboard start`, `dashboard stop`, and `dashboard install`. The dashboard runs as a standalone background process and all sessions stream to it automatically (#1034)
```bash
agent-browser dashboard install
agent-browser dashboard start
agent-browser open example.com # session appears in dashboard
agent-browser dashboard stop
```
- **Runtime stream management** - Added `stream enable`, `stream disable`, and `stream status` commands to control WebSocket streaming at runtime. Streaming is now always enabled by default; `AGENT_BROWSER_STREAM_PORT` overrides the port instead of toggling the feature (#951)
- **Close all sessions** - Added `close --all` flag to close every active browser session at once
### Bug Fixes
- Fixed **Lightpanda engine** compatibility (#1050)
- Fixed **Windows daemon TCP bind** failing when Hyper-V reserves the port by falling back to an OS-assigned port and writing it to a `.port` file (#1041)
- Fixed **Windows dashboard relay** using Unix socket instead of TCP (#1038)
- Fixed **radio/checkbox elements** being dropped from compact snapshot tree because the `ref=` check required a leading `[` that those elements lack (#1008)
---
## v0.22.3
<p className="text-[#888] text-sm">March 25, 2026</p>
### Bug Fixes
- **Re-apply download behavior on recording context** - Fixed an issue where downloads were silently dropped in recording contexts because `Browser.setDownloadBehavior` set at launch only applied to the default context. The download behavior is now re-applied when a new recording context is created (#1019)
- **Reap zombie Chrome process and fast-detect crash for auto-restart** - Added a non-blocking process-exit check before attempting CDP connection checks. This prevents a 3-second CDP timeout when Chrome has already crashed or exited, enabling faster detection and auto-restart of the browser (#1023)
- **Route keyboard `type` through text input** - Fixed keyboard `type` subaction to correctly route through the text input handler, and added support for an `insertText` subaction using `Input.insertText` (#1014)
- **Handle `--clear` flag in `console` command** - Fixed the `console` command to accept and process a `clear` parameter, allowing console event history to be cleared (#1015)
---
## v0.22.2
<p className="text-[#888] text-sm">March 24, 2026</p>
### New Features
- **Dialog status command** - Added `dialog status` command to check whether a JavaScript dialog is currently open (#999)
- **Dialog warning field** - Command responses now include a `warning` field when a JavaScript dialog is pending, indicating the dialog type and message (#999)
### Improvements
- **Standard proxy environment variables** - The proxy setting now automatically falls back to standard environment variables (`HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`, and their lowercase variants), with `NO_PROXY`/`no_proxy` respected for bypass rules (#1000)
- **Font packages for `--with-deps`** - Installing with `--with-deps` now includes CJK and emoji font packages on Linux (Debian, RPM, and yum-based distros) to prevent missing glyphs when rendering international content (#1002)
### Bug Fixes
- Fixed `state show` always failing with "Missing 'path' parameter" due to a mismatched JSON field name (#994)
- Fixed `console` command returning only `Done` due to a JSON field name mismatch in the response (#986)
- Fixed browser-domain CDP events being dropped during downloads due to a `sessionId` mismatch (#998)
- Fixed proxy authentication by handling credentials via the CDP `Fetch.authRequired` event rather than passing them inline (#1000)
---
## v0.22.1
<p className="text-[#888] text-sm">March 24, 2026</p>
### Bug Fixes
- Fixed **modifier key chords** (e.g. `Control+a`, `Shift+Enter`, `Control+Shift+a`) not being handled correctly when using `press`. Modifier keys are now parsed and forwarded as CDP modifier bitmasks rather than treated as part of the key name (#980)
- Fixed **query parameters being dropped** from `--cdp` HTTP URLs (e.g. `http://host:9222?mode=Hello`). Query strings are now preserved and forwarded to the remote CDP endpoint (#982)
---
## v0.22.0
<p className="text-[#888] text-sm">March 23, 2026</p>
### New Features
- **Cross-origin iframe support** - Added support for snapshots and interactions within cross-origin iframes via `Target.setAutoAttach` (#949)
- **Network request detail and filtering** - Added `network request <requestId>` command to view full request/response detail, and new filtering options for `network requests` including `--type` (e.g. `xhr,fetch`), `--method` (e.g. `POST`), and `--status` (e.g. `2xx`, `400-499`) (#935)
```bash
agent-browser network requests --type xhr,fetch --method POST
agent-browser network request <requestId>
```
### Improvements
- **Snapshot usability** - Reduced AI cognitive load by filtering semantic noise from snapshot output; cursor-interactive elements are now included by default, making the `-C` flag unnecessary (#968)
- **Upgrade command** - Improved robustness of installation method detection in the upgrade command (#960)
- **Target tracking** - Enhanced target tracking and page information handling for more reliable browser session management (#969)
### Bug Fixes
- Fixed **viewport dimensions** being reported incorrectly in streaming status messages and screencast (#952)
- Fixed **`find` command** flags such as `--exact` and `--name` leaking into fill values when used with fill actions (#955)
- Fixed **state commands** incorrectly starting the daemon when no `session_name` is provided (#677, #964)
- Fixed **auto-connect** triggering when the daemon is already running, preventing duplicate connections (#971)
- Fixed **Enter key press** not working by adding a text field to `keyDown` events (#972)
- Fixed **download command** to properly handle absolute paths and correctly click target elements (#970)
### Breaking Changes
- The `-C` / `--cursor` flag for `snapshot` is deprecated; cursor-interactive elements are now included by default and the flag has no additional effect (#968)
---
## v0.21.4
<p className="text-[#888] text-sm">March 20, 2026</p>
### Bug Fixes
- **Auth login readiness** - `agent-browser auth login` now navigates with `load`, waits for usable login form selectors, and uses staged username detection (targeted email/username selectors first, then broad text-input fallback). This reduces SPA timing failures, avoids false matches on unrelated text fields, and prevents `networkidle` hangs on pages with continuous background requests.
---
## v0.21.3
<p className="text-[#888] text-sm">March 20, 2026</p>
### Bug Fixes
- **WebSocket keepalive for remote browsers** - Added WebSocket Ping frames and TCP `SO_KEEPALIVE` to prevent CDP connections from being silently dropped by intermediate proxies during idle periods (#936)
- **XPath selector support** - Fixed element resolution to correctly handle the `xpath=` selector prefix (#908)
### Performance
- **Fast-path for identical snapshots** - Short-circuits the Myers diff algorithm when comparing a snapshot to itself, avoiding unnecessary computation in retry and loop workloads (#922)
---
## v0.21.2
<p className="text-[#888] text-sm">March 18, 2026</p>
### Bug Fixes
- **Deduplicate text content in snapshots** - Fixed an issue where duplicate text content appeared in page snapshots (#909)
- **Native mouse drag state** - Fixed incorrect raw native mouse drag state not being properly tracked across `down`, `move`, and `up` events (#872)
- **Chrome headless launch failures** - Fixed browser launch failures caused by the `--enable-unsafe-swiftshader` flag in Chrome headless mode (#915)
- **Origin-scoped `--headers` persistence** - Restored correct persistence of origin-scoped headers set via `--headers` across navigation commands (#894)
- **Relative URLs in WebSocket domain filter** - Fixed handling of relative URLs in the WebSocket domain filter script (#624)
---
## v0.21.1
<p className="text-[#888] text-sm">March 18, 2026</p>
### New Features
- **HAR 1.2 network capture** - Added commands to capture and export network traffic in HAR 1.2 format, including accurate request/response timing, headers, body sizes, and resource types sourced from Chrome DevTools Protocol events (#864)
- **Built-in `upgrade` command** - Added `agent-browser upgrade` to self-update the CLI; automatically detects your installation method (npm, Homebrew, or Cargo) and runs the appropriate update command (#898)
```bash
agent-browser upgrade
```
---
## v0.21.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 17, 2026</p>
### New Commands
@@ -54,7 +256,7 @@ agent-browser network har stop ./trace.har
## v0.20.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 13, 2026</p>
### Full Native Rust
@@ -115,7 +317,7 @@ agent-browser snapshot
## v0.19.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 13, 2026</p>
### New Features
@@ -155,7 +357,7 @@ agent-browser screenshot --screenshot-format jpeg --screenshot-quality 80
## v0.18.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 12, 2026</p>
### New Features
@@ -192,7 +394,7 @@ agent-browser get cdp-url
## v0.17.1
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 9, 2026</p>
### Improvements
@@ -203,7 +405,7 @@ agent-browser get cdp-url
## v0.17.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 8, 2026</p>
### New Features
@@ -235,7 +437,7 @@ agent-browser --engine lightpanda open example.com
## v0.16.0
<p className="text-[#888] text-sm">March 2026</p>
<p className="text-[#888] text-sm">March 3, 2026</p>
### New Features
@@ -291,7 +493,7 @@ See the [Native Mode](/native-mode) page for full details.
## v0.15.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 25, 2026</p>
### New Features
@@ -327,7 +529,7 @@ Six new environment variables for security configuration: `AGENT_BROWSER_CONTENT
## v0.14.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 23, 2026</p>
### New Features
@@ -351,7 +553,7 @@ agent-browser --color-scheme dark open https://example.com
## v0.13.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 20, 2026</p>
### New Features
@@ -367,7 +569,7 @@ agent-browser diff url https://staging.example.com https://prod.example.com
## v0.12.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 18, 2026</p>
### New Features
@@ -381,7 +583,7 @@ agent-browser screenshot --annotate
## v0.11.1
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 18, 2026</p>
### Documentation
@@ -391,7 +593,7 @@ agent-browser screenshot --annotate
## v0.11.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 17, 2026</p>
### New Features
@@ -408,7 +610,7 @@ agent-browser screenshot --annotate
## v0.10.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 13, 2026</p>
### New Features
@@ -431,7 +633,7 @@ agent-browser state clear myapp
## v0.9.4
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 13, 2026</p>
### Bug Fixes
@@ -441,7 +643,7 @@ agent-browser state clear myapp
## v0.9.3
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 12, 2026</p>
### Improvements
@@ -452,7 +654,7 @@ agent-browser state clear myapp
## v0.9.2
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 10, 2026</p>
### Improvements
@@ -464,7 +666,7 @@ agent-browser state clear myapp
## v0.9.1
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 5, 2026</p>
### New Features
@@ -480,7 +682,7 @@ agent-browser snapshot -C
## v0.9.0
<p className="text-[#888] text-sm">February 2026</p>
<p className="text-[#888] text-sm">February 3, 2026</p>
### New Features
@@ -502,7 +704,7 @@ agent-browser swipe up
## v0.8.10
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">February 2, 2026</p>
### Improvements
@@ -513,7 +715,7 @@ agent-browser swipe up
## v0.8.9
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">February 2, 2026</p>
### Improvements
@@ -523,7 +725,7 @@ agent-browser swipe up
## v0.8.8
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">February 2, 2026</p>
### Improvements
@@ -534,7 +736,7 @@ agent-browser swipe up
## v0.8.7
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">February 2, 2026</p>
### Bug Fixes
@@ -546,7 +748,7 @@ agent-browser swipe up
## v0.8.6
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 31, 2026</p>
### Bug Fixes
@@ -557,7 +759,7 @@ agent-browser swipe up
## v0.8.5
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 29, 2026</p>
### Bug Fixes
@@ -568,7 +770,7 @@ agent-browser swipe up
## v0.8.4
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 27, 2026</p>
### Bug Fixes
@@ -578,7 +780,7 @@ agent-browser swipe up
## v0.8.3
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 27, 2026</p>
### Improvements
@@ -590,7 +792,7 @@ agent-browser swipe up
## v0.8.2
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 26, 2026</p>
### Bug Fixes
@@ -601,7 +803,7 @@ agent-browser swipe up
## v0.8.1
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 26, 2026</p>
### Improvements
@@ -612,7 +814,7 @@ agent-browser swipe up
## v0.8.0
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 26, 2026</p>
### New Features
@@ -661,7 +863,7 @@ agent-browser cookies set token "xyz" --domain .example.com --path /api --expire
## v0.7.1
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 23, 2026</p>
### Bug Fixes
@@ -671,7 +873,7 @@ agent-browser cookies set token "xyz" --domain .example.com --path /api --expire
## v0.7.0
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 23, 2026</p>
### New Features
@@ -735,7 +937,7 @@ agent-browser --proxy-bypass "localhost,*.internal" open example.com
## v0.6.0
<p className="text-[#888] text-sm">January 2026</p>
<p className="text-[#888] text-sm">January 18, 2026</p>
### New Features
+7
View File
@@ -0,0 +1,7 @@
import { pageMetadata } from "@/lib/page-metadata";
export const metadata = pageMetadata("dashboard");
export default function Layout({ children }: { children: React.ReactNode }) {
return children;
}
+1 -1
View File
@@ -68,7 +68,7 @@ export function Header() {
>
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" />
</svg>
<span>23k</span>
<span>25k</span>
</a>
<a
href="https://www.npmjs.com/package/agent-browser"
+1
View File
@@ -31,6 +31,7 @@ export const navigation: NavSection[] = [
title: "Features",
items: [
{ name: "Sessions", href: "/sessions" },
{ name: "Dashboard", href: "/dashboard" },
{ name: "Diffing", href: "/diffing" },
{ name: "CDP Mode", href: "/cdp-mode" },
{ name: "Streaming", href: "/streaming" },
+1
View File
@@ -10,6 +10,7 @@ export const PAGE_TITLES: Record<string, string> = {
sessions: "Sessions",
diffing: "Diffing",
"cdp-mode": "CDP Mode",
dashboard: "Dashboard",
streaming: "Streaming",
profiler: "Profiler",
ios: "iOS Simulator",
+1 -6
View File
@@ -22,9 +22,6 @@
"build:docker": "docker build -t agent-browser-builder -f docker/Dockerfile.build .",
"release": "npm run version:sync && npm run build:all-platforms && npm publish",
"postinstall": "node scripts/postinstall.js",
"changeset": "changeset",
"ci:version": "changeset version && pnpm run version:sync && pnpm install --no-frozen-lockfile",
"ci:publish": "pnpm run version:sync && changeset publish",
"build:dashboard": "cd packages/dashboard && pnpm build"
},
"keywords": [
@@ -45,7 +42,5 @@
"url": "https://github.com/vercel-labs/agent-browser/issues"
},
"homepage": "https://agent-browser.dev",
"devDependencies": {
"@changesets/cli": "^2.29.8"
}
"devDependencies": {}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "dashboard",
"version": "0.22.2",
"version": "0.23.2",
"private": true,
"scripts": {
"dev": "next dev",
+6 -520
View File
File diff suppressed because it is too large Load Diff
+13 -1
View File
@@ -27,10 +27,22 @@ if (!cargoVersionMatch) {
const cargoVersion = cargoVersionMatch[1];
// Read dashboard package.json version
const dashboardPkg = JSON.parse(readFileSync(join(rootDir, 'packages/dashboard/package.json'), 'utf-8'));
const dashboardVersion = dashboardPkg.version;
const mismatches = [];
if (packageVersion !== cargoVersion) {
mismatches.push(` cli/Cargo.toml: ${cargoVersion}`);
}
if (packageVersion !== dashboardVersion) {
mismatches.push(` packages/dashboard: ${dashboardVersion}`);
}
if (mismatches.length > 0) {
console.error('Version mismatch detected!');
console.error(` package.json: ${packageVersion}`);
console.error(` cli/Cargo.toml: ${cargoVersion}`);
for (const m of mismatches) console.error(m);
console.error('');
console.error("Run 'pnpm run version:sync' to fix this.");
process.exit(1);
+12
View File
@@ -44,6 +44,18 @@ if (cargoVersionRegex.test(cargoToml)) {
process.exit(1);
}
// Update packages/dashboard/package.json
const dashboardPkgPath = join(rootDir, "packages", "dashboard", "package.json");
const dashboardPkg = JSON.parse(readFileSync(dashboardPkgPath, "utf-8"));
if (dashboardPkg.version !== version) {
const oldVersion = dashboardPkg.version;
dashboardPkg.version = version;
writeFileSync(dashboardPkgPath, JSON.stringify(dashboardPkg, null, 2) + "\n");
console.log(` Updated packages/dashboard/package.json: ${oldVersion} -> ${version}`);
} else {
console.log(` packages/dashboard/package.json already up to date`);
}
// Update Cargo.lock to match Cargo.toml
if (cargoTomlUpdated) {
try {