Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 2 additions & 4 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@
"playwright",
"automation"
],
"skills": [
"./skills/browser-hand"
]
"skills": ["./skills/browser-hand"]
}
],
"metadata": {
"description": "Marketplace for the Browser Hand skill",
"version": "0.2.9"
"version": "0.3.0"
}
}
30 changes: 24 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Release
on:
push:
tags:
- 'v*'
- "v*"

jobs:
release-plan:
Expand All @@ -15,17 +15,29 @@ jobs:
- uses: actions/checkout@v4
- id: check
shell: bash
env:
PUBLISH_NPM: ${{ vars.PUBLISH_NPM }}
run: |
tag="${GITHUB_REF_NAME#v}"
pkg="$(node -p "require('./package.json').version")"
if [ "$tag" = "$pkg" ]; then
if [ "$tag" = "$pkg" ] && [ "$PUBLISH_NPM" = "true" ]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document the new npm publishing gate

When an operator follows the upstream release procedure in RELEASING.md:78-104, they are told to push a matching version tag and then verify the npm release, but this new condition now successfully skips every build and publish unless a separate repository variable is exactly true. The first-time setup in RELEASING.md:14-28 never mentions configuring or resetting PUBLISH_NPM, so the documented procedure can finish green with only a GitHub release while dev-browser remains unpublished; update the release instructions to include this required gate and its lifecycle.

Useful? React with 👍 / 👎.

echo "publish_npm=true" >> "$GITHUB_OUTPUT"
echo "Tag v$tag matches package.json. Publishing the headless package."
echo "Tag v$tag matches package.json and PUBLISH_NPM=true. Publishing the headless package."
else
echo "publish_npm=false" >> "$GITHUB_OUTPUT"
echo "Tag v$tag does not match package.json $pkg. Skipping the headless npm publish and binary build."
echo "Skipping npm publish and the binary build. Set the PUBLISH_NPM repository variable to true when the package is ready."
fi

github-release:
name: GitHub Release
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true

build-daemon:
name: Build Daemon Bundles
needs: release-plan
Expand Down Expand Up @@ -130,7 +142,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 22
registry-url: 'https://registry.npmjs.org'
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
Expand All @@ -141,7 +153,13 @@ jobs:
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/
node --input-type=module -e '
import { readFileSync, writeFileSync } from "node:fs";
const pkg = JSON.parse(readFileSync("package.json", "utf8"));
delete pkg.private;
delete pkg.workspaces;
writeFileSync("dist/package.json", JSON.stringify(pkg, null, 2) + "\n");
Comment on lines +158 to +161

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Publish the assembled archive as dev-browser

When the v0.3.0 tag runs this job, the generated manifest removes only private and workspaces, so it retains the root name browser-hand; reproducing the assembly with npm pack --dry-run identifies the archive as [email protected]. The release documentation configures trusted publishing and post-release verification for dev-browser (RELEASING.md:16-19, 97-104), so this either fails OIDC authorization or publishes the headless payload under the wrong package while dev-browser remains at 0.2.9. Generate a dedicated headless manifest with the dev-browser identity instead of copying the product-root identity.

AGENTS.md reference: AGENTS.md:L13-L17

Useful? React with 👍 / 👎.

'
cp README.md dist/
cp LICENSE dist/ 2>/dev/null || true
# No NODE_AUTH_TOKEN: auth comes from the OIDC trusted publisher config.
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.1.0] - 2026-10-14
## [0.3.0] - 2026-10-14

- Chrome extension manifest is 1.1.0.
- Added `--group-title` on `open` and `goto`. Tabs for one task join a Chrome tab group with that title and a color. The same title keeps joining the group. A different title starts a new group. With no title, the group stays named Browser Hand. If a saved group cannot be reused in that tab's window, Browser Hand opens a replacement group instead of failing the command.
- Added `steps`, one call for a repeated form (click, fill, type, evaluate, snapshot). The call stops at the first miss, and step snapshots leave formatted secrets out.
- Added a scoped snapshot (open dialog plus main by default) and clicks by snapshot ref or by role and accessible name. Covered controls are skipped. `doctor` stays a short health check. `tabs` is the inventory.
Expand Down
2 changes: 1 addition & 1 deletion cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion cli/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "dev-browser"
version = "0.2.9"
version = "0.3.0"
edition = "2021"

[dependencies]
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "browser-hand",
"version": "0.2.9",
"description": "Browser Hand \u2014 agents control your real logged-in Chrome via a local extension bridge. Fork of SawyerHood/dev-browser.",
"version": "0.3.0",
Comment thread
jack-arturo marked this conversation as resolved.
"description": "Browser Hand — agents control your real logged-in Chrome via a local extension bridge. Fork of SawyerHood/dev-browser.",
"type": "module",
"bin": {
"browser-hand": "./cli-js/bin/browser-hand.js",
Expand Down
Loading