Compare commits

...
Author SHA1 Message Date
drakezhangandCursor a928a9fb76 test: update popup version display assertions for CLI/Ext labels
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 18:32:33 +08:00
drakezhangandCursor 0b2d7e95cc style: format release script for biome
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 18:26:35 +08:00
drakezhangandCursor 556bea1645 chore(release): 0.2.0
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 18:17:56 +08:00
7 changed files with 47 additions and 32 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ Starting from 0.2.0, CLI / Extension / DSH Plugin share the same version number.
## [Unreleased] ## [Unreleased]
## [0.2.0] - 2026-09-XX ## [0.2.0] - 2026-09-02
### Added ### Added
- File transfer: upload and download support across CLI, Extension, and DSH Plugin - File transfer: upload and download support across CLI, Extension, and DSH Plugin
Generated
+2 -2
View File
@@ -134,7 +134,7 @@ dependencies = [
[[package]] [[package]]
name = "bsk" name = "bsk"
version = "0.1.11" version = "0.2.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",
@@ -169,7 +169,7 @@ dependencies = [
[[package]] [[package]]
name = "bsk-protocol" name = "bsk-protocol"
version = "0.1.11" version = "0.2.0"
dependencies = [ dependencies = [
"schemars", "schemars",
"semver", "semver",
+2 -2
View File
@@ -7,7 +7,7 @@ members = [
default-members = ["crates/bsk-cli"] default-members = ["crates/bsk-cli"]
[workspace.package] [workspace.package]
version = "0.1.11" version = "0.2.0"
edition = "2024" edition = "2024"
rust-version = "1.85" rust-version = "1.85"
license = "MIT" license = "MIT"
@@ -43,7 +43,7 @@ rand = "0.8"
uuid = { version = "1", features = ["v4", "serde"] } uuid = { version = "1", features = ["v4", "serde"] }
# Workspace crates (version required for `cargo publish` of dependents) # Workspace crates (version required for `cargo publish` of dependents)
bsk-protocol = { version = "0.1.9", path = "crates/bsk-protocol" } bsk-protocol = { version = "0.2.0", path = "crates/bsk-protocol" }
[profile.release] [profile.release]
strip = "symbols" strip = "symbols"
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@browser-skill/extension", "name": "@browser-skill/extension",
"version": "0.1.7", "version": "0.2.0",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
@@ -122,8 +122,8 @@ describe("App", () => {
expect(screen.queryByText(/^扩展 v/)).toBeNull(); expect(screen.queryByText(/^扩展 v/)).toBeNull();
expect(screen.queryByText(/^daemon v/)).toBeNull(); expect(screen.queryByText(/^daemon v/)).toBeNull();
expect(screen.getByTitle("扩展版本").textContent).toBe(EXTENSION_VERSION); expect(screen.getByTitle("扩展版本").textContent).toBe(`Ext ${EXTENSION_VERSION}`);
expect(screen.getByTitle("bsk 版本").textContent).toBe(mockDaemonVersion); expect(screen.getByTitle("bsk 版本").textContent).toBe(`CLI ${mockDaemonVersion}`);
expect(screen.getByText("03c3e47f")).toBeTruthy(); expect(screen.getByText("03c3e47f")).toBeTruthy();
const copyButton = screen.getByRole("button", { name: "复制实例 ID" }); const copyButton = screen.getByRole("button", { name: "复制实例 ID" });
@@ -1,7 +1,7 @@
{ {
"name": "@wxg-prc-cpg/browser-skill-dsh-plugin", "name": "@wxg-prc-cpg/browser-skill-dsh-plugin",
"description": "DeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the model", "description": "DeepSeek Harness tool plugin that exposes BrowserSkill browser automation (browser_* tools) to the model",
"version": "0.1.2", "version": "0.2.0",
"license": "MIT", "license": "MIT",
"publishConfig": { "publishConfig": {
"access": "public", "access": "public",
+38 -23
View File
@@ -51,7 +51,9 @@ const { values, positionals } = parseArgs({
}); });
if (values.help) { if (values.help) {
console.log(readFileSync(new URL(import.meta.url), "utf8").match(/\/\*\*([\s\S]*?)\*\//)?.[1] ?? ""); console.log(
readFileSync(new URL(import.meta.url), "utf8").match(/\/\*\*([\s\S]*?)\*\//)?.[1] ?? "",
);
process.exit(0); process.exit(0);
} }
@@ -60,9 +62,7 @@ const pushAfter = values.push;
const pushTagsOnly = values["push-tags"]; const pushTagsOnly = values["push-tags"];
const noCommit = values["no-commit"]; const noCommit = values["no-commit"];
const onlyRaw = values.only; const onlyRaw = values.only;
const components = onlyRaw const components = onlyRaw ? onlyRaw.split(",").map((s) => s.trim().toLowerCase()) : ALL_COMPONENTS;
? onlyRaw.split(",").map((s) => s.trim().toLowerCase())
: ALL_COMPONENTS;
for (const c of components) { for (const c of components) {
if (!ALL_COMPONENTS.includes(c)) { if (!ALL_COMPONENTS.includes(c)) {
@@ -95,7 +95,9 @@ if (pushTagsOnly) {
const newVersion = positionals[0]; const newVersion = positionals[0];
if (!newVersion) { if (!newVersion) {
console.error("Usage: node scripts/release.mjs <version> [--dry-run] [--push] [--only cli,ext,dsh]"); console.error(
"Usage: node scripts/release.mjs <version> [--dry-run] [--push] [--only cli,ext,dsh]",
);
process.exit(1); process.exit(1);
} }
@@ -110,8 +112,9 @@ if (!/^\d+\.\d+\.\d+(-[\w.]+)?$/.test(newVersion)) {
function readCurrentVersions() { function readCurrentVersions() {
const cargo = readFileSync(VERSION_FILES.cargo, "utf8"); const cargo = readFileSync(VERSION_FILES.cargo, "utf8");
const cargoVer = cargo.match(/^\[workspace\.package\]\s*\nversion\s*=\s*"([^"]+)"/m)?.[1] const cargoVer =
?? cargo.match(/^version\s*=\s*"([^"]+)"/m)?.[1]; cargo.match(/^\[workspace\.package\]\s*\nversion\s*=\s*"([^"]+)"/m)?.[1] ??
cargo.match(/^version\s*=\s*"([^"]+)"/m)?.[1];
const extPkg = JSON.parse(readFileSync(VERSION_FILES.extension, "utf8")); const extPkg = JSON.parse(readFileSync(VERSION_FILES.extension, "utf8"));
const dshPkg = JSON.parse(readFileSync(VERSION_FILES.dshPlugin, "utf8")); const dshPkg = JSON.parse(readFileSync(VERSION_FILES.dshPlugin, "utf8"));
@@ -170,19 +173,17 @@ function updateChangelog(version) {
} }
const today = new Date().toISOString().slice(0, 10); const today = new Date().toISOString().slice(0, 10);
const unreleased = /^## \[Unreleased\]/m; const escapedVer = version.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
if (unreleased.test(content)) {
content = content.replace( // First: fill in any date-placeholder line for this version (e.g. "## [0.2.0] - 2026-09-XX")
unreleased, const versionPlaceholder = new RegExp(`^## \\[${escapedVer}\\]\\s*-\\s*\\d{4}-\\d{2}-XX`, "m");
`## [Unreleased]\n\n## [${version}] - ${today}`, if (versionPlaceholder.test(content)) {
); content = content.replace(versionPlaceholder, `## [${version}] - ${today}`);
} else { } else {
const versionPlaceholder = new RegExp( // Otherwise: insert a new section after [Unreleased]
`^## \\[${version.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\]\\s*-\\s*\\d{4}-\\d{2}-XX`, const unreleased = /^## \[Unreleased\]/m;
"m", if (unreleased.test(content)) {
); content = content.replace(unreleased, `## [Unreleased]\n\n## [${version}] - ${today}`);
if (versionPlaceholder.test(content)) {
content = content.replace(versionPlaceholder, `## [${version}] - ${today}`);
} }
} }
@@ -195,13 +196,25 @@ function updateChangelog(version) {
const writes = [ const writes = [
{ path: VERSION_FILES.cargo, content: bumpCargo(newVersion), label: "Cargo.toml" }, { path: VERSION_FILES.cargo, content: bumpCargo(newVersion), label: "Cargo.toml" },
{ path: VERSION_FILES.extension, content: bumpPackageJson(VERSION_FILES.extension, newVersion), label: "Extension package.json" }, {
{ path: VERSION_FILES.dshPlugin, content: bumpPackageJson(VERSION_FILES.dshPlugin, newVersion), label: "DSH Plugin package.json" }, path: VERSION_FILES.extension,
content: bumpPackageJson(VERSION_FILES.extension, newVersion),
label: "Extension package.json",
},
{
path: VERSION_FILES.dshPlugin,
content: bumpPackageJson(VERSION_FILES.dshPlugin, newVersion),
label: "DSH Plugin package.json",
},
]; ];
const changelogUpdate = updateChangelog(newVersion); const changelogUpdate = updateChangelog(newVersion);
if (changelogUpdate) { if (changelogUpdate) {
writes.push({ path: changelogUpdate.path, content: changelogUpdate.content, label: "CHANGELOG.md" }); writes.push({
path: changelogUpdate.path,
content: changelogUpdate.content,
label: "CHANGELOG.md",
});
} }
for (const w of writes) { for (const w of writes) {
@@ -237,7 +250,9 @@ if (noCommit || dryRun) {
} }
console.log("\nCommitting..."); console.log("\nCommitting...");
run("git add Cargo.toml Cargo.lock apps/extension/package.json packages/dsh-plugin-browserskill/package.json CHANGELOG.md 2>/dev/null || true"); run(
"git add Cargo.toml Cargo.lock apps/extension/package.json packages/dsh-plugin-browserskill/package.json CHANGELOG.md 2>/dev/null || true",
);
run(`git commit -m "chore(release): ${newVersion}"`); run(`git commit -m "chore(release): ${newVersion}"`);
console.log("Tagging..."); console.log("Tagging...");