@@ -5,6 +5,77 @@ All notable changes to this project.
55The format follows [ Keep a Changelog] ( https://keepachangelog.com/en/1.1.0/ ) ,
66and the project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## [ 0.9.0] — 2026-04-23
9+
10+ ### Added
11+ - ** Harness manager: manifest-driven adapter system.** Each adapter now
12+ ships an ` adapters/<name>/adapter.json ` declaring its files,
13+ collision policy, optional skills directory mirror, and named
14+ post-install actions. Adding a new adapter is now a JSON-only PR —
15+ no Python code, no test wiring, no class registration. Lives in the
16+ new ` harness_manager/ ` Python package.
17+ - ** ` ./install.sh add <adapter> ` ** — append an adapter to an existing
18+ project without re-running the onboarding wizard.
19+ - ** ` ./install.sh remove <adapter> ` ** — confirmation prompt lists every
20+ file before deletion. Hard delete (no quarantine, no undo — git is
21+ the safety net). Reverses post-install actions automatically (e.g.,
22+ ` openclaw agents remove ` ).
23+ - ** ` ./install.sh doctor ` ** — read-only audit of installed adapters.
24+ Verifies tracked files exist, post-install state is valid, ` .agent/ `
25+ brain is intact. Exits 0 on green, 1 on red. First run on a
26+ pre-v0.9.0 project asks before synthesizing ` install.json ` — never
27+ silently mutates.
28+ - ** ` ./install.sh status ` ** — one-screen view of installed adapters,
29+ brain stats (skills/episodic/lessons), last-updated timestamp.
30+ - ** ` .agent/install.json ` ** — authoritative record of what's installed.
31+ Schema-versioned. Atomic write via tempfile + rename, fcntl-locked
32+ on POSIX.
33+ - ** PowerShell parity from day one.** ` install.ps1 ` is now a 70-line
34+ thin dispatcher to the same Python backend ` install.sh ` uses. The
35+ new ` add ` /` remove ` /` doctor ` /` status ` verbs behave identically across
36+ mac/Linux/Windows. Was 270+ lines of duplicated bash-shaped logic.
37+ - ` docs/per-harness/standalone-python.md ` — gap-fill for the only
38+ harness that didn't have a per-harness doc.
39+
40+ ### Fixed
41+ - ** #18 ** — Claude Code hook commands break when cwd is not the
42+ project root. ` adapters/claude-code/settings.json ` template now uses
43+ ` {{BRAIN_ROOT}} ` placeholder, which the manifest backend substitutes
44+ with ` $CLAUDE_PROJECT_DIR ` at install time. Hook commands resolve
45+ correctly regardless of which directory Claude Code's cwd points at.
46+ Thanks to @palamp for the report and the proposal that shaped the
47+ larger feature.
48+
49+ ### Changed
50+ - ` install.sh ` shrinks from 175 lines of bash case-statements to 35
51+ lines of dispatcher. All install logic moved to ` harness_manager/ ` .
52+ Existing CLI surface preserved: `./install.sh <adapter > [ target]
53+ [ --yes|--reconfigure|--force] ` works identically.
54+ - ` install.ps1 ` shrinks from 270+ lines to 70.
55+
56+ ### Migration
57+ Existing v0.8.x users: ` brew upgrade agentic-stack ` , then run
58+ ` ./install.sh doctor ` in your project. Doctor detects existing
59+ adapters from filesystem signals and asks before writing ` install.json ` .
60+ Subsequent doctor runs are read-only.
61+
62+ ### Release checklist (post-merge, pre-` brew upgrade ` )
63+ The Homebrew Formula (` Formula/agentic-stack.rb ` ) intentionally still
64+ points at the v0.8.0 tarball in this PR. The v0.9.0 release flow is:
65+
66+ 1 . Merge this PR to master.
67+ 2 . Tag ` v0.9.0 ` on master and create the GitHub release.
68+ 3 . Run ` curl -L https://github.com/codejunkie99/agentic-stack/archive/refs/tags/v0.9.0.tar.gz | shasum -a 256 ` to compute the new sha256.
69+ 4 . Open a follow-up PR that updates ` url ` , ` sha256 ` , ` version ` together,
70+ and adds ` harness_manager ` + ` install.ps1 ` to the ` pkgshare.install ` line.
71+ This is the same pattern as commit ` abaa352 ` (the v0.8.0 sha256 bump).
72+
73+ Reason for the split: a Formula change that adds ` harness_manager/ ` to
74+ ` pkgshare.install ` while still pointing at the v0.8.0 tarball would fail
75+ brew install (file-not-found in the staged tarball). Bumping all four
76+ fields together as a follow-up after the tag exists keeps the formula
77+ always pointing at a real, installable artifact.
78+
879## [ 0.8.0] — 2026-04-21
980
1081### Added
0 commit comments