From 84bab6e2d2a62282996471375b8cc0d740087189 Mon Sep 17 00:00:00 2001 From: bo Date: Tue, 18 Aug 2026 20:52:35 +0800 Subject: [PATCH] chore(release): prepare v0.0.9 --- CHANGELOG.md | 39 ++++++++++++++++++++++++++++++++ apps/server/package.json | 2 +- apps/web/package.json | 2 +- bun.lock | 10 ++++---- package.json | 2 +- packages/agent-core/package.json | 2 +- packages/protocol/package.json | 2 +- packages/utils/package.json | 2 +- scripts/release.test.ts | 8 +++---- 9 files changed, 54 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b15e5c8..1f11c2d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,29 @@ and this project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html) ## [Unreleased] +## [0.0.9] - 2026-08-18 + +### Added + +- Keep the HTTP control plane and Settings available when Runtime activation or + global Config validation fails, with bounded Runtime-data inspection, + selective invalid-item removal, and same-process recovery. +- Add durable project Memory management with 10-minute idle learning, crash-safe + reconciliation, bounded Markdown storage, explicit write support, and + Settings controls for preferences, topics, warnings, and runtime policy. +- Add live MCP and Skill management across Settings and the composer, including + HTTP/STDIO lifecycle controls, draft connection tests, saved reconnects, + package diagnostics, target-aware discovery, and progressive resource reads. + ### Changed +- Hard-cut the Web UI to the Todo-only workbench: `/` now opens the last + project's All todos surface (or the zero-project registration state), while + Todo, Work, Runs, Schedules, Session, Search, Needs-you, Diff, Composer, and + Inspector flows share one responsive workbench shell. +- Replace the legacy Memory extraction hooks and thresholds with two independent + runtime policies: `useMemory` for recall and `autoLearning` for background + learning. Explicit `memory_write` remains immediate. - Replace single-file workflow Skills with standard local Skill packages: `SKILL.md` plus optional `scripts/`, `references/`, `assets/`, and other contained resources. Skill discovery is metadata-only; entry and listed @@ -19,9 +40,24 @@ and this project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html) `disabledBuiltins`, hot apply on Settings save, and status/Test/Reconnect controls. User MCP servers are visible to all six Agent identities; the built-in visibility matrix remains role-defined. +- Centralize Agent target, Profile, depth, and Skill authority so fresh and + resumed delegation share one admission path and Providers receive portable + tool schemas instead of internal validation constraints. + +### Fixed + +- Prevent strict Providers from rejecting delegation and Skill tool schemas + before model execution, while preserving exact runtime authorization and + stable typed errors. +- Preserve completed Session responses across restart and keep recovery + follow-up failures distinct from the original Runtime activation failure. ### Breaking Changes +- Memory configuration is a hard cut. Replace `enabled`, `minMessages`, + `minContentLength`, and `cooldownMs` with `useMemory` and `autoLearning`. + Obsolete query-loop extraction hooks, tasks, cursors, and compatibility paths + are removed. - Project and user Skills must use one directory per Skill: `//SKILL.md`. Manually update existing entries to use only `name` and `description` (required), with optional `license`, `compatibility`, and string-map @@ -37,6 +73,9 @@ and this project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html) opt-out uses `disabledBuiltins`; user-server role filters and extra MCP approval assumptions are removed. There is no migration, compatibility reader, or fallback for the old configuration shape. +- The legacy global Home/Dashboard and parallel document-rail navigation are + removed. Root navigation now resolves to project Todos, and no compatibility + UI is retained for the former shell. ## [0.0.8] - 2026-08-04 diff --git a/apps/server/package.json b/apps/server/package.json index 46fee163..3b1b86ac 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@archcode/server", - "version": "0.0.8", + "version": "0.0.9", "private": true, "type": "module", "main": "./src/main.ts", diff --git a/apps/web/package.json b/apps/web/package.json index bf3023a8..2fa60d3b 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@archcode/web", - "version": "0.0.8", + "version": "0.0.9", "private": true, "type": "module", "scripts": { diff --git a/bun.lock b/bun.lock index 25c9b3e2..ffaf5fd2 100644 --- a/bun.lock +++ b/bun.lock @@ -24,7 +24,7 @@ }, "apps/server": { "name": "@archcode/server", - "version": "0.0.8", + "version": "0.0.9", "bin": { "archcode": "./src/main.ts", }, @@ -49,7 +49,7 @@ }, "apps/web": { "name": "@archcode/web", - "version": "0.0.8", + "version": "0.0.9", "dependencies": { "@archcode/protocol": "workspace:*", "@dnd-kit/core": "^6.3.1", @@ -83,7 +83,7 @@ }, "packages/agent-core": { "name": "@archcode/agent-core", - "version": "0.0.8", + "version": "0.0.9", "dependencies": { "@ai-sdk/alibaba": "^1.0.0", "@ai-sdk/amazon-bedrock": "^4.0.0", @@ -139,14 +139,14 @@ }, "packages/protocol": { "name": "@archcode/protocol", - "version": "0.0.8", + "version": "0.0.9", "devDependencies": { "typescript": "^6.0.3", }, }, "packages/utils": { "name": "@archcode/utils", - "version": "0.0.8", + "version": "0.0.9", "devDependencies": { "typescript": "^6.0.3", }, diff --git a/package.json b/package.json index efb7bfd7..3b954c63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "archcode", - "version": "0.0.8", + "version": "0.0.9", "private": true, "description": "ArchCode — Not just a coding agent. An always-on workbench for AI engineering.", "type": "module", diff --git a/packages/agent-core/package.json b/packages/agent-core/package.json index ea00378f..069363cb 100644 --- a/packages/agent-core/package.json +++ b/packages/agent-core/package.json @@ -1,6 +1,6 @@ { "name": "@archcode/agent-core", - "version": "0.0.8", + "version": "0.0.9", "private": true, "type": "module", "main": "./src/index.ts", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 8552c67c..ad137a38 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,6 +1,6 @@ { "name": "@archcode/protocol", - "version": "0.0.8", + "version": "0.0.9", "private": true, "type": "module", "main": "./src/index.ts", diff --git a/packages/utils/package.json b/packages/utils/package.json index 78ec250b..3179c1b5 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@archcode/utils", - "version": "0.0.8", + "version": "0.0.9", "private": true, "type": "module", "main": "./src/index.ts", diff --git a/scripts/release.test.ts b/scripts/release.test.ts index 6c7409f2..90242d80 100644 --- a/scripts/release.test.ts +++ b/scripts/release.test.ts @@ -232,7 +232,7 @@ describe("release metadata", () => { test("compares complete release asset directories by content", async () => { const expectedDir = await mkdtemp(join(tmpdir(), "archcode-release-expected-")); const actualDir = await mkdtemp(join(tmpdir(), "archcode-release-actual-")); - const releaseAssetNames = releaseAssetNamesForVersion("0.0.8"); + const releaseAssetNames = releaseAssetNamesForVersion("0.0.9"); try { for (const name of releaseAssetNames) { await Promise.all([ @@ -258,14 +258,14 @@ describe("release metadata", () => { try { for (const target of releaseTargets) { await writeTestArchive( - join(assetDir, releaseArchiveAssetName(target, "0.0.8")), - "0.0.8", + join(assetDir, releaseArchiveAssetName(target, "0.0.9")), + "0.0.9", ); } const template = await Bun.file(join(import.meta.dir, "install.sh")).text(); await Bun.write( join(assetDir, "install.sh"), - renderReleaseInstaller(template, "0.0.8"), + renderReleaseInstaller(template, "0.0.9"), ); await writeBundleMetadata(assetDir);