Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
9ddbc13
feat: dev-browser CLI
SawyerHood Mar 19, 2026
83ab897
release: v0.2.0
SawyerHood Mar 19, 2026
80880ab
fix: build daemon bundles before Rust compilation in release workflow
SawyerHood Mar 19, 2026
207ceea
release: v0.2.1 (#58)
SawyerHood Mar 19, 2026
a4574ac
release: v0.2.2 (#60)
SawyerHood Mar 20, 2026
285b1cd
release: v0.2.2
SawyerHood Mar 20, 2026
6145abc
docs: add Claude Code permission allowlist instructions
SawyerHood Mar 23, 2026
a5d27d7
Merge branch 'dev-browser-claude-permissions' into main
SawyerHood Mar 23, 2026
0817e87
feat: add Windows x64 support and npm packaging (#66)
bestlux Mar 25, 2026
7f94dae
fix: resolve Windows CI test timeout in sandbox-file-io
SawyerHood Mar 25, 2026
afe83d8
chore: bump version to 0.2.3 (#67)
SawyerHood Mar 25, 2026
b8e592f
fix: increase timeout for navigation test on Windows CI
SawyerHood Mar 25, 2026
e000e13
docs: update changelog for 0.2.3
SawyerHood Mar 25, 2026
ea752ba
fix: bound listPages title lookup (#72)
sqrt121 Mar 26, 2026
06a5e7f
chore: dead code cleanup and update CLAUDE.md (#75)
SawyerHood Mar 26, 2026
f9ee211
fix: add install lock to prevent concurrent npm install corruption (#76)
SawyerHood Mar 26, 2026
1a66133
feat: add --ignore-https-errors flag for self-signed certs (#79)
SawyerHood Mar 26, 2026
bbc4bdd
test: add HTTPS test fixture for --ignore-https-errors (#81)
SawyerHood Mar 26, 2026
b12e2f7
fix: handle EBUSY on Windows test cleanup
SawyerHood Mar 26, 2026
7f68c17
release: v0.2.4 (#83)
SawyerHood Mar 26, 2026
94748ec
fix: make install-skill work in non-interactive environments (#84)
SawyerHood Mar 27, 2026
2122b02
fix: disable viewport emulation in headed mode (#87)
SawyerHood Mar 30, 2026
c1008d2
docs: add PowerShell examples for Windows users (#88)
SawyerHood Mar 30, 2026
bd45b56
release: v0.2.5
SawyerHood Mar 30, 2026
5459700
fix: pin playwright to 1.58.2 to prevent protocol drift (#95)
SawyerHood Apr 1, 2026
0d2bab6
release: v0.2.6
SawyerHood Apr 1, 2026
fc0184b
docs: recommend domcontentloaded for dev server navigation (#99)
SawyerHood Apr 3, 2026
5e58f2e
release: v0.2.7
SawyerHood Apr 9, 2026
1a572dd
docs: add demo video to README
SawyerHood Apr 9, 2026
9c85e46
docs: move demo video under key features
SawyerHood Apr 9, 2026
a2cbafb
feat: add page.cua (vision) and page.domCua (DOM-id) toolsets (#114)
SawyerHood Jun 5, 2026
edba515
fix: daemon hardening — frame cap, browser-stop lock, cold-start race…
SawyerHood Jun 5, 2026
aed153d
release: v0.2.8
SawyerHood Jun 5, 2026
5736fc2
ci: publish to npm via OIDC trusted publishing
SawyerHood Jun 5, 2026
a5ecfca
fix: bound browser requests and streamline agent actions (#118)
SawyerHood Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,20 @@
"source": "./",
"description": "Browser automation skill with persistent page state for developers and AI agents",
"strict": false,
"keywords": ["browser", "playwright", "automation", "testing", "debugging"],
"skills": ["./skills/dev-browser"]
"keywords": [
"browser",
"playwright",
"automation",
"testing",
"debugging"
],
"skills": [
"./skills/dev-browser"
]
}
],
"metadata": {
"description": "Marketplace for the dev-browser skill",
"version": "1.0.1"
"version": "0.2.8"
}
}
111 changes: 0 additions & 111 deletions .cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc

This file was deleted.

117 changes: 66 additions & 51 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,65 +11,80 @@ concurrency:
cancel-in-progress: true

jobs:
typecheck:
name: TypeScript
build-daemon:
name: Build Daemon Bundles
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
node-version: "20"

- name: Install dependencies
working-directory: skills/dev-browser
run: npm install

- name: TypeScript check
working-directory: skills/dev-browser
run: npx tsc --noEmit

test:
name: Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
version: latest
- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install dependencies
working-directory: skills/dev-browser
run: npm install

- name: Install Playwright browsers
working-directory: skills/dev-browser
run: npx playwright install --with-deps chromium

- name: Run tests
working-directory: skills/dev-browser
run: npm test
node-version: 22
- run: cd daemon && pnpm install
- run: cd daemon && pnpm run bundle
- run: cd daemon && pnpm run bundle:sandbox-client
- uses: actions/upload-artifact@v4
with:
name: daemon-bundles
path: |
daemon/dist/daemon.bundle.mjs
daemon/dist/sandbox-client.js

format:
name: Formatting
name: Format Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: latest
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
node-version: 22
- run: cd daemon && pnpm install
- run: cd daemon && pnpm run format:check
- uses: dtolnay/rust-toolchain@stable
- run: cd cli && cargo fmt -- --check

- name: Install dependencies
run: npm ci
daemon-tests:
name: Daemon (TypeScript + Tests)
needs: build-daemon
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: latest
- uses: actions/setup-node@v4
with:
node-version: 22
- uses: actions/download-artifact@v4
with:
name: daemon-bundles
path: daemon/dist/
- run: cd daemon && pnpm install
- run: cd daemon && pnpm exec tsc --noEmit
- run: cd daemon && pnpm exec playwright install chromium
- run: cd daemon && pnpm vitest run

- name: Check formatting
run: npm run format:check
cli:
name: CLI (Rust)
needs: build-daemon
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: daemon-bundles
path: daemon/dist/
- uses: dtolnay/rust-toolchain@stable
- run: cd cli && cargo build
- run: cd cli && cargo check
130 changes: 130 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Release

on:
push:
tags:
- 'v*'

jobs:
build-daemon:
name: Build Daemon Bundles
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: latest
- uses: actions/setup-node@v4
with:
node-version: 22
- run: cd daemon && pnpm install
- run: cd daemon && pnpm run bundle
- run: cd daemon && pnpm run bundle:sandbox-client
- uses: actions/upload-artifact@v4
with:
name: daemon-bundles
path: |
daemon/dist/daemon.bundle.mjs
daemon/dist/sandbox-client.js

build-binaries:
needs: build-daemon
strategy:
matrix:
include:
- target: aarch64-apple-darwin
os: macos-latest
binary: dev-browser-darwin-arm64
source_binary: dev-browser
- target: x86_64-apple-darwin
os: macos-latest
binary: dev-browser-darwin-x64
source_binary: dev-browser
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
binary: dev-browser-linux-x64
source_binary: dev-browser
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
binary: dev-browser-linux-arm64
cross: true
source_binary: dev-browser
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
binary: dev-browser-linux-musl-x64
cross: true
source_binary: dev-browser
- target: x86_64-pc-windows-msvc
os: windows-latest
binary: dev-browser-windows-x64.exe
source_binary: dev-browser.exe

runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: daemon-bundles
path: daemon/dist/
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cross (if needed)
if: matrix.cross
run: cargo install cross
- name: Build
shell: bash
run: |
if [ "${{ matrix.cross }}" = "true" ]; then
cross build --release --target ${{ matrix.target }} --manifest-path cli/Cargo.toml
else
cargo build --release --target ${{ matrix.target }} --manifest-path cli/Cargo.toml
fi
- name: Rename binary
shell: bash
run: cp cli/target/${{ matrix.target }}/release/${{ matrix.source_binary }} ${{ matrix.binary }}
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.binary }}
path: ${{ matrix.binary }}

publish:
needs: build-binaries
runs-on: ubuntu-latest
permissions:
contents: write
# Required for npm trusted publishing (OIDC); also enables provenance.
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: artifacts/
- uses: pnpm/action-setup@v4
with:
version: latest
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
# Trusted publishing requires npm >= 11.5.1; node 22 ships an older npm.
- run: npm install -g npm@latest
- run: cd daemon && pnpm install && pnpm run bundle && pnpm run bundle:sandbox-client
- run: |
mkdir -p dist/bin dist/scripts dist/daemon/dist
cp bin/dev-browser.js dist/bin/
cp scripts/postinstall.js dist/scripts/
cp scripts/sync-version.js dist/scripts/ 2>/dev/null || true
cp daemon/dist/daemon.bundle.mjs dist/daemon/dist/
cp daemon/dist/sandbox-client.js dist/daemon/dist/
cp package.json dist/
cp README.md dist/
cp LICENSE dist/ 2>/dev/null || true
# No NODE_AUTH_TOKEN: auth comes from the OIDC trusted publisher config.
- run: cd dist && npm publish
- uses: softprops/action-gh-release@v2
with:
files: artifacts/**/*
generate_release_notes: true
Loading