From bc0b99c374eb0ac56901090c8ff6d2bc2865ec13 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Mon, 12 Jan 2026 00:43:52 -0600 Subject: [PATCH] 0.4.1 (#17) * sync version * 0.4.1 * add release script --- cli/Cargo.lock | 2 +- cli/Cargo.toml | 2 +- package.json | 15 ++++++++------ scripts/sync-version.js | 43 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 scripts/sync-version.js diff --git a/cli/Cargo.lock b/cli/Cargo.lock index ecb4aea..1d11385 100644 --- a/cli/Cargo.lock +++ b/cli/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "agent-browser" -version = "0.4.0" +version = "0.4.1" dependencies = [ "libc", "serde", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 6f36cec..6520add 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "agent-browser" -version = "0.4.0" +version = "0.4.1" edition = "2021" description = "Fast browser automation CLI for AI agents" license = "Apache-2.0" diff --git a/package.json b/package.json index fd2f399..8610b99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "agent-browser", - "version": "0.4.0", + "version": "0.4.1", "description": "Headless browser automation CLI for AI agents", "type": "module", "main": "dist/daemon.js", @@ -15,13 +15,16 @@ }, "scripts": { "prepare": "husky", + "version:sync": "node scripts/sync-version.js", + "version": "npm run version:sync && git add cli/Cargo.toml", "build": "tsc", - "build:native": "cargo build --release --manifest-path cli/Cargo.toml && node scripts/copy-native.js", - "build:linux": "docker compose -f docker/docker-compose.yml run --rm build-linux", - "build:macos": "(cargo build --release --manifest-path cli/Cargo.toml --target aarch64-apple-darwin & cargo build --release --manifest-path cli/Cargo.toml --target x86_64-apple-darwin & wait) && cp cli/target/aarch64-apple-darwin/release/agent-browser bin/agent-browser-darwin-arm64 && cp cli/target/x86_64-apple-darwin/release/agent-browser bin/agent-browser-darwin-x64", - "build:windows": "docker compose -f docker/docker-compose.yml run --rm build-windows", - "build:all-platforms": "(npm run build:linux & npm run build:windows & wait) && npm run build:macos", + "build:native": "npm run version:sync && cargo build --release --manifest-path cli/Cargo.toml && node scripts/copy-native.js", + "build:linux": "npm run version:sync && docker compose -f docker/docker-compose.yml run --rm build-linux", + "build:macos": "npm run version:sync && (cargo build --release --manifest-path cli/Cargo.toml --target aarch64-apple-darwin & cargo build --release --manifest-path cli/Cargo.toml --target x86_64-apple-darwin & wait) && cp cli/target/aarch64-apple-darwin/release/agent-browser bin/agent-browser-darwin-arm64 && cp cli/target/x86_64-apple-darwin/release/agent-browser bin/agent-browser-darwin-x64", + "build:windows": "npm run version:sync && docker compose -f docker/docker-compose.yml run --rm build-windows", + "build:all-platforms": "npm run version:sync && (npm run build:linux & npm run build:windows & wait) && npm run build:macos", "build:docker": "docker build -t agent-browser-builder -f docker/Dockerfile.build .", + "release": "npm run version:sync && npm run build && npm run build:all-platforms && npm publish", "start": "node dist/daemon.js", "dev": "tsx src/daemon.ts", "typecheck": "tsc --noEmit", diff --git a/scripts/sync-version.js b/scripts/sync-version.js new file mode 100644 index 0000000..6251c29 --- /dev/null +++ b/scripts/sync-version.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +/** + * Syncs the version from package.json to all other config files. + * Run this script before building or releasing. + */ + +import { readFileSync, writeFileSync } from "fs"; +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const rootDir = join(__dirname, ".."); + +// Read version from package.json (single source of truth) +const packageJson = JSON.parse( + readFileSync(join(rootDir, "package.json"), "utf-8") +); +const version = packageJson.version; + +console.log(`Syncing version ${version} to all config files...`); + +// Update Cargo.toml +const cargoTomlPath = join(rootDir, "cli/Cargo.toml"); +let cargoToml = readFileSync(cargoTomlPath, "utf-8"); +const cargoVersionRegex = /^version\s*=\s*"[^"]*"/m; +const newCargoVersion = `version = "${version}"`; + +if (cargoVersionRegex.test(cargoToml)) { + const oldMatch = cargoToml.match(cargoVersionRegex)?.[0]; + if (oldMatch !== newCargoVersion) { + cargoToml = cargoToml.replace(cargoVersionRegex, newCargoVersion); + writeFileSync(cargoTomlPath, cargoToml); + console.log(` Updated cli/Cargo.toml: ${oldMatch} -> ${newCargoVersion}`); + } else { + console.log(` cli/Cargo.toml already up to date`); + } +} else { + console.error(" Could not find version field in cli/Cargo.toml"); + process.exit(1); +} + +console.log("Version sync complete.");