github thedotmack/claude-mem v10.4.0

latest release: v10.4.1
5 hours ago

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 toggleCLAUDE_MEM_CHROMA_ENABLED setting allows SQLite-only fallback mode (#707)
  • Plugin disabled state — Early exit check in all hook entry points when plugin is disabled (#781)
  • Context re-injection guardcontextInjected session flag prevents re-injecting context on every UserPromptSubmit turn (#1079)

Bug Fixes

Data Integrity

  • SHA-256 content-hash deduplication on observation INSERT (migration 22 with backfill + index)
  • Project name collision fix: getCurrentProjectName() now returns parent/basename
  • Empty project string guard with cwd-derived fallback
  • Stuck isProcessing reset: pending work older than 5 minutes auto-clears

ChromaDB

  • Python version pinning in uvx args for both local and remote mode (#1196, #1206, #1208)
  • Windows backslash-to-forward-slash path conversion for --data-dir (#1199)
  • Metadata sanitization: filter null/undefined/empty values in addDocuments() (#1183, #1188)
  • Transport error auto-reconnect in callTool() (#1162)
  • Stale transport retry with transparent reconnect (#1131)

Hook Lifecycle

  • Suppress process.stderr.write in hookCommand() to prevent diagnostic output showing as error UI (#1181)
  • Route all console.error() through logger instead of stderr
  • Verified all 7 handlers return suppressOutput: true (#598, #784)

Worker Lifecycle

  • PID file mtime guard prevents concurrent restart storms (#1145)
  • getInstalledPluginVersion() ENOENT/EBUSY handling (#1042)

SQLite Migrations

  • Schema initialization always creates core tables via CREATE TABLE IF NOT EXISTS
  • Migrations 5-7 check actual DB state instead of version tracking (fixes version collision between old/new migration systems, #979)
  • Crash-safe temp table rebuilds

Platform Support

  • Windows: cmd.exe /c uvx spawn, PowerShell $_ elimination with WQL filtering, windowsHide: true, FTS5 runtime probe with fallback (#1190, #1192, #1199, #1024, #1062, #1048, #791)
  • Cursor IDE: Adapter field fallbacks, tolerant session-init validation (#838, #1049)
  • Codex CLI: session_id fallbacks, unknown platform tolerance, undefined guard (#744)

API & Infrastructure

  • /api/logs OOM fix: tail-read replaces full-file readFileSync (64KB expanding chunks, 10MB cap, #1203)
  • CORS: explicit methods and allowedHeaders (#1029)
  • MCP type coercion for batch endpoints: string-to-array for ids and memorySessionIds
  • Defensive observation error handling returns 200 on recoverable errors instead of 500
  • .git/ directory write guard on all 4 CLAUDE.md/AGENTS.md write sites (#1165)

Stale AbortController Fix

  • lastGeneratorActivity timestamp tracking with 30s timeout (#1099)
  • Stale generator detection + abort + restart in ensureGeneratorRunning
  • AbortSignal.timeout(30000) in deleteSession prevents indefinite hang

Installation

  • resolveRoot() replaces hardcoded marketplace path using CLAUDE_PLUGIN_ROOT env var (#1128, #1166)
  • installCLI() path correction and verifyCriticalModules() post-install check
  • Build-time distribution verification for skills, hooks, and plugin manifest (#1187)

Testing

  • 50+ new tests across hook lifecycle, context re-injection, plugin distribution, migration runner, data integrity, stale abort controller, logs tail-read, CORS, MCP type coercion, and smart-install
  • 68 files changed, ~4200 insertions, ~900 deletions

Don't miss a new claude-mem release

NewReleases is sending notifications on new releases.