You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Automatic memory now writes rich Why/How fact files, not just one-line bullets (Task 103). The per-turn auto-extract pass — the one that runs in the background on every assistant turn and is immune to which memory tool the model happens to reach for — now synthesizes structured fact files (a titled record with a breakdown body + Why + How to apply) for durable project knowledge: your setup/config, project conventions, completed workflows, and tool quirks. Lighter signals (corrections, preferences) still land as terse MEMORY.md bullets. Before this, only the explicit cmk remember --why/--how produced rich files — so if the model saved to Claude Code's built-in memory instead, you lost the rich tier. Now rich capture rides the automatic path, at trust: medium (a later explicit cmk remember still supersedes), screened by the same secret-guard + home-path sanitization as every other write, and searchable via cmk search.
Fixed
The scaffolded CLAUDE.md reads clean — no stale version or dead links (Task 107). A fresh cmk install was dropping a CLAUDE.md block that still said "v0.1.0 is under active development", undercounted the health checks ("HC-1..HC-8" — there are 9), and carried relative links to docs/adr/ and specs/… that resolve inside your repo (where they don't exist). It now reads as a clean runtime contract with external doc links. Also: the managed .gitignore block's version marker tracked the install version instead of a hardcoded v0.1.0, and a stray internal Task 92 reference was removed from the gitignore comment.
A session-buffer rollup can no longer drop a turn it races with (Task 106). When the kit compresses your live session buffer (now.md) it takes ~5–10s (a background Haiku call) and then clears the buffer. If your session wrote a new turn during that window, the old behavior could clear it away with the rest. The kit now claims the buffer with an atomic file-rename before compressing, so anything written meanwhile lands on a fresh buffer and is never touched. (This mattered more after Task 105 started rolling at session start, when a new session is actively writing.) Verified with a concurrent-write test + a live end-to-end run.
Session memory self-heals at the start of a new session, not only on a clean exit (Task 105). The kit compresses your live session buffer (now.md) into a dated daily file at session end — but Claude Code only fires the session-end hook when you cleanly close the window, not when you start a new chat in the same window. So if you live in one long-running window, now.md could grow without bound and the rolling daily/weekly summaries never built. Now, at session start, the kit notices a now.md left over from a prior session and rolls it forward in the background (detached, so it never slows your session start). The compression no longer depends on a clean exit. (Both paths run and are idempotent.)
Hook bins no longer hang when run manually without piped input (Task 101). v0.2.0 fixed this for the SessionEnd bin (cmk-compress-session, Task 100), but every other lifecycle hook bin — cmk-capture-prompt, cmk-capture-turn, cmk-inject-context, cmk-observe-edit, and the plugin's cmk-version-check — shared the same blocking stdin drain: run one by hand (e.g. to debug) without redirecting input and it would hang forever waiting for an end-of-input the terminal never sends. They now detect an interactive terminal and skip the blocking read, so a manual run finishes instead of stalling. No change as a real hook — Claude Code still pipes the payload exactly as before.