Skip to content

Releases: thedotmack/claude-mem

v13.11.0

Choose a tag to compare

@thedotmack thedotmack released this 13 Jul 04:01

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 kind, last flush time, last error
  • /cloud-sync skill — status checks, first-run credential migration from the legacy .cloud-sync.env, daemon retirement, and worker restart runbook

Fixed:

  • Prompts now join through sdk_sessions to push their real memory_session_id/project instead of an unresolvable fallback — cloud-side prompt-to-session views (Summary ⇄ Prompt toggle, Replay) can now actually find their prompt
  • Schema v40 self-repair: on upgrade, every previously-synced prompt (including ones uploaded by the legacy daemon) is re-queued and re-pushed through the fixed mapper; a backfill lane header suppresses realtime broadcast storms during that re-push
  • Closed a race where a session's memory id registering while its prompt's upload was still in flight could leave that prompt permanently mis-keyed in the cloud — the stamp is now guarded per row and re-pushes with the corrected mapping instead

Migration: fully automatic and backward compatible. Existing standalone cloud-sync users are migrated on first /cloud-sync run after upgrading; installs with no cloud sync configured are unaffected.

v13.10.3-community-edge.0 community edge

Choose a tag to compare

Community edge release for integrated batches 4-9. See PR #3172
and plans/2026-07-07-community-edge-batches-4-9-integration.md.

v13.10.2

Choose a tag to compare

@thedotmack thedotmack released this 05 Jul 22:47
804504b

Patch release focused on cross-platform stability and worker/runtime correctness.

Fixes

  • Worker host: clients now honor CLAUDE_MEM_WORKER_HOST (the address the server actually binds), with IPv6 literals bracketed correctly in health checks and display URLs.
  • Worker identity: cache/marketplace/MCP/CLI/restart launches converge on one worker bundle (stops version-skew from two builds on one port).
  • Windows: centralized spawn shims remove the shell:true footgun; codex hooks emit a Windows-executable command instead of a POSIX-only one.
  • Install: repair now restores the marketplace runtime root (not just the cache); ships the plugin/sqlite runtime modules that were causing MODULE_NOT_FOUND on clean installs.
  • SQLite/settings: atomic settings writes, busy_timeout to avoid SQLITE_BUSY under concurrent worker/hook access, a migration column re-check, and removal of an index create that could crash boot on legacy duplicate rows.
  • Supervisor: preserves HTTPS_PROXY and Bedrock/Vertex skip-auth env for the SDK subprocess.
  • Worktree: relative gitdir: pointers resolved correctly.

Docs

  • New Release Branches guide (main / core-dev / community-edge) with instructions for running the non-stable lines locally.

