From 9c480b6ad2c7419875a7a850fb4ad5f9232313b8 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 21 Jul 2026 15:27:11 +0200 Subject: [PATCH] Release v0.81.0 --- package-lock.json | 55 ++++++++----------- packages/agent/CHANGELOG.md | 2 +- packages/agent/package.json | 4 +- packages/ai/CHANGELOG.md | 2 +- packages/ai/package.json | 2 +- packages/coding-agent/CHANGELOG.md | 2 +- .../package-lock.json | 4 +- .../custom-provider-anthropic/package.json | 2 +- .../custom-provider-gitlab-duo/package.json | 2 +- .../extensions/gondolin/package-lock.json | 4 +- .../examples/extensions/gondolin/package.json | 2 +- .../extensions/sandbox/package-lock.json | 4 +- .../examples/extensions/sandbox/package.json | 2 +- .../extensions/with-deps/package-lock.json | 4 +- .../extensions/with-deps/package.json | 2 +- .../install-lock/package-lock.json | 36 ++++++------ .../coding-agent/install-lock/package.json | 4 +- packages/coding-agent/npm-shrinkwrap.json | 30 +++++----- packages/coding-agent/package.json | 8 +-- packages/server/CHANGELOG.md | 2 +- packages/server/package.json | 4 +- packages/storage/sqlite-node/CHANGELOG.md | 2 +- packages/storage/sqlite-node/package.json | 6 +- packages/tui/CHANGELOG.md | 2 +- packages/tui/package.json | 2 +- scripts/release.mjs | 52 +++++++++++++++--- 26 files changed, 131 insertions(+), 110 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7243aae1..55a541c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -786,10 +786,6 @@ "resolved": "packages/agent", "link": true }, - "node_modules/@earendil-works/pi-storage-sqlite-node": { - "resolved": "packages/storage/sqlite-node", - "link": true - }, "node_modules/@earendil-works/pi-ai": { "resolved": "packages/ai", "link": true @@ -802,6 +798,10 @@ "resolved": "packages/server", "link": true }, + "node_modules/@earendil-works/pi-storage-sqlite-node": { + "resolved": "packages/storage/sqlite-node", + "link": true + }, "node_modules/@earendil-works/pi-tui": { "resolved": "packages/tui", "link": true @@ -1573,7 +1573,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -2651,7 +2650,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -4721,7 +4719,6 @@ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -4760,7 +4757,6 @@ "integrity": "sha512-TvncJykhxAzFCk0VQZKBTClall4Pm7qXDSodb6uxi8QFa8X8mT6ABjxxsQ2opDRYxG7AzcRWXaFtruz5HJKuWg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.28.0" }, @@ -4841,7 +4837,6 @@ "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", @@ -5031,7 +5026,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -5047,10 +5041,10 @@ }, "packages/agent": { "name": "@earendil-works/pi-agent-core", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.80.10", + "@earendil-works/pi-ai": "^0.81.0", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" @@ -5071,7 +5065,6 @@ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -5082,7 +5075,6 @@ "integrity": "sha512-G9/lgqibheLVBDRuya45EbsEXTYcWoSG+TLg7i2axuzx0Eq62eXn+aWXyaVdV5vKvFSWd6ywcX8hA7la9Pvu8g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.1.9", @@ -5288,7 +5280,6 @@ "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/expect": "4.1.9", "@vitest/mocker": "4.1.9", @@ -5402,7 +5393,7 @@ }, "packages/ai": { "name": "@earendil-works/pi-ai", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", @@ -5435,7 +5426,6 @@ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -5709,12 +5699,12 @@ }, "packages/coding-agent": { "name": "@earendil-works/pi-coding-agent", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10", - "@earendil-works/pi-tui": "^0.80.10", + "@earendil-works/pi-agent-core": "^0.81.0", + "@earendil-works/pi-ai": "^0.81.0", + "@earendil-works/pi-tui": "^0.81.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", @@ -5755,32 +5745,32 @@ }, "packages/coding-agent/examples/extensions/custom-provider-anthropic": { "name": "pi-extension-custom-provider-anthropic", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "@anthropic-ai/sdk": "0.52.0" } }, "packages/coding-agent/examples/extensions/custom-provider-gitlab-duo": { "name": "pi-extension-custom-provider-gitlab-duo", - "version": "0.80.10" + "version": "0.81.0" }, "packages/coding-agent/examples/extensions/gondolin": { "name": "pi-extension-gondolin", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "@earendil-works/gondolin": "0.12.0" } }, "packages/coding-agent/examples/extensions/sandbox": { "name": "pi-extension-sandbox", - "version": "1.10.10", + "version": "1.11.0", "dependencies": { "@anthropic-ai/sandbox-runtime": "0.0.26" } }, "packages/coding-agent/examples/extensions/with-deps": { "name": "pi-extension-with-deps", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "ms": "2.1.3" }, @@ -5803,7 +5793,6 @@ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -6077,10 +6066,10 @@ }, "packages/server": { "name": "@earendil-works/pi-server", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { - "@earendil-works/pi-coding-agent": "^0.80.10" + "@earendil-works/pi-coding-agent": "^0.81.0" }, "bin": { "server": "dist/cli.js" @@ -6094,11 +6083,11 @@ }, "packages/storage/sqlite-node": { "name": "@earendil-works/pi-storage-sqlite-node", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10" + "@earendil-works/pi-agent-core": "^0.81.0", + "@earendil-works/pi-ai": "^0.81.0" }, "engines": { "node": ">=22.19.0" @@ -6106,7 +6095,7 @@ }, "packages/tui": { "name": "@earendil-works/pi-tui", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", diff --git a/packages/agent/CHANGELOG.md b/packages/agent/CHANGELOG.md index 41889319..70d6ae1b 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### Breaking Changes diff --git a/packages/agent/package.json b/packages/agent/package.json index f1cc5cb7..81384d19 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-agent-core", - "version": "0.80.10", + "version": "0.81.0", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -29,7 +29,7 @@ "prepublishOnly": "npm run build" }, "dependencies": { - "@earendil-works/pi-ai": "^0.80.10", + "@earendil-works/pi-ai": "^0.81.0", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 0d5c82bf..844d2dfb 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### Added diff --git a/packages/ai/package.json b/packages/ai/package.json index ce936c9e..f7627894 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-ai", - "version": "0.80.10", + "version": "0.81.0", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", "main": "./dist/index.js", diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index cf7a2c45..f3558193 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### New Features diff --git a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json index 7809bdd8..48b9b039 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +++ b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-custom-provider", - "version": "0.80.10", + "version": "0.81.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-custom-provider", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "@anthropic-ai/sdk": "^0.52.0" } diff --git a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json index 7043a3c8..2aaa62c9 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json +++ b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-custom-provider-anthropic", "private": true, - "version": "0.80.10", + "version": "0.81.0", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json index d4bdb4f3..2eec0eaf 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +++ b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-custom-provider-gitlab-duo", "private": true, - "version": "0.80.10", + "version": "0.81.0", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/gondolin/package-lock.json b/packages/coding-agent/examples/extensions/gondolin/package-lock.json index 669695cb..a4b1dc37 100644 --- a/packages/coding-agent/examples/extensions/gondolin/package-lock.json +++ b/packages/coding-agent/examples/extensions/gondolin/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-gondolin", - "version": "0.80.10", + "version": "0.81.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-gondolin", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "@earendil-works/gondolin": "0.12.0" } diff --git a/packages/coding-agent/examples/extensions/gondolin/package.json b/packages/coding-agent/examples/extensions/gondolin/package.json index 2737ed01..7c1bd234 100644 --- a/packages/coding-agent/examples/extensions/gondolin/package.json +++ b/packages/coding-agent/examples/extensions/gondolin/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-gondolin", "private": true, - "version": "0.80.10", + "version": "0.81.0", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/sandbox/package-lock.json b/packages/coding-agent/examples/extensions/sandbox/package-lock.json index afc412e1..9c0e254a 100644 --- a/packages/coding-agent/examples/extensions/sandbox/package-lock.json +++ b/packages/coding-agent/examples/extensions/sandbox/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-sandbox", - "version": "1.10.10", + "version": "1.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-sandbox", - "version": "1.10.10", + "version": "1.11.0", "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.26" } diff --git a/packages/coding-agent/examples/extensions/sandbox/package.json b/packages/coding-agent/examples/extensions/sandbox/package.json index f096c010..b341b732 100644 --- a/packages/coding-agent/examples/extensions/sandbox/package.json +++ b/packages/coding-agent/examples/extensions/sandbox/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-sandbox", "private": true, - "version": "1.10.10", + "version": "1.11.0", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/with-deps/package-lock.json b/packages/coding-agent/examples/extensions/with-deps/package-lock.json index 860a256c..7ad0e0ce 100644 --- a/packages/coding-agent/examples/extensions/with-deps/package-lock.json +++ b/packages/coding-agent/examples/extensions/with-deps/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-with-deps", - "version": "0.80.10", + "version": "0.81.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-with-deps", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { "ms": "^2.1.3" }, diff --git a/packages/coding-agent/examples/extensions/with-deps/package.json b/packages/coding-agent/examples/extensions/with-deps/package.json index 8b3d953c..b414081a 100644 --- a/packages/coding-agent/examples/extensions/with-deps/package.json +++ b/packages/coding-agent/examples/extensions/with-deps/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-with-deps", "private": true, - "version": "0.80.10", + "version": "0.81.0", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/install-lock/package-lock.json b/packages/coding-agent/install-lock/package-lock.json index 5bcebab8..4b624b36 100644 --- a/packages/coding-agent/install-lock/package-lock.json +++ b/packages/coding-agent/install-lock/package-lock.json @@ -1,14 +1,14 @@ { "name": "@earendil-works/pi-coding-agent-install", - "version": "0.80.10", + "version": "0.81.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@earendil-works/pi-coding-agent-install", - "version": "0.80.10", + "version": "0.81.0", "dependencies": { - "@earendil-works/pi-coding-agent": "0.80.10" + "@earendil-works/pi-coding-agent": "0.81.0" }, "engines": { "node": ">=22.19.0" @@ -450,11 +450,11 @@ } }, "node_modules/@earendil-works/pi-agent-core": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.81.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.80.10", + "@earendil-works/pi-ai": "^0.81.0", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" @@ -464,8 +464,8 @@ } }, "node_modules/@earendil-works/pi-ai": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.81.0.tgz", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", @@ -488,13 +488,13 @@ } }, "node_modules/@earendil-works/pi-coding-agent": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-coding-agent/-/pi-coding-agent-0.81.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10", - "@earendil-works/pi-tui": "^0.80.10", + "@earendil-works/pi-agent-core": "^0.81.0", + "@earendil-works/pi-ai": "^0.81.0", + "@earendil-works/pi-tui": "^0.81.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", @@ -522,8 +522,8 @@ } }, "node_modules/@earendil-works/pi-tui": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.81.0.tgz", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", @@ -775,8 +775,7 @@ "license": "Apache-2.0", "engines": { "node": ">=8.0.0" - }, - "peer": true + } }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", @@ -1820,8 +1819,7 @@ "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" - }, - "peer": true + } }, "node_modules/zod-to-json-schema": { "version": "3.25.2", diff --git a/packages/coding-agent/install-lock/package.json b/packages/coding-agent/install-lock/package.json index 1ff7e478..c06b3105 100644 --- a/packages/coding-agent/install-lock/package.json +++ b/packages/coding-agent/install-lock/package.json @@ -1,10 +1,10 @@ { "name": "@earendil-works/pi-coding-agent-install", - "version": "0.80.10", + "version": "0.81.0", "private": true, "description": "Lockfile root used by the Pi installer and updater.", "dependencies": { - "@earendil-works/pi-coding-agent": "0.80.10" + "@earendil-works/pi-coding-agent": "0.81.0" }, "overrides": { "rimraf": "6.1.2", diff --git a/packages/coding-agent/npm-shrinkwrap.json b/packages/coding-agent/npm-shrinkwrap.json index af3f2726..235bb97d 100644 --- a/packages/coding-agent/npm-shrinkwrap.json +++ b/packages/coding-agent/npm-shrinkwrap.json @@ -1,17 +1,17 @@ { "name": "@earendil-works/pi-coding-agent", - "version": "0.80.10", + "version": "0.81.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@earendil-works/pi-coding-agent", - "version": "0.80.10", + "version": "0.81.0", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10", - "@earendil-works/pi-tui": "^0.80.10", + "@earendil-works/pi-agent-core": "^0.81.0", + "@earendil-works/pi-ai": "^0.81.0", + "@earendil-works/pi-tui": "^0.81.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", @@ -474,11 +474,11 @@ } }, "node_modules/@earendil-works/pi-agent-core": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.81.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.80.10", + "@earendil-works/pi-ai": "^0.81.0", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" @@ -488,8 +488,8 @@ } }, "node_modules/@earendil-works/pi-ai": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.81.0.tgz", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", @@ -512,8 +512,8 @@ } }, "node_modules/@earendil-works/pi-tui": { - "version": "0.80.10", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.80.10.tgz", + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.81.0.tgz", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", @@ -765,8 +765,7 @@ "license": "Apache-2.0", "engines": { "node": ">=8.0.0" - }, - "peer": true + } }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.41.1", @@ -1810,8 +1809,7 @@ "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" - }, - "peer": true + } }, "node_modules/zod-to-json-schema": { "version": "3.25.2", diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 26e8513f..6c454520 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-coding-agent", - "version": "0.80.10", + "version": "0.81.0", "description": "Coding agent CLI with read, bash, edit, write tools and session management", "type": "module", "piConfig": { @@ -39,9 +39,9 @@ "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap" }, "dependencies": { - "@earendil-works/pi-agent-core": "^0.80.10", - "@earendil-works/pi-ai": "^0.80.10", - "@earendil-works/pi-tui": "^0.80.10", + "@earendil-works/pi-agent-core": "^0.81.0", + "@earendil-works/pi-ai": "^0.81.0", + "@earendil-works/pi-tui": "^0.81.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", diff --git a/packages/server/CHANGELOG.md b/packages/server/CHANGELOG.md index cb067561..44edd138 100644 --- a/packages/server/CHANGELOG.md +++ b/packages/server/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### Changed diff --git a/packages/server/package.json b/packages/server/package.json index 7c039af3..c5b6d8a0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-server", - "version": "0.80.10", + "version": "0.81.0", "description": "experimental server package for pi", "type": "module", "main": "./dist/index.js", @@ -40,7 +40,7 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/pi-coding-agent": "^0.80.10" + "@earendil-works/pi-coding-agent": "^0.81.0" }, "devDependencies": { "shx": "0.4.0" diff --git a/packages/storage/sqlite-node/CHANGELOG.md b/packages/storage/sqlite-node/CHANGELOG.md index d2f5abd6..b7c01ebc 100644 --- a/packages/storage/sqlite-node/CHANGELOG.md +++ b/packages/storage/sqlite-node/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### Added diff --git a/packages/storage/sqlite-node/package.json b/packages/storage/sqlite-node/package.json index 5579786f..d2fbff33 100644 --- a/packages/storage/sqlite-node/package.json +++ b/packages/storage/sqlite-node/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-storage-sqlite-node", - "version": "0.80.10", + "version": "0.81.0", "description": "Node sqlite storage backend for @earendil-works/pi-agent-core sessions", "type": "module", "main": "./dist/index.js", @@ -32,7 +32,7 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/pi-ai": "^0.80.10", - "@earendil-works/pi-agent-core": "^0.80.10" + "@earendil-works/pi-ai": "^0.81.0", + "@earendil-works/pi-agent-core": "^0.81.0" } } diff --git a/packages/tui/CHANGELOG.md b/packages/tui/CHANGELOG.md index 828a8499..fa82cddb 100644 --- a/packages/tui/CHANGELOG.md +++ b/packages/tui/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.81.0] - 2026-07-21 ### Fixed diff --git a/packages/tui/package.json b/packages/tui/package.json index 63fa8084..90caf29e 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-tui", - "version": "0.80.10", + "version": "0.81.0", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js", diff --git a/scripts/release.mjs b/scripts/release.mjs index cb6f3ae6..14b1e372 100755 --- a/scripts/release.mjs +++ b/scripts/release.mjs @@ -68,6 +68,36 @@ function shellQuote(value) { return `'${value.replace(/'/g, `'\\''`)}'`; } +function removeStaleWorkspaceLockEntries() { + const workspaceVersions = new Map( + findPackageDirectories() + .map((directory) => JSON.parse(readFileSync(join(directory, "package.json"), "utf8"))) + .filter((pkg) => pkg.private !== true) + .map((pkg) => [pkg.name, pkg.version]), + ); + const lockPath = "package-lock.json"; + const lock = JSON.parse(readFileSync(lockPath, "utf8")); + let removed = 0; + + for (const [path, pkg] of Object.entries(lock.packages)) { + if (!path.startsWith("packages/") || pkg.link === true) { + continue; + } + for (const [name, version] of workspaceVersions) { + if (path.endsWith(`/node_modules/${name}`) && pkg.version !== version) { + delete lock.packages[path]; + removed++; + break; + } + } + } + + if (removed > 0) { + writeFileSync(lockPath, `${JSON.stringify(lock, null, "\t")}\n`); + console.log(`Removed ${removed} stale workspace package lock ${removed === 1 ? "entry" : "entries"}.`); + } +} + function stageChangedFiles() { const output = run("git ls-files -m -o -d --exclude-standard", { silent: true }); const paths = [...new Set((output || "").split("\n").map((line) => line.trim()).filter(Boolean))]; @@ -84,16 +114,22 @@ function bumpOrSetVersion(target) { if (BUMP_TYPES.has(target)) { console.log(`Bumping version (${target})...`); run(`npm run version:${target}`); - return getVersion(); + } else { + if (compareVersions(target, currentVersion) <= 0) { + console.error(`Error: explicit version ${target} must be greater than current version ${currentVersion}.`); + process.exit(1); + } + + console.log(`Setting explicit version (${target})...`); + run(`npm version ${target} -ws --no-git-tag-version && node scripts/sync-versions.js && npm install --package-lock-only --ignore-scripts`); } - if (compareVersions(target, currentVersion) <= 0) { - console.error(`Error: explicit version ${target} must be greater than current version ${currentVersion}.`); - process.exit(1); - } - - console.log(`Setting explicit version (${target})...`); - run(`npm version ${target} -ws --no-git-tag-version && node scripts/sync-versions.js && npm install --package-lock-only --ignore-scripts`); + // npm version can temporarily install the previous workspace versions before + // sync-versions updates inter-package ranges. Remove those stale lock entries, + // refresh the lockfile, then hydrate from the final dependency graph. + removeStaleWorkspaceLockEntries(); + run("npm install --package-lock-only --ignore-scripts"); + run("npm ci --ignore-scripts"); return getVersion(); }