diff --git a/Cargo.lock b/Cargo.lock index 13ecaf9e..2fb8a30e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1274,7 +1274,7 @@ dependencies = [ [[package]] name = "nightcrow" -version = "0.1.1" +version = "0.1.2" dependencies = [ "alacritty_terminal", "anyhow", @@ -1311,7 +1311,7 @@ dependencies = [ [[package]] name = "nightcrow-recovery" -version = "0.1.1" +version = "0.1.2" dependencies = [ "anyhow", "serde", diff --git a/Cargo.toml b/Cargo.toml index 9e258ff0..6fc336a1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ members = [".", "plugins/nightcrow-recovery"] [package] name = "nightcrow" -version = "0.1.1" +version = "0.1.2" edition = "2024" description = "Agent-adjacent terminal workbench — git diff viewer + multi-terminal panes for running CLIs next to your code" license = "Apache-2.0" diff --git a/plugins/nightcrow-recovery/Cargo.toml b/plugins/nightcrow-recovery/Cargo.toml index 37f60733..e02212af 100644 --- a/plugins/nightcrow-recovery/Cargo.toml +++ b/plugins/nightcrow-recovery/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nightcrow-recovery" -version = "0.1.1" +version = "0.1.2" edition = "2024" description = "nightcrow plugin: notices a coding CLI hit its usage limit and resumes it when the limit resets" license = "Apache-2.0" diff --git a/scripts/prepare-release.test.mjs b/scripts/prepare-release.test.mjs index 068b19bd..ada8d108 100644 --- a/scripts/prepare-release.test.mjs +++ b/scripts/prepare-release.test.mjs @@ -13,6 +13,7 @@ import { readVersions, updateVersions, validatePolicy, + versionParts, } from "./release-lib.mjs"; const policy = { @@ -80,9 +81,13 @@ test("execute updates every application version entry without touching dependenc fs.mkdirSync(path.join(root, "viewer-ui"), { recursive: true }); for (const file of ["package.json", "package-lock.json"]) fs.copyFileSync(path.join(source, `viewer-ui/${file}`), path.join(root, `viewer-ui/${file}`)); const before = fs.readFileSync(path.join(root, "Cargo.lock"), "utf8"); - const result = updateVersions(root, policy, "0.1.2"); + // The fixture copies this repository, so derive every version from what is + // on disk instead of hard-coding a patch that becomes stale on the next bump. + const current = assertVersionsAgree(readVersions(root, policy)); + const next = patchVersion(versionParts(current) + 1); + const result = updateVersions(root, policy, next); assert.equal(result.changed.length, 5); - assert.equal(assertVersionsAgree(readVersions(root, policy)), "0.1.2"); + assert.equal(assertVersionsAgree(readVersions(root, policy)), next); assert.match(fs.readFileSync(path.join(root, "Cargo.lock"), "utf8"), /name = "ratatui"\nversion = "0\.30\./); assert.notEqual(fs.readFileSync(path.join(root, "Cargo.lock"), "utf8"), before); const git = (...args) => { @@ -94,13 +99,14 @@ test("execute updates every application version entry without touching dependenc git("config", "user.name", "Release Test"); git("add", "."); git("commit", "--quiet", "-m", "fixture"); - git("tag", "v0.1.1"); - git("tag", "v0.1.2"); + const tags = []; + for (let patch = 1; patch <= versionParts(next); patch += 1) tags.push(`${policy.tagPrefix}${patchVersion(patch)}`); + for (const tag of tags) git("tag", tag); remote = fs.mkdtempSync(path.join(os.tmpdir(), "nightcrow-release-remote-")); git("init", "--bare", remote); git("remote", "add", "authoritative", remote); - git("push", "--quiet", "authoritative", "v0.1.1", "v0.1.2"); - assert.equal(checkRoot(root, { release: true, tagRemote: remote }).current, "0.1.2"); + git("push", "--quiet", "authoritative", ...tags); + assert.equal(checkRoot(root, { release: true, tagRemote: remote }).current, next); assert.throws(() => gitTags(root, policy, path.join(root, "missing-remote")), /authoritative/); } finally { fs.rmSync(root, { recursive: true, force: true }); diff --git a/scripts/release-lib.mjs b/scripts/release-lib.mjs index cca43a18..f865f8b7 100644 --- a/scripts/release-lib.mjs +++ b/scripts/release-lib.mjs @@ -95,7 +95,7 @@ export function readVersions(root, policy = loadPolicy(root)) { return policy.versionFiles.map((entry) => ({ ...entry, version: readEntry(root, entry) })); } -function versionParts(version) { +export function versionParts(version) { const match = /^0\.1\.(0|[1-9]\d*)$/.exec(version); if (!match) throw new Error(`version ${version} is outside the ${SUPPORTED_SERIES} series`); return Number(match[1]); diff --git a/viewer-ui/package-lock.json b/viewer-ui/package-lock.json index e2f8b94c..93b1a4f4 100644 --- a/viewer-ui/package-lock.json +++ b/viewer-ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "nightcrow-viewer-ui", - "version": "0.1.1", + "version": "0.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nightcrow-viewer-ui", - "version": "0.1.1", + "version": "0.1.2", "dependencies": { "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", diff --git a/viewer-ui/package.json b/viewer-ui/package.json index eeb9c547..7b30bca8 100644 --- a/viewer-ui/package.json +++ b/viewer-ui/package.json @@ -1,7 +1,7 @@ { "name": "nightcrow-viewer-ui", "private": true, - "version": "0.1.1", + "version": "0.1.2", "type": "module", "scripts": { "dev": "vite",