|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project. |
| 4 | + |
| 5 | +The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [0.8.0] — 2026-04-21 |
| 9 | + |
| 10 | +### Added |
| 11 | +- **Google Antigravity adapter.** `./install.sh antigravity` drops an |
| 12 | + `ANTIGRAVITY.md` into the project root so Antigravity agents pick up |
| 13 | + the portable brain in `.agent/`. Matches the pattern of the other |
| 14 | + root-instruction harnesses. Brings the supported-harness count to 9. |
| 15 | + Thanks to @smartsastram for the contribution (PR #9). |
| 16 | +- **Rich `PostToolUse` episodic logging for Claude Code.** New |
| 17 | + `.agent/harness/hooks/claude_code_post_tool.py` reads the JSON payload |
| 18 | + Claude Code sends via stdin and derives a real action label, importance |
| 19 | + score, and non-empty reflection per tool call. Replaces the old |
| 20 | + hardcoded `post-tool ok` that produced identical entries every session |
| 21 | + and left the dream cycle with nothing to cluster on. Ships with a |
| 22 | + 54-test validation suite (`test_claude_code_hook.py`). Thanks to |
| 23 | + @aliirz for the contribution (PR #8). |
| 24 | +- **User-owned stack tuning via `hook_patterns.json`.** Drop your own |
| 25 | + high-stakes and medium-stakes command patterns in |
| 26 | + `.agent/protocols/hook_patterns.json` so the hook scores `vercel deploy`, |
| 27 | + `supabase migrate`, etc. correctly for your stack. Ships with empty |
| 28 | + arrays and a `_examples` section; universal patterns stay hardcoded. |
| 29 | +- **`on_failure()` severity overrides.** New `importance=` and |
| 30 | + `pain_score=` parameters so a failed production deploy records its real |
| 31 | + severity instead of the flat `importance=7 / pain_score=8` defaults. |
| 32 | + Lets the dream-cycle salience formula actually distinguish a failed |
| 33 | + migration from a failed `ls`. |
| 34 | +- **Bash wrapper-aware failure detection.** `_is_success()` now detects |
| 35 | + explicit exit-masking wrappers (`|| true`, `|| :`, `|| exit 0`, |
| 36 | + `; true`) and falls through to stderr-based signal when they are |
| 37 | + present, so masked production failures are still captured. Quoted |
| 38 | + strings and `set +e` are excluded from masking detection to avoid |
| 39 | + false positives on patterns like `echo '... || true ...'` and |
| 40 | + `set +e; grep X log; set -e`. |
| 41 | +- **33-check regression verifier.** `verify_codex_fixes.py` validates |
| 42 | + every classification path after 7 rounds of codex review. Named |
| 43 | + `verify_*.py` (not `test_*.py`) to avoid pytest collection side |
| 44 | + effects. Uses a TMPDIR / `$HOME` / repo-local / `VERIFY_TMPDIR` |
| 45 | + fallback chain so it runs in constrained sandboxes. |
| 46 | + |
| 47 | +### Fixed |
| 48 | +- **Bash `exit_code=0` no longer second-guessed via stdout.** Commands |
| 49 | + like `grep Error /var/log/app.log` and `cat failures.log` used to be |
| 50 | + recorded as failures because the output contained error-looking |
| 51 | + strings. Exit code is now authoritative for Bash responses. |
| 52 | +- **User regex fragments in `hook_patterns.json` can't crash the hook.** |
| 53 | + Each fragment is validated standalone via `re.compile`; invalid ones |
| 54 | + are dropped with a stderr warning. Merged-compile failures (e.g., a |
| 55 | + fragment like `(?i)foo` that validates alone but breaks once embedded) |
| 56 | + fall back to an incremental build that drops only the offending |
| 57 | + fragments, preserving universals and good user fragments. |
| 58 | +- **`on_failure` reflection no longer prefixes `str:` for string errors.** |
| 59 | + Only `Exception` objects get a type-name prefix now. |
| 60 | + |
| 61 | +### Changed |
| 62 | +- **Wizard version bumped to 0.8.0** in `onboard_render.py`. |
| 63 | +- **Wizard outro** now points users at `.agent/protocols/hook_patterns.json` |
| 64 | + so they know they can extend the importance scorer with their stack's |
| 65 | + service names. |
| 66 | + |
| 67 | +## [0.7.2] — 2026-04-20 |
| 68 | + |
| 69 | +### Changed |
| 70 | +- **README repositioning.** Leads with the actual buyer pain — |
| 71 | + switching coding-agent tools keeps resetting how your agent behaves — |
| 72 | + so the adapter list, wizard, and memory architecture read as proof |
| 73 | + instead of preamble. Follow / coded-using / article framing moved |
| 74 | + into the Credits section. |
| 75 | + |
| 76 | +## [0.7.1] — 2026-04-20 |
| 77 | + |
| 78 | +### Changed |
| 79 | +- **Relicensed from MIT to Apache 2.0.** |
| 80 | + |
| 81 | +## [0.7.0] — 2026-04-20 |
| 82 | + |
| 83 | +### Added |
| 84 | +- **`learn.py` host-agent tool.** Teach the agent a rule in one |
| 85 | + command: `python3 .agent/tools/learn.py "Always serialize timestamps |
| 86 | + in UTC" --rationale "past cross-region bugs"`. Stages, graduates, and |
| 87 | + renders in one step. Idempotent. Cleans up staged files on heuristic |
| 88 | + reject; preserves on crashes so retries work. |
| 89 | +- **`recall.py` host-agent tool.** Surfaces graduated lessons relevant |
| 90 | + to what you're about to do. Ranked lexical-overlap hits with per-entry |
| 91 | + source labels. Merges `lessons.jsonl` and seed bullets in `LESSONS.md` |
| 92 | + so graduating your first lesson doesn't hide the seeds. Logs every |
| 93 | + recall to episodic memory for audit. |
| 94 | +- **`show.py` host-agent tool.** Colorful dashboard of brain state |
| 95 | + (episodes, candidates, lessons, failing skills, 14d activity |
| 96 | + sparkline). `--json` / `--plain` / `NO_COLOR` flags. |
| 97 | +- **Adapter wiring for recall across all 8 harnesses.** Every adapter |
| 98 | + (`claude-code`, `cursor`, `windsurf`, `opencode`, `openclaw`, |
| 99 | + `hermes`, `pi`, `standalone-python`) now instructs the model to run |
| 100 | + `recall.py "<intent>"` before deploy / migration / timestamp / debug |
| 101 | + / refactor work, and to surface results in a |
| 102 | + `Consulted lessons before acting:` block. |
| 103 | +- **Pre-graduated seed UTC lesson** so new installs see proactive recall |
| 104 | + return a real hit on first try. Stored at |
| 105 | + `.agent/memory/semantic/lessons.jsonl`. |
| 106 | + |
| 107 | +### Fixed |
| 108 | +- **Canonical `pattern_id`.** Conditions are casefolded, unicode |
| 109 | + whitespace collapsed, zero-widths stripped, deduped, sorted — the |
| 110 | + same logical set always yields the same id. |
| 111 | +- **Stricter heuristic check.** `validate.heuristic_check` now requires |
| 112 | + ≥3 content words in a claim (blocks junk like `!!!abc` that passed |
| 113 | + the raw-length gate). |
| 114 | +- **Idempotent `graduate.py` retries.** Re-renders `LESSONS.md`, honors |
| 115 | + original reviewer / rationale from `lessons.jsonl` to keep stores |
| 116 | + in sync, refuses retries against legacy rows missing metadata. |
| 117 | +- **Advisory flock on `lessons.jsonl`.** `render_lessons` and |
| 118 | + `append_lesson` now hold an exclusive flock during writes. Concurrent |
| 119 | + writers serialize; `LESSONS.md` can no longer go stale relative to |
| 120 | + `lessons.jsonl`. Atomic rewrite via temp file + rename. |
| 121 | + |
| 122 | +## [0.6.0] — 2026-04-17 |
| 123 | + |
| 124 | +### Added |
| 125 | +- **Pi Coding Agent adapter.** `./install.sh pi` drops `AGENTS.md` and |
| 126 | + symlinks `.pi/skills` to `.agent/skills` so pi sees the full brain |
| 127 | + with zero duplication. Safe to install alongside `hermes` / `opencode` |
| 128 | + (all read `AGENTS.md`; the installer skips the overwrite if one |
| 129 | + exists). |
| 130 | + |
| 131 | +### Changed |
| 132 | +- **BREAKING: `openclient` adapter renamed to `openclaw`.** Installed |
| 133 | + file changed: `.openclient-system.md` → `.openclaw-system.md`. |
| 134 | + Existing OpenClient users: re-run `./install.sh openclaw`. |
| 135 | + |
| 136 | +## [0.5.0] — 2026-04-17 |
| 137 | + |
| 138 | +### Added |
| 139 | +- **Host-agent review protocol.** Python handles filing (cluster, stage, |
| 140 | + heuristic prefilter, decay). The host agent handles reasoning via |
| 141 | + `list_candidates.py` / `graduate.py` / `reject.py` / `reopen.py`. |
| 142 | + Graduation requires `--rationale` so rubber-stamping is structurally |
| 143 | + impossible. Zero unattended reasoning, zero provider coupling. |
| 144 | +- **Structured `lessons.jsonl` as source of truth.** `LESSONS.md` is |
| 145 | + rendered from it. Hand-curated content above the sentinel is preserved |
| 146 | + across renders; legacy bullets auto-migrate on first run. |
| 147 | +- **Proper single-linkage clustering with bridge-merge.** Pattern IDs |
| 148 | + derived from canonical claim + conditions, stable across cluster- |
| 149 | + membership changes, distinct for generic-canonical collisions. |
| 150 | +- **Query-aware retrieval.** `context_budget` ranks episodes by salience |
| 151 | + × relevance and filters lessons to `status=accepted` only — |
| 152 | + provisional, legacy, and superseded entries never leak into the |
| 153 | + system prompt. |
| 154 | +- **[BETA] FTS5 memory search** (`.agent/memory/memory_search.py`). |
| 155 | + Opt-in via onboarding or `.agent/memory/.features.json`. Default off. |
| 156 | + Prefers ripgrep when FTS5 is not available, falls back to grep. |
| 157 | + Restricted to `.md` / `.jsonl` so source files never pollute results. |
| 158 | +- **Windows-native installer.** `install.ps1` runs natively under |
| 159 | + PowerShell; `install.sh` continues to work under Git Bash / WSL. |
| 160 | + |
| 161 | +### Fixed |
| 162 | +- Batch-sound graduation gate. |
| 163 | +- Stable slugs across cluster drift. |
| 164 | +- Provisional re-review and supersession semantics. |
| 165 | +- `REVIEW_QUEUE` refreshes on every CLI action. |
| 166 | +- Heuristic-rejection stamping so unrelated `LESSONS.md` edits do not |
| 167 | + churn. |
| 168 | +- Atomic `graduate.py` (semantic write first, candidate move last). |
| 169 | +- `.gitignore` ordering so `.agent/memory/.index/` is actually ignored. |
| 170 | +- Fallback search restricted to `.md` / `.jsonl`. |
| 171 | +- Feature toggle file and `[BETA]` label in onboarding. |
| 172 | + |
| 173 | +## [0.4.0] — 2026-04-16 |
| 174 | + |
| 175 | +### Added |
| 176 | +- **Interactive onboarding wizard** (`onboard.py`, clack-style UI) that |
| 177 | + auto-fills `PREFERENCES.md` after install. Flags: `--yes` (CI / |
| 178 | + defaults), `--reconfigure` (re-run). Apple-style redesign with 7 |
| 179 | + scenes (Memory, Skills, Dream Cycle added). |
| 180 | + |
| 181 | +## [0.3.0] — 2026-04-16 |
| 182 | + |
| 183 | +### Fixed |
| 184 | +- Cron-safe paths in `auto_dream.py` and `Stop` hook matcher. |
| 185 | +- Deny-glob syntax in `settings.json`. |
| 186 | + |
| 187 | +## [0.2.0] — 2026-04-16 |
| 188 | + |
| 189 | +### Added |
| 190 | +- **Homebrew formula** at `Formula/agentic-stack.rb`. |
| 191 | + |
| 192 | +### Fixed |
| 193 | +- `standalone-python` path detection. |
| 194 | +- Harness count in README. |
| 195 | +- `brew tap` URL in README. |
| 196 | + |
| 197 | +## [0.1.0] — 2026-04-16 |
| 198 | + |
| 199 | +### Added |
| 200 | +- Initial release. Portable `.agent/` brain folder with adapters for |
| 201 | + Claude Code, Cursor, Windsurf, OpenCode, OpenClient (later OpenClaw), |
| 202 | + Hermes, and standalone Python. Homebrew installer (replaces the |
| 203 | + earlier `npx`-based flow). |
| 204 | + |
| 205 | +[0.8.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.7.2...v0.8.0 |
| 206 | +[0.7.2]: https://github.com/codejunkie99/agentic-stack/compare/v0.7.1...v0.7.2 |
| 207 | +[0.7.1]: https://github.com/codejunkie99/agentic-stack/compare/v0.7.0...v0.7.1 |
| 208 | +[0.7.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.6.0...v0.7.0 |
| 209 | +[0.6.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.5.0...v0.6.0 |
| 210 | +[0.5.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.4.0...v0.5.0 |
| 211 | +[0.4.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.3.0...v0.4.0 |
| 212 | +[0.3.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.2.0...v0.3.0 |
| 213 | +[0.2.0]: https://github.com/codejunkie99/agentic-stack/compare/v0.1.0...v0.2.0 |
| 214 | +[0.1.0]: https://github.com/codejunkie99/agentic-stack/releases/tag/v0.1.0 |
0 commit comments