v12.1.1
thedotmack/claude-memv12.1.1Apr 15, 2026by thedotmack
AI Summary
A patch release addressing critical bugs across summary persistence, MCP compliance, cross-platform compatibility, and data integrity. The most notable fix salvages synthetic summaries when AI returns observation tags instead of summary tags, which was happening ~72% of the time in v12.0.x.
Key Highlights
- Summary pipeline now salvages data when AI returns `<observation>` tags instead of `<summary>` tags (~72% of v12.0.x cases)
- MCP compliance: `list_corpora` returns proper `CallToolResult` objects instead of bare arrays
- Search and timeline tools now declare `inputSchema.properties` for proper MCP compliance
- Data integrity: Ghost observations filtered before storage, search queries scoped to current project
- Session status now exposes `summaryStored` for silent summary loss detection
New Features
- Summary salvage capability - synthesizes summary from observation tags when AI returns wrong format
- Proper MCP tool result wrapping for `list_corpora`
- Input schema declarations for search and timeline MCP tools
- Cross-platform compatibility improvements for Windows (DEP0190) and LF line endings on plugins
Full Release Notes
## 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` now returns proper `CallToolResult` objects instead of bare arrays that crashed MCP clients. Search and timeline tools now declare `inputSchema.properties`. (#1701, #1555) **Data integrity** — Ghost observations with no content fields are now filtered before storage. Search queries are now scoped to the current project via `WHERE project = ?`. (#1676, #1688... wait, #1688 wasn't in this batch) ### Bug Fixes - **fix(ResponseProcessor):** salvage synthetic summary when AI returns `<observation>` instead of `<summary>` (#1718) - **fix(ResponseProcessor):** broadcast uses `summaryForStore` to support salvaged summaries (post-merge fix for #1718) - **fix(hooks):** soft-fail SessionStart health check on cold start (#1725) - **fix(deps):** upgrade glob ^11.0.3 → ^13.0.0 for CVE fix (#1724, #1717) - **fix(MCP):** wrap `list_corpora` response in CallToolResult shape (#1701, #1700) - **fix(MCP):** declare inputSchema properties for search and timeline tools (#1555, #1384, #1413) - **fix(config):** use bun to run mcp-server.cjs instead of node shebang (#1658, #1648) - **fix(parser):** filter ghost observations with no content fields (#1676, #1625) - **fix(chroma):** set cwd to homedir when spawning chroma-mcp to prevent .env.local crash (#1679, #1297) - **fix(Windows):** avoid DEP0190 deprecation by using single-string spawnSync (#1677, #1503) - **fix(worker):** suppress false ERROR when duplicate daemon loses port bind race (#1680, #1447) - **fix(session):** expose `summaryStored` in session status for silent summary loss detection (#1686, #1633) - **fix(cross-platform):** add .gitattributes to enforce LF endings on plugin scripts (#1678, #1342) - **fix(tests):** remove leaky mock.module() that polluted parallel workers (#1666, #1299) ### Docs - Add Language Support section to smart-explore/SKILL.md (#1670, #1651) - Remove misplaced tree-sitter docs from mem-search/SKILL.md ### Contributors @ousamabenyounes (10 PRs), @aaronwong1989, @kbroughton, @joao-oliveira-softtor, @octo-patch, @ck0park