Files
Sawyer Hood 16dec89cfe feat!: ship doobie as dev-browser 1.0 (#133)
* doobie: skeleton — client, daemon, vm runner, page helpers, build

Co-Authored-By: Claude <noreply@anthropic.com>

* doobie: snapshot engine, waitForLoad, docs, tests, bench, Bun-native fast client

Co-Authored-By: Claude <noreply@anthropic.com>

* doobie: fix round 1 from adversarial review (transport backpressure, profiles per mode, page mutex, bringToFront, zombie runs, shot DPR, dialogs, snapshot names/frames/boxes, docs)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: handoff notes

Co-Authored-By: Claude <noreply@anthropic.com>

* launch: mark clean exit to skip session restore, cache --no-sandbox; untrack build artifact

Co-Authored-By: Claude <noreply@anthropic.com>

* snapshot: drop [cursor=pointer] on inherently interactive roles, no row content names (HN interactive 29k -> 21k chars)

Co-Authored-By: Claude <noreply@anthropic.com>

* ci: bench tolerance on shared runners; release: npm publish only with NPM_TOKEN

Co-Authored-By: Claude <noreply@anthropic.com>

* mcp: stdio MCP server over the daemon frames (doobie mcp); ci: explicit test timeout

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: bb integration note (socket source contract)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix round 2: front lock (no stale cache), run gate covers handles/frames/popups, --connect extends only touched tabs, doobie chrome verifies launch, self-healing shim + devDependencies, snapshot name fallbacks/pointer inheritance/shadow refs, docs

Co-Authored-By: Claude <noreply@anthropic.com>

* daemon: drain active requests before exit; tests: realpath-safe and node-optional packaging tests; chrome: share sandbox helpers

Co-Authored-By: Claude <noreply@anthropic.com>

* relative file paths resolve against the caller's cwd; readFile("downloads/<name>"); TimeoutError for ref waits

Co-Authored-By: Claude <noreply@anthropic.com>

* runtime: share host Error constructors with the script realm

Co-Authored-By: Claude <noreply@anthropic.com>

* shim: sh/JS polyglot so bun-only machines run it; v0.1.1

Co-Authored-By: Claude <noreply@anthropic.com>

* launch: automation profile prefs (leak-detection dialog off, no password/autofill UI) — fixes dead input after logins in new headless

Co-Authored-By: Claude <noreply@anthropic.com>

* v0.1.2

Co-Authored-By: Claude <noreply@anthropic.com>

* client: retry when racing a shutting-down daemon (flaky stop/status on CI)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat!: make doobie the dev-browser 1.0 runtime

* ci: use Node 24 GitHub actions

* fix: isolate authenticated CDP sessions

* fix: close run gate escape paths

* fix: preserve UTF-8 across protocol chunks

* test: stabilize browser context gate coverage

* test: isolate browser context gate coverage

---------

Co-authored-by: Sawyer Hood <kirbyhood@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-09-03 17:21:40 -07:00

2.0 KiB

Releasing dev-browser

GitHub Actions publishes the npm package through npm trusted publishing (OIDC); no NPM_TOKEN is required. The trusted publisher must name the SawyerHood/dev-browser repository and .github/workflows/release.yml workflow.

Prepare and validate

  1. Start from a clean, current main branch.
  2. Update package.json, .claude-plugin/marketplace.json, and CHANGELOG.md to the intended version.
  3. Run:
bun install --frozen-lockfile
bun x tsc --noEmit
bun run build
bun run test
npm pack --dry-run
dist/dev-browser --version

For a release candidate, use a version such as 1.0.0-rc.1; the workflow publishes prereleases under npm's next tag. Install and exercise that candidate on macOS Intel/ARM and glibc Linux x64/ARM, including clean installs, upgrades from 0.2.9, an existing ~/.dev-browser directory, and migrate-from-doobie.

Resolve the historical v1.0.0 tag

The repository has an old v1.0.0 tag on commit b549fb0 with no GitHub release or npm version. Before publishing the real 1.0.0, preserve that reference under a non-release tag and remove the stale release tag:

git tag archive/browser-skill-v1.0.0 b549fb0
git push origin archive/browser-skill-v1.0.0
git push origin :refs/tags/v1.0.0
git tag -d v1.0.0

Deleting the public tag is intentionally a manual maintainer action. Confirm the archive tag exists remotely first.

Publish

After the release commit is merged and main CI is green:

git switch main
git pull --ff-only origin main
git tag v1.0.0
git push origin v1.0.0

The workflow verifies the tag matches package.json, builds and checksums four binaries, smoke-tests Linux x64, checks the npm tarball, creates the GitHub release, and publishes npm with provenance. Verify afterward:

gh run list --workflow release.yml --limit 1
npm view dev-browser version dist-tags
npm install -g dev-browser@1.0.0
dev-browser --version
dev-browser --help

Do not reuse a version if npm accepted it before a later release step failed.