| v15.1.0 | ## claude-mem 15.1.0 ### Highlights - **New My Work viewer (React, live data).** The localhost viewer at `http://localhost:37777` is replaced by the React My Work viewer on live worker data: one card per human request, progress meters, owner goals, goal alignment, shipping velocity and the build story (#5010). - **My Work is always live.** Updates appear as they arrive; the "Show updates" button is gone. The header now reads "claude-mem", links to the Classic viewer at `/viewer`, and shows a G | High | 10/25/2026 |
| v15.0.2 | # Stop observer reasoning from consuming the output budget Observer requests to OpenRouter, the cmem.ai gateway, and OpenAI-compatible endpoints now disable reasoning by default, so reasoning tokens no longer fill the output budget and leave a session with zero observations. - An empty reply with finish_reason=length is logged and retried once with reasoning forced off. That retry counts against the existing paid-send budget and is bounded by the per-attempt timeout. - Billed usage keeps the r | High | 10/23/2026 |
| v15.0.1 | # Keep Smart recall consistent across merged projects Smart search, timeline context, and selected observation details now use the same checkout project scope. An observation found through a merged project alias remains available in the next two steps, instead of incorrectly returning โnot found.โ - Resolves the same project read keys for search results, explicit timeline anchors, query-selected timeline anchors, and selected observation reads. - Keeps adopted records visible while excluding u | High | 10/20/2026 |
| v14.0.1 | Cards keep the agent who did the work when new updates arrive, instead of showing Unassigned work. | High | 10/17/2026 |
| v13.41.0 | # Build, release, and work-state visibility ## Workflow skills - `build` delegates a coding session through `make-plan`, `do`, and `babysit`. - `release` delegates publication through `version-bump` and `childhood`. - `build-and-release` runs both, merging the ready PR before continuing from updated main. - Restores the existing `childhood` skill so post-release verification is included. The new wrappers are deliberately short. They reuse the existing workflows. ## Work-state telemetry Adds | High | 10/17/2026 |
| v13.39.0 | ## Codex: memory timeline returns to subagent threads after compaction When Codex compacts a thread, the memory timeline drops out of its history. The root thread already got it back through `SessionStart` (source `compact`). Codex never sends `SessionStart` to subagent threads, though, so a subagent that compacted kept working without its memory. - A new **PostCompact** hook marks the compacted thread, keyed by `session_id` plus `agent_id`. - That thread's next **PostToolUse** records the obs | High | 10/13/2026 |
| v13.37.0 | This release fixes the broken 13.36.1 marketplace update. After that update, the worker, the MCP search server and the server runtime failed to start, so memory capture stopped. Upgrading is strongly recommended. ## Fixes - **claude-mem starts again after the 13.36.1 marketplace update** (#4728, #4729). A change merged after the 13.36.1 release committed the built plugin files with leftover `git stash` conflict markers. The plugin installs from `main`, so auto-updated installs got those files | High | 10/13/2026 |
| v13.35.0 | ## New: progressive memory search, curated tool replies, and native memory notes Claude-Mem 13.35.0 gives agents one memory search tool, `mem_search`, that discloses memory in bounded steps: a compact index, the context around chosen anchors, and then one batch of selected details. The local worker MCP and the hosted cmem.ai MCP run the same search engine and return the same model-facing text. Tool replies are now short, readable text written for the question being answered, so agents no longer | High | 10/9/2026 |
| v13.34.2 | This patch removes a worker regression that broke prompt-cache reuse for observer sessions on the providers that share the OpenAI-compatible HTTP observer loop, such as OpenRouter and Gemini. ## What was wrong Since v13.29.0 (PR #3151), the worker pruned the observer's conversation history before every request. Once a tool-use exchange fell out of the most recent eight messages, its payload was replaced in place with a short stub marked `pruned="true"`. That kept each request smaller, but it a | High | 10/6/2026 |
| v13.32.0 | ## The File Read Gate is back, on by default When Claude Code tries to `Read` a whole code file that claude-mem already has observations about, the Read is now blocked. Claude gets the file's observation timeline instead, along with cheaper ways to get what it needs: - **Current code:** `smart_outline` for the file's symbols and line numbers, then `smart_unfold` for the ones it needs. - **Past work:** `get_observations` for the observations listed. - **Exact lines, for example before an Edit:* | High | 10/6/2026 |
| v13.31.0 | ## Sessions start without waiting A new session no longer waits on SQLite reading a project's whole history, or on cloud sync. On a 1.2 GB database the claude-mem SessionStart hook took about 3 seconds (up to 44 s at worst). The queries behind it now read a few hundred pages instead of tens of thousands, the precomputed context file is used even with cloud sync on, and nothing at session start waits on the network. ### Performance - **Newest memories come straight from an index.** SessionStar | High | 10/5/2026 |
| v13.29.0 | ## The agent keeps its to-do list in claude-mem Every session now opens with a work-state section ahead of memory: a rule telling the agent to use claude-mem's `work_state_write` and `work_state_read` tools as its canonical to-do list, then whatever is still open in the project. Claude Code gives Claude 5 models no native to-do tool, so until now nothing recorded what was in progress or what was left when a session ended. The rest of the release adds an `openai-compatible` provider with presets | High | 10/3/2026 |
| v13.28.0 | ## Non-interactive installs now finish, and capture the signup `npx claude-mem install` run without a TTY (an AI agent, CI, a script) used to stop on "provider must be explicit". It now completes on its own and still gives the user a way to sign in afterwards. ### Installer - **Provider resolves instead of aborting.** A fresh non-interactive install with no `--provider` defaults to your Anthropic plan (local memory). An existing config keeps its saved provider, so `npx claude-mem update` neve | High | 9/26/2026 |
| v13.26.0 | ## CMEM Pro cloud sync moves off Cloudflare The old Cloudflare Worker hub (`sync-hub.black-pond-afbb.workers.dev`) was failing every request because it hit Cloudflare Free plan caps. Cloud sync now runs on a new protocol-v2 hub at **https://sync.cmem.ai** (Fly + Neon Postgres). ### Plugin changes - **Automatic hub URL migration:** on startup, a `CLAUDE_MEM_CLOUD_SYNC_HUB_URL` that still points at the legacy workers.dev host is rewritten to `https://sync.cmem.ai`. You don't need to reconnect. - | High | 9/26/2026 |
| v13.25.3 | ## 13.25.3 - security: harden unauthenticated settings writes and telemetry error scrubbing (#4166) npm publish is handled separately. | High | 9/21/2026 |
| v13.24.23 | ## 13.24.23 - fix(supervisor): jail SDK subprocess cwd (#4054) - fix(hooks): anchor project names to Claude project dir (#4055) npm publish is handled separately. | High | 9/11/2026 |
| v13.18.0 | Every CMEM Pro trial offer is now 30 days. The 7/14/30 installer split has been called โ 30 won on signups. The installer offers 30 days on every run, and the session-start banner, context banner, welcome hint, viewer header, and cursor-hooks docs now say 30 days and pass trial=30 explicitly, so a click can't land on a shorter arm. 7 and 14 remain valid values on [cmem.ai](http://cmem.ai). | High | 8/29/2026 |
| v13.15.2 | ## Observer errors now tell you what happened and what to do When the memory observer stops working โ most commonly a CMEM Pro allowance that's been used up โ claude-mem now says so in plain words, once, with the one thing to do about it. No more silent `OpenRouter upstream error (status 502)` retry loops. ### Fixes - **Worker carries the gateway's error envelope** (#3601): the OpenRouter classifier now understands the cmem.ai gateway's `{code, message, action, url, request_id}` errors and, fo | High | 8/16/2026 |
| v13.13.1 | ## Whatโs new - Adds an interactive `/mode-creator` workflow that turns a userโs domain and note-taking needs into a custom claude-mem mode. - Guides capture-type and tag design, including specialized suggestions when standard code mode is a useful baseline. - Installs custom modes in durable user storage and reports the active mode in startup context. - Adds optional tag-triggered Telegram notifications with guided bot configuration and verification. - Includes mode-authoring and Telegram refe | High | 8/3/2026 |
| v13.12.4 | Four root-cause fixes from the post-v13.12.2 issue batch. ## Fixes ### Shutdown teardown no longer skipped on a non-listening server handle (#3380) `performGracefulShutdown` treated Node's `ERR_SERVER_NOT_RUNNING` from `server.close()` as fatal in step 1, which skipped session drain, MCP close, Chroma stop, DB close, and supervisor stop โ the Windows port-hold symptom. An already-closed server now counts as closed (explicit code check, everything else still rejects), and `Server.listen()` assi | High | 7/23/2026 |
| v13.11.0 | ## Worker-native cloud sync (PR #3182) The standalone `cloud-sync.mjs` daemon is retired. The worker now syncs memories itself โ every local write nudges a background flusher that drains unsynced rows to cmem.ai, with no separate process to install or babysit. **New:** - `CloudSync` flusher: write-site nudges, 1.5s debounce coalescing write bursts, single-flight flush, 200-row/2MB pages, 30s request timeout, capped exponential backoff on failure - `GET /api/sync/status` โ pending counts per ki | High | 7/13/2026 |
| v13.9.3 | ## Changes - fix: eliminate all 331 error-handling anti-patterns detected by scanner (#3119) - chore: repo-wide over-engineering cleanup โ ponytail audit wave 1 & 2 (#3120) - Removed dead code, unused dependencies, and unused cmem-sdk client surface **Full Changelog**: https://github.com/thedotmack/claude-mem/compare/v13.9.2...v13.9.3 | High | 7/3/2026 |
| v13.8.0 | ## Telemetry: observation volume on per-session rollups Carries generation-side observation volume and type mix on the `observer_turn_rollup` event so cache-value KPIs survive the migration off the legacy per-occurrence `session_compressed` / `context_injected` streams. ### What's new - **`observer_turn_rollup`** now sums `observations_created` and the `obs_type_*` family (bugfix / discovery / decision / refactor / other) across every compression turn in a session. Paired with `total_cost_usd` | High | 6/21/2026 |
| v13.6.1 | Patch release. - feat(telemetry): backfill historical token-savings economics (#2934) โ backfills inferred generation-cost economics into anonymized daily telemetry rollups, with scrub coverage and tests. Full changelog: https://github.com/thedotmack/claude-mem/blob/main/CHANGELOG.md | High | 6/15/2026 |
| v13.4.1 | ## What's new ### ๐ฃ CMEM Online email opt-in during `npx claude-mem install` An optional, interactive email opt-in now appears at the start of the installer. Press Enter to skip โ it never blocks or fails the install. - Collects an email + an optional "what are you working on / how can we help your team" note. - POSTs to the live `https://cmem.ai/api/waitlist` endpoint (handles persistence, dedup, and the confirmation email server-side). Overridable via `CLAUDE_MEM_SIGNUP_URL`; tagged `source | High | 6/8/2026 |
| v13.4.0 | ## v13.4.0 โ Defect backlog clearance + provider extensibility Clears a large defect backlog (plans 01โ11 plus standalone fixes) and adds provider configurability. Test suite moved 46 โ 0 failing and typecheck 24 โ 0 errors over the branch. ### Features - **Configurable OpenAI-compatible base URL** for the OpenRouter provider (`CLAUDE_MEM_OPENROUTER_BASE_URL`) โ point claude-mem at DeepSeek, LM Studio, or any custom OpenAI-compatible endpoint. ### Fixes (highlights) - **Spawn contract (plan-0 | High | 5/29/2026 |
| v13.3.0 | ## What's New ### New skills - **design-is** (#2483) โ audits a design against Dieter Rams' ten "Good design is..." principles. Produces per-principle 0โ3 scores with file:line evidence and a NEW / REFINE / REDESIGN verdict, then hands off a ready-to-run `/make-plan` prompt. - **weekly-digests** (#2399) โ produces a chapter-per-ISO-week serial digest of a project's full claude-mem timeline. Sequential subagent pipeline keeps the narrative coherent across 30+ chapters. - **oh-my-issues** (#2409 | High | 5/21/2026 |
| v13.2.0 | ## What's new ### `wowerpoint` skill โ kawaii NotebookLM slide-deck generator Turn one source document into a kawaii NotebookLM slide-deck PDF. Wraps the `notebooklm` CLI with the kawaii-prompt + `--format detailed` defaults and a spawn-subagent pattern so generation (~10 min) never blocks the main conversation. - **Single-source-per-deck** is enforced by the workflow shape: confirm or write the source doc *before* adding it to NotebookLM. Don't paper over a weak source by stacking more sourc | High | 5/12/2026 |
| v13.0.0 | ## Highlights This is the **claude-mem 13** major release, landing the Server Beta runtime and the project's relicense. ### Server Beta runtime (opt-in) - Independent server-beta service with its own lifecycle (`claude-mem server start/status/stop`) - Postgres-backed observation storage - BullMQ + Redis observation queue engine (gated behind `CLAUDE_MEM_QUEUE_ENGINE=bullmq`, fail-fast) - New `/v1` REST API surface (events, sessions, memories, search, context, audit, jobs) - API-key auth + Bett | High | 5/8/2026 |
| v12.5.0 | ## Highlights **Observation pipeline cleanup โ kill the per-message retry counter.** The AI's parseable response is the only success signal; any other response (unparseable, empty, transport error) is a no-op. No more silent data loss after 3 retries. ## What changed - **Parser:** collapsed to binary `{ valid: true, observations, summary } | { valid: false }`. No more `kind`/`skipped` enum dispatch in callers. - **ResponseProcessor:** two branches only โ parseable โ store + clear pending โ br | High | 5/2/2026 |
| v12.4.8 | ## Bug Fixes - **timeline tool:** Coerce stringified numeric anchors (e.g. `"123"`) into the observation-ID dispatch path so they no longer fall through to ISO-timestamp parsing and return wrong-epoch windows. The HTTP layer always sends anchor as a string, so this fixes anchor lookups via MCP and HTTP across the board. (#2176) ## Tests - Added a 7-case regression suite covering JS-number anchors, stringified-number anchors (incl. whitespace-padded), session-ID anchors (`S<n>`), ISO-timestamp | High | 4/28/2026 |
| v12.3.9 | ## Highlights ### ๐ Security observation types + Telegram notifier - New observation types: `security_alert` ๐จ (high-priority, triggers notifications) and `security_note` ๐ (low-priority). - Fire-and-forget Telegram notifier โ MarkdownV2 formatting, per-observation error isolation, no token logging. - Five env vars control behavior. `CLAUDE_MEM_TELEGRAM_ENABLED` master toggle defaults on (no-op without bot token + chat ID). ### โก Stop hook: fire-and-forget summarize - Eliminated the ~110s t | High | 4/22/2026 |
| v12.3.8 | ## ๐ง Fix **Detect PID reuse in the worker start-guard so containers can restart cleanly.** (#2082) The `kill(pid, 0)` liveness check false-positived when the worker's PID file outlived its PID namespace โ most commonly after `docker stop` / `docker start` with a bind-mounted `~/.claude-mem`. The new worker would boot as the same low PID (often 11) as the old one, `kill(0)` would report "alive," and the worker would refuse to start *against its own prior incarnation*. Symptom: container appear | High | 4/21/2026 |
| v12.3.7 | ## What's Changed **Refactor: remove bearer auth and platform_source context filter** (#2081) - Drop bearer-token auth from the worker API. Worker binds localhost-only and CORS restricts origins to localhost โ the token added friction for every internal client (hooks, CLI, viewer, sync script) with no real security benefit for single-user local deployments. - Drop the unused `platform_source` query-time filter from the `/api/context/inject` pipeline (ContextBuilder, ObservationCompiler, Search | High | 4/20/2026 |
| v12.3.6 | ## Viewer fix: drop the rate limiter v12.3.5 kept the 300 req/min rate limiter from v12.3.3's "security hardening" bundle. That tripped the live viewer within seconds (it polls logs and stats) and served it "Rate limit exceeded" errors. **Fix**: remove the rate limiter entirely. The worker is localhost-only (enforced via CORS), so there's no abuse surface to protect. Rate-limiting a single-user local process is security theater. ### Still kept from v12.3.3 hardening - 5 MB JSON body limit - P | High | 4/20/2026 |
| v12.3.5 | ## Restored v12.3.3 fixes minus bearer auth v12.3.3 shipped 25 bug fixes under "Issue Blowout 2026" but also introduced bearer-token auth that broke SessionStart context injection for everyone. v12.3.4 rolled everything back to v12.3.2 to unblock users. **v12.3.5 restores all 25 fixes**, with the bearer-auth mechanism surgically removed. ### Kept hardening from v12.3.3 - 5 MB JSON body limit - In-memory rate limiter (300 req/min/IP) - Path traversal protection on `watch.context.path` - `Resta | High | 4/20/2026 |
| v12.3.4 | ## Rollback of v12.3.3 v12.3.3 (Issue Blowout 2026, PR #2080) broke SessionStart context injection โ new sessions received no memory context from claude-mem. This release reverts to the v12.3.2 tree state while the regression is investigated. ### Reverted - #2080 โ Issue Blowout 2026 (25 bugs across worker, hooks, security, and search) ### Notes No functional changes from v12.3.2. A follow-up release will re-land the v12.3.3 fixes individually once the context regression is identified and res | High | 4/20/2026 |
| v12.3.3 | ## Issue Blowout 2026 โ 25 bugs across worker, hooks, security, and search ### Security Hardening - Bearer token authentication for all worker API endpoints with auto-generated tokens - Path traversal protection on context write paths - Per-user worker port derivation (37700 + uid%100) to prevent cross-user data leakage - Rate limiting (300 req/min/IP) and reduced JSON body limit (50MB โ 5MB) - Caller headers can no longer override the bearer auth token ### Worker Stability - Time-windowed Res | High | 4/20/2026 |
| v12.3.2 | ## Bug Fixes - **Search**: Fix `concept`/`concepts` parameter mismatch in `/api/search/by-concept` (#1916) - **Search**: Add FTS5 keyword fallback when ChromaDB is unavailable (#1913, #2048) - **Database**: Add periodic `clearFailed()` to purge stale pending messages (#1957) - **Database**: Add WAL checkpoint schedule and `journal_size_limit` to prevent unbounded growth (#1956) - **Worker**: Mark messages as failed (with retry) instead of confirming on non-XML responses (#1874) - **Worker**: In | High | 4/20/2026 |
| v12.3.1 | ## Error Handling & Code Quality This patch release resolves error handling anti-patterns across the entire codebase (91 files), improving resilience and correctness. ### Bug Fixes - **OpenRouterAgent**: Restored assistant replies to `conversationHistory` โ multi-turn context was lost after method extraction (#2078) - **ChromaSync**: Fixed cross-type dedup collision where `observation#N`, `session_summary#N`, and `user_prompt#N` could silently drop results - **Timeline queries**: Fixed logger | High | 4/20/2026 |
| v12.3.0 | ## New features ### Basic claude-mem Docker container (`docker/claude-mem/`) A ready-to-run container for ad-hoc claude-mem testing with zero local setup beyond Docker. - `FROM node:20`; layers pinned Bun (1.3.12) + uv (0.11.7) + the built plugin - Non-root `node` user so `--permission-mode bypassPermissions` works headlessly - `build.sh`, `run.sh` (auto-extracts OAuth from macOS Keychain or `~/.claude/.credentials.json`, falls back to `ANTHROPIC_API_KEY`), `entrypoint.sh` - Persistent `.claud | High | 4/20/2026 |
| v12.2.3 | ## Fixed - **Parser: stop warning on normal observation responses (#2074).** Eliminated the `PARSER Summary response contained <observation> tags instead of <summary> โ prompt conditioning may need strengthening` warning that fired on every normal observation turn. The warning was inherited from #1345 when `parseSummary` was only called after summary prompts; after #1633's refactor it runs on every response, so the observation-only fallthrough always tripped. Gated the entire observation-on-sum | High | 4/19/2026 |
| v12.2.2 | ## Subagent summary disable + labeling Claude Code subagents (the Task tool and built-in agents like Explore/Plan/Bash) no longer trigger a session summary on Stop, and every observation row now carries the originating subagent's identity. ### Features - **Subagent Stop hooks skip summarization.** When a hook fires inside a subagent (identified by `agent_id` on stdin), the handler short-circuits before bootstrapping the worker. Only the main assistant owns the session summary. Sessions starte | High | 4/19/2026 |
| v12.2.1 | ## What's Fixed ### Break infinite summary-retry loop (#1633) When the summary agent returned `<observation>` tags instead of `<summary>` tags, the parser rejected the response, no summary was stored, the session completed without a summary, and a new session was spawned with ~5โ6 KB of extra prompt context โ repeating indefinitely. **Three layers of defense (PR #2072):** - **Parser coercion** โ when a summary is expected, observation fields are mapped to summary fields (title โ request/comp | High | 4/19/2026 |
| v12.2.0 | ## Highlights **Worktree Adoption** โ When a git worktree is merged back into its parent branch, its observations are now consolidated into the parent project's view, so memory follows the code after a merge. ## Features - **Worktree adoption engine** โ consolidates merged-worktree observations under the parent project (#2052) - **`npx claude-mem adopt`** โ new CLI command with `--dry-run` and `--branch X` flags for manual adoption - **Auto-adoption on worker startup** โ merged worktrees are | High | 4/18/2026 |
| v12.1.6 | ## Fix **Critical regression fix (#2049): observations no longer save on Claude Code 2.1.109+** Resolves 100% observation/summary failure on Claude Code 2.1.109+ caused by a latent bug in how the bundled Agent SDK emits the `--setting-sources` flag. ### Root cause The Agent SDK emits `["--setting-sources", ""]` whenever `settingSources` defaults to `[]`. Our existing Bun-compat filter stripped the empty string but left an orphan `--setting-sources` flag, which then consumed the following `-- | High | 4/16/2026 |
| v12.1.5 | ## v12.1.5 โ Forced update to ship --setting-sources fix Users on v12.1.3 experience 100% observation failure due to empty-string arg filtering corrupting `--setting-sources` on Claude Code 2.1.109+. The fix already landed in v12.1.4 (commit 3d92684 โ `fix: filter empty string args before Bun spawn()`). This release forces the update to propagate across npm and the marketplace so every user gets the fix. ## Backlog cleanup Also shipped earlier today: the April 2026 backlog consolidation merged | High | 4/15/2026 |
| v12.1.4 | ## Bug Fixes - **Revert unauthorized $CMEM branding**: A prior Claude instance inserted `$CMEM` token branding into the context injection header during a compression refactor. Reverted back to the original descriptive format: `# [project] recent context, datetime` | High | 4/15/2026 |
| v12.1.3 | ## What's Changed ### Reverted - **Remove overengineered summary salvage logic** (#1850) โ Reverts PR #1718 which fabricated synthetic summaries from observation data when the AI returned `<observation>` instead of `<summary>` tags. Missing a summary is preferable to creating a fake one with poorly-mapped fields. **Full Changelog**: https://github.com/thedotmack/claude-mem/compare/v12.1.2...v12.1.3 | High | 4/15/2026 |
| v12.1.2 | ## Community PRs merged (15) **Runtime & reliability** - #1698 Reap stuck generators in reapStaleSessions (@ousamabenyounes) - #1697 Circuit breaker on OpenClaw worker client (@ousamabenyounes) - #1696 Resolve Setup hook reference, warn on macOS-only binary (@ousamabenyounes) - #1693 Session lifecycle guards to prevent runaway API spend (@ousamabenyounes) - #1692 Resolve Gemini CLI 0.37.0 session capture failures (@ousamabenyounes) **Cross-platform & hooks** - #1833 Replace hardcoded nvm/homeb | High | 4/15/2026 |
| v12.1.1 | ## v12.1.1 โ Backlog Burn-Down Patch 14 community PRs merged + 1 post-merge bug fix. This patch addresses the most impactful bugs across summary persistence, MCP compliance, cross-platform compatibility, and data integrity. ### Highlights **Summary pipeline fix** โ When the LLM returns `<observation>` tags instead of `<summary>` tags (~72% of the time on v12.0.x), data is now salvaged into a synthetic summary instead of being silently discarded. (#1718) **MCP compliance** โ `list_corpora` no | High | 4/15/2026 |
| v12.1.0 | ## Knowledge Agents Build queryable AI "brains" from your claude-mem observation history. Compile a filtered slice of your past work into a corpus, prime it into a Claude session, and ask questions conversationally โ getting synthesized, grounded answers instead of raw search results. ### New Features - **Knowledge Agent system** โ full lifecycle: build, prime, query, reprime, rebuild, delete - **6 new MCP tools**: `build_corpus`, `list_corpora`, `prime_corpus`, `query_corpus`, `rebuild_corpu | High | 4/9/2026 |
| v12.0.1 | ## ๐ด Hotfix: MCP server crashed with `Cannot find module 'bun:sqlite'` under Node v12.0.0 shipped a broken MCP server bundle that crashed on the very first `require()` call because a transitive import pulled `bun:sqlite` (a Bun-only module) into a bundle that runs under Node. Every MCP-only client (Codex and any flow that boots the MCP tool surface) was completely broken on v12.0.0. ### Root cause `src/servers/mcp-server.ts` imported `ensureWorkerStarted` from `worker-service.ts`, which tran | Medium | 4/8/2026 |
| v12.0.0 | # claude-mem v12.0.0 A major release delivering intelligent file-read gating, expanded language support for smart-explore, platform source isolation, and 40+ bug fixes across Windows, Linux, and macOS. ## Highlights ### File-Read Decision Gate Claude Code now intelligently gates redundant file reads. When a file has prior observations in the timeline, the PreToolUse hook injects the observation history and blocks the read โ saving tokens and keeping context focused. The gate supports both `Re | Medium | 4/7/2026 |
| v11.0.1 | ## v11.0.1 โ Disable Semantic Inject by Default **Patch release** โ Changes `CLAUDE_MEM_SEMANTIC_INJECT` default from `true` to `false`. ### What changed - Per-prompt Chroma vector search on `UserPromptSubmit` is now **opt-in** rather than opt-out - Reduces latency and context noise for users who haven't explicitly enabled it - Users can re-enable via `CLAUDE_MEM_SEMANTIC_INJECT=true` in `~/.claude-mem/settings.json` ### Why The semantic inject fires on every prompt and often surfaces tangent | Medium | 4/6/2026 |
| v11.0.0 | ## claude-mem v11.0.0 **4 releases today** ยท 21 commits ยท 6,051 insertions ยท 34 files changed ### Features #### Semantic Context Injection (#1568) Every `UserPromptSubmit` now queries ChromaDB for the top-N most relevant past observations and injects them as context. Replaces recency-based "last N observations" with relevance-based semantic search. Survives `/clear`, skips trivial prompts (<20 chars), and degrades gracefully when Chroma is unavailable. #### Tier Routing by Queue Complexity T | Medium | 4/5/2026 |
| v10.7.2 | ## Bug Fix - **fix**: Downgrade concept-type cleanup log from error to debug (#1606) โ reduces noise in logs by treating routine concept-type cleanup as debug-level rather than error-level logging. | Medium | 4/5/2026 |
| v10.7.1 | ## Bug Fix **Restore full interactive installer** โ the install simplification in v10.7.0 (commit 21b10b46) over-applied scope and replaced the entire `runInstallCommand` with just two `claude` CLI commands. This gutted the interactive IDE multi-select, `--ide` flag, and all 13 IDE-specific setup dispatchers. ### What changed - **Claude Code**: now uses native `claude plugin marketplace add` + `claude plugin install` (the intended simplification) - **All other IDEs** (Gemini CLI, OpenCode, Win | Medium | 4/5/2026 |
| v10.7.0 | ## What's New ### Simplified Installation - Install command now delegates to native Claude Code plugin system: `claude plugin marketplace add thedotmack/claude-mem && claude plugin install claude-mem` - Reduced install.ts from 536 lines to 36 lines ### Multi-IDE Support (NPX CLI) - Gemini CLI hooks installer with lifecycle event mapping - Windsurf hooks installer with project registry and context injection - OpenCode plugin installer with AGENTS.md context injection - OpenClaw plugin installer | Medium | 4/4/2026 |
| v10.6.3 | ## v10.6.3 โ Critical Patch Release ### Bug Fixes - **Fix MCP server crash**: Removed erroneous `import.meta.url` ESM-compat banner from CJS files that caused Node.js startup failures - **Fix 7 critical bugs** affecting all non-dev-machine users and Windows: - Hook registration paths corrected for plugin distribution - Worker service spawn handling hardened for Windows - Environment sanitization for cross-platform compatibility - ProcessManager Windows spawn catch block improvements | Medium | 3/29/2026 |
| v10.6.2 | ## fix: Activity spinner stuck spinning forever The viewer UI activity spinner would spin indefinitely because `isAnySessionProcessing()` queried all pending/processing messages in the database globally โ including orphaned messages from dead sessions that no generator would ever process. These orphans caused `isProcessing=true` forever. ### Changes - Scoped `isAnySessionProcessing()` and `hasPendingMessages()` to only check sessions in the active in-memory Map, so orphaned DB messages no lon | Low | 3/21/2026 |
| v10.6.1 | ### New Features - **Timeline Report Skill** โ New `/timeline-report` skill generates narrative "Journey Into [Project]" reports from claude-mem's development history with token-aware economics - **Git Worktree Detection** โ Timeline report automatically detects git worktrees and uses parent project as data source - **Compressed Context Output** โ Markdown context injection compressed ~53% (tables โ compact flat lines), reducing token overhead in session starts - **Full Observation Fetch** โ Add | Low | 3/18/2026 |
| v10.6.0 | ## OpenClaw: System prompt context injection The OpenClaw plugin no longer writes to `MEMORY.md`. Instead, it injects the observation timeline into each agent's system prompt via the `before_prompt_build` hook using `appendSystemContext`. This keeps `MEMORY.md` under the agent's control for curated long-term memory. Context is cached for 60 seconds per project. ## New `syncMemoryFileExclude` config Exclude specific agent IDs from automatic context injection (e.g., `["snarf", "debugger"]`). Ob | Low | 3/18/2026 |
| v10.5.6 | ## Patch: Process Supervisor Hardening & Logging Cleanup ### Fixes - **Downgrade HTTP request/response logging from INFO to DEBUG** โ eliminates noisy per-request log spam from the viewer UI polling - **Fix `isPidAlive(0)` returning true** โ PID 0 is the kernel scheduler, not a valid child process - **Fix signal handler race condition** โ added `shutdownInitiated` flag to prevent duplicate shutdown cascades when signals arrive before `stopPromise` is set - **Remove unused `dataDir` parameter** | Low | 3/16/2026 |
| v10.5.5 | ### Bug Fix - **Fixed empty context queries after mode switching**: Switching from a non-code mode (e.g., law-study) back to code mode left stale observation type/concept filters in `settings.json`, causing all context queries to return empty results. All modes now read types/concepts from their mode JSON definition uniformly. ### Cleanup - Removed dead `CLAUDE_MEM_CONTEXT_OBSERVATION_TYPES` and `CLAUDE_MEM_CONTEXT_OBSERVATION_CONCEPTS` settings constants - Deleted `src/constants/observation- | Low | 3/9/2026 |
| v10.5.4 | ## Bug Fixes - **fix: restore modes to correct location** โ All modes (`code`, code language variants, `email-investigation`) were erroneously moved from `plugin/modes/` to `plugin/hooks/modes/` during the v10.5.3 release, breaking mode loading. This patch restores them to `plugin/modes/` where they belong. | Low | 3/9/2026 |
| v10.5.3 | ## What's New ### Law Study Mode Adds `law-study` โ a purpose-built claude-mem mode for law students. **Observation Types:** - **Case Holding** โ 2-3 sentence brief with extracted legal rule - **Issue Pattern** โ exam trigger or fact pattern that signals a legal issue - **Prof Framework** โ professor's analytical lens and emphasis for a topic - **Doctrine / Rule** โ legal test or standard synthesized from cases/statutes - **Argument Structure** โ legal argument or counter-argument worked thro | Low | 3/9/2026 |
| v10.5.2 | ## Smart Explore Benchmark Docs & Skill Update ### Documentation - Published smart-explore benchmark report to public docs โ full A/B comparison with methodology, raw data tables, quality assessment, and decision framework - Added benchmark report to docs.json navigation under Best Practices ### Smart Explore Skill - Updated token economics with benchmark-accurate data (11-18x savings on exploration, 4-8x on file understanding) - Added "map first" core principle as decision heuristic for tool | Low | 2/26/2026 |
| v10.5.1 | ### Bug Fix - Restored hooks.json to pre-smart-explore configuration (re-adds Setup hook, separate worker start command, PostToolUse matcher) | Low | 2/26/2026 |
| v10.5.0 | ## Smart Explore: AST-Powered Code Navigation This release introduces **Smart Explore**, a token-optimized structural code search system built on tree-sitter AST parsing. It applies the same progressive disclosure pattern used in human-readable code outlines โ but programmatically, for AI agents. ### Why This Matters The standard exploration cycle (Glob โ Grep โ Read) forces agents to consume entire files to understand code structure. A typical 800-line file costs ~12,000 tokens to read. Smar | Low | 2/26/2026 |
| v10.4.4 | ## Fix - **Remove `save_observation` from MCP tool surface** โ This tool was exposed as an MCP tool available to Claude, but it's an internal API-only feature. Removing it from the MCP server prevents unintended tool invocation and keeps the tool surface clean. | Low | 2/26/2026 |
| v10.4.3 | ## Bug Fixes - **Fix PostToolUse hook crashes and 5-second latency (#1220)**: Added missing `break` statements to all 7 switch cases in `worker-service.ts` preventing fall-through execution, added `.catch()` on `main()` to handle unhandled promise rejections, and removed redundant `start` commands from hook groups that triggered the 5-second `collectStdin()` timeout - **Fix CLAUDE_PLUGIN_ROOT fallback for Stop hooks (#1215)**: Added POSIX shell-level `CLAUDE_PLUGIN_ROOT` fallback in `hooks.json | Low | 2/25/2026 |
| v10.4.2 | ## Bug Fixes - **Fix PostToolUse hook crashes and 5-second latency (#1220)**: Added missing `break` statements to all 7 switch cases in `worker-service.ts` preventing fall-through execution, added `.catch()` on `main()` to handle unhandled promise rejections, and removed redundant `start` commands from hook groups that triggered the 5-second `collectStdin()` timeout - **Fix CLAUDE_PLUGIN_ROOT fallback for Stop hooks (#1215)**: Added POSIX shell-level `CLAUDE_PLUGIN_ROOT` fallback in `hooks.json | Low | 2/25/2026 |
| v10.4.1 | ### Refactor - **Skills Conversion**: Converted `/make-plan` and `/do` commands into first-class skills in `plugin/skills/`. - **Organization**: Centralized planning and execution instructions alongside `mem-search`. - **Compatibility**: Added symlinks for `openclaw/skills/` to ensure seamless integration with OpenClaw. ### Chore - **Version Bump**: Aligned all package and plugin manifests to v10.4.1. | Low | 2/24/2026 |
| v10.4.0 | ## v10.4.0 โ Stability & Platform Hardening Massive reliability release: 30+ root-cause bug fixes across 10 triage phases, plus new features for agent attribution, Chroma control, and broader platform support. ### New Features - **Session custom titles** โ Agents can now set `custom_title` on sessions for attribution (migration 23, new endpoint) - **Chroma toggle** โ `CLAUDE_MEM_CHROMA_ENABLED` setting allows SQLite-only fallback mode (#707) - **Plugin disabled state** โ Early exit check in a | Low | 2/24/2026 |
| v10.3.3 | ### Bug Fixes - Fixed session context footer to reference the claude-mem skill instead of MCP search tools for accessing memories | Low | 2/23/2026 |
| v10.3.2 | ## Bug Fixes - **Worker startup readiness**: Worker startup hook now waits for full DB/search readiness before proceeding, fixing the race condition where hooks would fire before the worker was initialized on first start (#1210) - **MCP tool naming**: Renamed `save_memory` to `save_observation` for consistency with the observation-based data model (#1210) - **MCP search instructions**: Updated MCP server tool descriptions to accurately reflect the 3-layer search workflow (#1210) - **Installer h | Low | 2/23/2026 |
| v10.3.1 | ## Fix: Prevent Duplicate Worker Daemons and Zombie Processes Three root causes of chroma-mcp timeouts identified and fixed: ### PID-based daemon guard Exit immediately on startup if PID file points to a live process. Prevents the race condition where hooks firing simultaneously could start multiple daemons before either wrote a PID file. ### Port-based daemon guard Exit if port 37777 is already bound โ runs before WorkerService constructor registers keepalive signal handlers that previously | Low | 2/19/2026 |
| v10.3.0 | ## Replace WASM Embeddings with Persistent chroma-mcp MCP Connection ### Highlights - **New: ChromaMcpManager** โ Singleton stdio MCP client communicating with chroma-mcp via `uvx`, replacing the previous ChromaServerManager (`npx chroma run` + `chromadb` npm + ONNX/WASM) - **Eliminates native binary issues** โ No more segfaults, WASM embedding failures, or cross-platform install headaches - **Graceful subprocess lifecycle** โ Wired into GracefulShutdown for clean teardown; zombie process prev | Low | 2/18/2026 |
| v10.2.6 | ## Bug Fixes ### Zombie Process Prevention (#1168, #1175) Observer Claude CLI subprocesses were accumulating as zombies โ processes that never exited after their session ended, causing massive resource leaks on long-running systems. **Root cause:** When observer sessions ended (via idle timeout, abort, or error), the spawned Claude CLI subprocesses were not being reliably killed. The existing `ensureProcessExit()` in `SDKAgent` only covered the happy path; sessions terminated through `Session | Low | 2/18/2026 |
| v10.2.5 | ### Bug Fixes - **Self-healing message queue**: Renamed `claimAndDelete` โ `claimNextMessage` with atomic self-healing โ automatically resets stale processing messages (>60s) back to pending before claiming, eliminating stuck messages from generator crashes without external timers - **Removed redundant idle-timeout reset**: The `resetStaleProcessingMessages()` call during idle timeout in worker-service was removed (startup reset kept), since the atomic self-healing in `claimNextMessage` now han | Low | 2/18/2026 |
| v10.2.4 | ## Chroma Vector DB Backfill Fix Fixes the Chroma backfill system to correctly sync all SQLite observations into the vector database on worker startup. ### Bug Fixes - **Backfill all projects on startup** โ `backfillAllProjects()` now runs on worker startup, iterating all projects in SQLite and syncing missing observations to Chroma. Previously `ensureBackfilled()` existed but was never called, leaving Chroma with incomplete data after cache clears. - **Fixed critical collection routing bug* | Low | 2/18/2026 |