Deliberately excluded: client-side observer truncation (kept out per #3096) and project-identity re-keying (kept the #2663 repo-root key).

v13.10.1

Choose a tag to compare

@thedotmack thedotmack released this 04 Jul 04:53

Fixes

  • Codex SessionStart hook no longer fails at startup. When a hook errored before its handler ran (missing session_id, invalid cwd, or a missing transcript path), claude-mem fell back to a bare {"continue":true} regardless of which hook fired. Codex's strict SessionStart validator rejects that shape as "invalid session start JSON output," breaking context injection at Codex startup. The fallback now emits a valid hookSpecificOutput: { hookEventName: "SessionStart", additionalContext: "" } for the context hook, matching what Codex expects.
  • Fixed a related gap where the Codex adapter silently dropped an explicit empty-string additionalContext from its output instead of preserving it, which could leave the SessionStart payload incomplete.

Closes #2947, #2972. Supersedes #2953 and #2948.

v13.10.0

Choose a tag to compare

@thedotmack thedotmack released this 04 Jul 02:17

Antigravity CLI support, Gemini CLI removed

Google deprecated Gemini CLI's free/individual tier (cutoff June 18, 2026) in favor of Antigravity CLI, the official successor announced May 19, 2026. This release migrates claude-mem accordingly.

Removed

  • Gemini CLI host integration (adapter, installer, IDE-detection entry, hooks, dedicated docs/tests). The separate, still-supported Gemini LLM/observation provider (CLAUDE_MEM_GEMINI_API_KEY, GeminiProvider) is unaffected.

Added

  • Full Antigravity CLI (agy) support at feature parity: hooks (7-event map sharing Gemini CLI's proven ~/.gemini/settings.json), dual MCP server registration, and GEMINI.md/rules-file context injection.
  • npx claude-mem antigravity-cli install|status|uninstall subcommand support.

Verified end-to-end against a real live Antigravity CLI install, including hook firing, MCP tool registration, and context injection.

v13.9.3

Choose a tag to compare

@thedotmack thedotmack released this 03 Jul 05:23

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: v13.9.2...v13.9.3

v13.9.2

Choose a tag to compare

@thedotmack thedotmack released this 01 Jul 04:52

Bug Fix

Removed client-side context truncation from the provider layer.

The OpenAICompatibleProvider applied a sliding-window truncation to conversation history — a hardcoded 20-message cap and a 100k-token "safety" limit layered on top of the model's own context window. In practice it fired on message count alone, dropping conversation messages at ~12k tokens (nowhere near the token limit) and silently corrupting history, mislabeled as "runaway cost" prevention. This broke setups whose real model context window bore no relation to those hardcoded assumptions.

The full conversation history is now sent to the provider, which owns its own context window.

Removed

  • OpenAICompatibleProvider.truncateHistory() and the requireNonEmptyToTruncate flag
  • truncateHistoryForOpenRouter / truncateHistoryForGemini wrappers and their message/token constants
  • CLAUDE_MEM_{GEMINI,OPENROUTER}_MAX_CONTEXT_MESSAGES / _MAX_TOKENS settings, defaults, and validation
  • Related tests, docs, and installer references

Merged in #3096. Verified: tsc clean, 2248 tests passing, build-and-sync clean.

v13.9.1

Choose a tag to compare

@thedotmack thedotmack released this 29 Jun 23:47

What's Changed

Patch release shipping the platform-source recovery work merged in #3088, plus dependency and Codex hardening.

Fixes

  • codex: load startup context through MCP, with HTTP fallback to the worker
  • codex: avoid shell spawning the Codex installer
  • recovery: scope memories by platform source
  • observer: drop invalid prose and pause on quota
  • chroma: prewarm uvx and harden shutdown
  • deps: surface dependency-health preflight and degrade gracefully when CLI deps are missing
  • telemetry: replace Bun UUIDv5 dependency

Tests

  • Stabilize session init after the server rename
  • Restore Chroma MCP mock to prevent cross-suite leakage

Full Changelog: v13.9.0...v13.9.1

v13.9.0

Choose a tag to compare

@thedotmack thedotmack released this 29 Jun 22:28

Highlights

🚀 New: `claude-mem/sdk` (cmem-sdk)

A fully in-process capture → compress → semantic-search pipeline with no HTTP worker and no Redis. Import `createCmemClient` from `claude-mem/sdk`, point it at Postgres + a running `uvx chroma-mcp` + an LLM provider, and call `capture`/`generate`/`search`/`context`/session methods directly.

  • New reference docs: CMEM-SDK Reference under SDK & Embedding.
  • Bundle keeps `pg`, `zod`, `@modelcontextprotocol/sdk`, and `@anthropic-ai/sdk` external so consumers resolve them against the installed package.

♻️ Server runtime rename

`server-beta` → `server` across the runtime, with intentional back-compat aliases for existing settings files. Removed inert `ProviderRegistry`/`EventBroadcaster` boundaries and consolidated the queue resolver.

🐛 Fixes

  • `generate()`: a provider crash or parse error no longer leaves a job stuck in `processing`; it is transitioned to terminal `failed` with `last_error` recorded before re-throwing.
  • `search()`: empty-query path now reports `chroma: false` (filter-only, not degraded) instead of falsely claiming a Chroma result.
  • CI: the docker e2e job now calls the renamed `e2e:server:docker` script.
  • Docs: corrected `sdk.mdx`'s stale parse-error behavior note.

Full PR: #3077

v13.8.0

Choose a tag to compare

@thedotmack thedotmack released this 21 Jun 20:33

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, this makes cost-per-observation and observation-type-by-model derivable from the rollup alone.
  • context_injected_rollup carries total_observations_injected and total_tokens_saved_vs_naive — context-cache value (observations served × cost/obs) is now derivable from the rollup.
  • scrub.ts whitelist extended for the new aggregate keys; all values are counts/sums only — never names, prompt text, or raw strings.
  • Public telemetry.mdx docs updated to document the new rollup fields.

Merge notes

  • Merged latest main (Ponytail audit, v13.7.1), which removed fabrication tracking; the now-stale fabrication_count / fabricated_count references were dropped from code and docs accordingly.

Full changes: #3017