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