Home/Releases

Releases

Full changelog for every memgit version across all distribution channels.

GitHub Releases

v0.7.0

latest2026-07-19

Project isolation — filter-by-default scoping, provenance quarantine, and the self-improving core loop actually runs

Driven by a full empirical audit: 81 memories (15% of the store, including client credentials) had leaked into every project via silent-global saves from MCP servers whose cwd never resolved; a zero-memory project's first session opened with ~38 foreign items. All surfaces are now sealed by default. 294 tests (47 new).

+ Added

  • +Filter-by-default scoping on every surface — search, prompt-recall injection, resume checkpoints, and depth hints are restricted to the current project's family plus explicitly-global memories. A session in project A never sees project B's content; widen deliberately with --all-projects / all_projects: true (every hit then carries its project label) or hard-filter with --project
  • +Provenance quarantine — a save whose project cannot be determined is never silently global: it lands under _unknown (visible in list as [?project], flagged by lint, surfaced nowhere) until relabeled. Explicit global is now an intentional act: memgit add --global or project: ""
  • +detect_project() — one detection path everywhere: MEMGIT_PROJECT > hook cwd > CLAUDE_PROJECT_DIR > cwd; the MCP server re-detects per call instead of freezing the server process's startup cwd
  • +memgit doctor — store hygiene: report quarantined/global memories, bulk --relabel from a JSON mapping (timestamps preserved, one checkpoint), --prune-usage, --clean-caches (30-day session-cache GC, also run opportunistically on sync)
  • +Any-install-method hook binary resolution — memgit setup hooks writes the absolute path of the binary that is actually running (pipx, pip, brew, npm, choco), falling back to PATH lookup, then python -m memgit.cli
  • +Resume digest hard budget (9.5 KB) — measured on real sessions, 78% of digests exceeded the host's 10 KB inline hook limit and arrived truncated; the digest now trims itself (core guide and status board are never trimmed)

✓ Fixed

  • The 0.5.0 self-improving core-guide loop had never run in production — the installed Stop-hook template's cd <store> && memgit sync poisoned the cwd-derived project label, so auto-promotion silently no-oped every session. The cd is gone (sync finds the default store from any cwd) and auto-core is guarded against store-cwd sessions
  • Gemini delivery was inert — .gemini/memgit.md is a file Gemini CLI never loads. The core guide now ships as a marker-delimited block in GEMINI.md (the Codex mechanism); the old inert file is cleaned up on sync
  • CLI search parity — search now applies the same project boost as MCP and prints the project field in table and --json output (it previously printed foreign hits with no origin at all)
  • memgit stats no longer fabricates savings — the dump-everything strawman baseline, phantom critical-overhead figure, and invented weekly/annualised projections are gone; what remains is measured (the digest is actually rendered) or labeled as an estimate
  • Folded/multi-line YAML descriptions in seeded core guides are no longer truncated mid-sentence
  • Test suite fully isolated from the live store via MEMGIT_STORE (exclusive when set)

v0.6.2

stable2026-07-13

Depth hint excludes project-label tags (shared noise rule)

✓ Fixed

  • The '+N more saved on <tag>' recall hint advertised project-label tags ('+75 more saved on business') — the third surface of the same noise class. The exclusion rule (a project label and its components are not topics) is now one shared helper applied by the memory index, context recall, and the prompt-recall depth hint

v0.6.1

stable2026-07-13

Context-recall stops hinting project-label tags

✓ Fixed

  • Caught live minutes after installing 0.6.0: reading any file under a workspace hinted the workspace's own label as a topic ('77 memories tagged business'). The PostToolUse hook now excludes the current project label and its components from matching

v0.6.0

stable2026-07-13

The passive layer advertises what the active layer knows — supersession, trackers, depth counts

Measured across 289 real sessions: hook recall was delivered in ~59% of sessions but only 6.8% ever ran an active search — the model treated the injected sample as the memory rather than a teaser of a queryable store. 0.6.0 makes every injected block carry a truthful advertisement of the store's depth. (Re-measured after release: conversion rose to 11.1%.)

+ Added

  • +First-class supersession — a correction names the memories it replaces (supersedes=[old-slug]) instead of sitting beside them; superseded memories are hidden from search, recall, and resume by default, and resurrect if the superseder is removed
  • +Tracker memories (tr) + status board — one live-status memory per entity (deploy, draft, migration, campaign), updated by re-saving the same slug; rendered as a status board at the top of the resume digest under 'memgit is authoritative; files may lag'
  • +Memory index — the digest ends with tag→count depth advertisements plus the exact search_memories call to go deeper
  • +'+N more' count-line in prompt recall, and context-triggered recall (PostToolUse on Read/Grep/Glob) — a one-line hint when memories exist about the file being read, served from a tagmap cache without loading the store
  • +Core-guide seed nudge in the resume digest for projects with history but no guide

v0.5.0

stable2026-07-11

Core operating guide — per-project, always-on, cross-host, self-improving

+ Added

  • +New memory type co (core) — a per-project navigation aid injected IN FULL at session start, explicitly subordinate to the repo's own rules
  • +memgit core command group — show / set / edit / seed (drafts the guide from the project's existing skills + rule files) / sync / refresh / heal
  • +Cross-host delivery — core sync writes a dedicated memgit-owned rule file into each detected host's native surface (Claude Code, Cursor, Windsurf, Cline, Roo, Continue, Codex AGENTS.md marker block), additive and idempotent
  • +Self-improving accumulation — a sidecar usage ledger counts which memories actually surface; the most-used are auto-promoted as pointers into the guide's auto-managed section, budget-capped and decayed on a two-week half-life
  • +delete / rm / del aliases and did-you-mean suggestions on mistyped commands (0.4.1)

v0.4.0

stable2026-07-07

Guardrail-grade memory — recall and capture become hook-enforced, not voluntary

The number that drove this release: across an audit of 166 real Claude Code sessions, hook-injected context was delivered in 100% of them while the model voluntarily called a memory tool in 6%. Sessions found production root causes and client decisions and saved none of them. What a hook enforces happens; what a tool description suggests mostly doesn't. 0.4.0 moves recall and capture into hooks, and fixes every defect from a full end-to-end audit. 160 tests (32 new).

+ Added

  • +Per-prompt auto-recall (UserPromptSubmit hook) — every prompt is BM25-matched against the store and relevant memories are injected as context, so recall no longer depends on the model remembering to search. Silent unless a match clears a store-size-aware relevance bar (an absolute bar mutes recall on young stores, where BM25 IDF collapses); per-session dedup so nothing is injected twice
  • +Capture guard (Stop hook) — a session that did real work (25+ tool calls) and saved nothing gets blocked ONCE with instructions to save durable facts, or finish if nothing qualifies. Never nags twice; detection is anchored to real tool_use JSON so a tool name appearing as plain text doesn't count as a save
  • +memgit setup hooks now installs the full set — SessionStart resume, UserPromptSubmit recall (--no-recall to skip), Stop capture-guard (--no-guard to skip) + async sync. Previously only SessionStart was wired, so MCP-saved memories on hook-less machines were never checkpointed
  • +Project-family affinity — search boost, resume, and the fresh-project nudge now match hierarchically: a session in BITS/bits_back counts BITS memories as its own (exact > family > global). Before, any session started in a subdirectory silently lost all project scoping

✓ Fixed

  • CRITICAL — CR/CRLF corruption + field injection: a body containing \r was truncated at the first carriage return on read-back, and the lost tail re-parsed as injected fields (a crafted body could override RULE:). \r is now escaped like \n; round-trip is byte-exact. Windows MCP clients and pasted CRLF text hit this constantly
  • CRITICAL — silent memory loss on space-containing slugs: a memory whose frontmatter name had spaces staged fine but vanished on every index read, with no error. Slugs are normalized at every write surface; the index reader tolerates legacy entries
  • Project-label munging now matches Claude Code byte-for-byte (_ and . were munged differently), so memories synced from projects like bits_back can actually match their own workspace at recall time
  • Cross-project leak in resume — a memory-less project fell back to a global recency dump (client A's content in client B's first session). Fallback is now family + global only; critical (p3) rules are scoped the same way instead of firing in every project
  • MCP save_memory now checkpoints immediately as save: <slug> [type] — attributable and rollback-able — instead of staging invisibly until the next sync; sync commits staged work even when no markdown sources exist
  • Rich markup no longer interpreted inside displayed user content ([pj], [[wikilinks]], shas like [fadc1234] were eaten as style tags); lint exits non-zero on issues; MCP unknown-tool returns a proper protocol error; save_memory accepts type as an alias for type_code

v0.3.1

stable2026-07-03

Git-aware onboarding — the repo digest

Requested minutes after 0.3.0 shipped: on very large repos, telling the AI to 'go read the codebase' is slow and error-prone. Now memgit does the deterministic part itself and hands the model facts.

+ Added

  • +memgit onboard now mines the repo itself before printing the brief: a deterministic, read-only digest of git history (recent commit subjects, hot files/directories by churn, authors, branch, latest tag) plus detected stack from manifests, docs worth reading, and CI presence
  • +Every probe is timeout-guarded and commit-capped — measured 0.19 s, safe on very large repositories. The brief instructs the AI to trust the digest and read only the listed files instead of crawling the tree: extraction a tool can do deterministically is no longer left to the model
  • +memgit onboard --json emits the raw digest for tooling; falls back to the generic reading plan when there is no git repo

v0.3.0

stable2026-07-03

Lossless memories · project-scoped relevance · mid-project onboarding · guided init

Born from the first real multi-project dogfooding audit: 8 projects' memories were flattened into one pile, rich memories were ~98% truncated on import, and a store adopted mid-project had no way to seed itself. All three are structural fixes, not patches — 122 tests (25 new).

+ Added

  • +body field — memories are now lossless. The full long-form content (multi-line markdown) is stored alongside the compact one-line rule; search results stay lean, get_memory returns everything. The Claude Code importer previously kept only the first paragraph truncated to 400 chars — a real 17,500-char project memory was being stored as 360 chars
  • +project field end-to-end — the importer derives the project, the MCP server auto-detects the current workspace (MEMGIT_PROJECT overrides), search boosts the current project's memories (global rules still surface), resume_session leads with the project you're standing in, save_memory stamps it; hard filters on search/list; per-project breakdown in stats
  • +memgit onboard — adopt memgit mid-project: prints the bootstrap brief for an AI operator to seed the store from an existing codebase (README, docs, manifests, git history → 10–20 typed memories → checkpoint). The MCP server also nudges bootstrap when a search misses in a project with zero memories
  • +Guided memgit init — auto-finds existing Claude Code memories (~/.claude/projects/*/memory), reports how many across how many projects, offers the import on the spot, prints next steps
  • +Cross-project slug collision safety — importing a slug owned by a different project re-slugs (<slug>--<project>) instead of silently overwriting
  • +memgit add --body / --project; save_memory body + project params; body content is BM25-searchable at low weight

✓ Fixed

  • Multi-line content in any TOON field no longer breaks parsing (\n-escaped on serialize, unescaped on parse; existing objects' SHAs unchanged)
  • Importer kept real metadata: frontmatter description stored as searchable desc, tags derived from the project instead of type-code junk, optional priority:/tags: frontmatter honored, source records the originating file
  • sync checkpoint messages name what actually changed (sync: +1 ~3 (crypto-module, …)) instead of a wall of identical auto-sync messages

v0.2.0

stable2026-07-02

Session resume · garbage collection · multi-agent write safety · AI-operator surface

Born from a real incident: asked to 'proceed on the pending tasks', an AI answered from the file that happened to be open instead of the memory store. resume_session + setup hooks make the store's record of last actions the session's starting point. Every performance and token figure above was measured, not estimated.

+ Added

  • +memgit resume — bounded 'where we left off' digest: last checkpoints, staged work in flight, recent + critical memories (~335 tokens measured, flat from 12 to 500 memories); --plain and --json modes
  • +resume_session MCP tool + GET /resume HTTP endpoint — AI agents get the authoritative record of last actions instead of guessing session state from open files
  • +memgit setup hooks — one command wires a Claude Code SessionStart hook so every new session auto-starts with the resume digest in context
  • +memgit gc — mark-and-sweep space reclamation: only provably-unreachable objects are deleted, reflogs trimmed; benchmark: a 2,000-checkpoint store shrank 94% (39.5 MB → 2.2 MB) with fsck clean
  • +memgit merge <thread> — three-way, common-ancestor merge for branch-per-agent workflows; conflicts resolve to the newest memory, an edit always beats a delete
  • +Store-wide write lock (0.08 ms overhead) + concurrent-commit auto-merge: agents writing in parallel can no longer clobber or lose each other's updates; MEMGIT_AUTHOR attributes checkpoints per agent
  • +History ops now O(1) in chain length — SHA resolution 92.7 ms → 0.08 ms at 2,000 checkpoints; log --skip pagination
  • +AI-operator surface: resume/status/stats emit a maintenance hint (naming the exact command) when history passes 500 checkpoints or 50 MB; gc/squash/stats grew --json for token-cheap machine output
  • +memgit setup gemini-cli — register with Gemini CLI (~/.gemini/settings.json)

✓ Fixed

  • squash silently discarded staged (uncommitted) memories — staged work now survives compaction
  • squash now archives every collapsed checkpoint (one line each) to .memgit/logs/archive/ before rewriting — compaction is lossless-in-substance, gc never touches the archive
  • python -m memgit.cli was a silent no-op (missing __main__ guard) — the documented MCP-registration fallback would have produced a dead server
  • MCP server instructions are now actually sent in the handshake (previously defined but never passed); tool descriptions teach judgment, not keyword triggers

v0.1.5

stable2026-07-02

Critical fix: Claude Code MCP registration targeted the wrong file

Found by dogfooding: the memgit MCP tools never appeared in a real Claude Code session. Every ≤0.1.4 Claude Code registration was a silent no-op — upgrading and re-running setup fixes it in one command.

+ Added

  • +Setup registration test suite — correct target file, idempotency, state preservation, invalid-JSON guard, legacy cleanup (61 tests total)

✓ Fixed

  • memgit setup claude-code wrote mcpServers to ~/.claude/settings.json, which Claude Code ignores — MCP tools never loaded. Now registers in ~/.claude.json (user scope) and cleans up the stale legacy entry. If you registered with ≤0.1.4, re-run: memgit setup claude-code
  • setup no longer overwrites a config file it cannot parse — invalid JSON aborts instead of clobbering (protects ~/.claude.json, which holds all Claude Code user state)
  • Claude Code detection uses ~/.claude/ instead of misfiring on the home directory

v0.1.4

stable2026-07-02

Rollback command · store auto-detect · accuracy fixes · Copy for LLM

First release where CLI, npm MCP wrapper, VS Code extension, and Homebrew all ship the same version. Chocolatey remains pending moderation.

+ Added

  • +memgit rollback <ref> — restore state to any checkpoint (HEAD~N or SHA prefix), git-revert style: history preserved, nothing deleted; --dry-run and -y flags
  • +Repository.resolve_ref() — resolves HEAD, HEAD~n, and abbreviated checkpoint SHAs
  • +Store auto-detect fallback — CLI and MCP server find the store from any directory
  • +Optional exact token counting via tiktoken: pip install "memgit[tokens]"
  • +Copy for LLM on memgit.dev — one-paste agent adoption prompt (OS-aware install + memory doctrine), also served at memgit.dev/llm.txt

✓ Fixed

  • Priority 1 (low) memories were silently stored as priority 2 — now round-trips all priorities
  • memgit stats: fabricated comparison row removed; search-cost estimate now deterministic
  • GPT-4o input price corrected to $2.50/M tokens — all $ savings figures halved accordingly
  • TOON efficiency claims corrected: ~5–10% leaner than markdown (the 95% figure is BM25 top-k retrieval)
  • Docs and USAGE.md match the real CLI surface — no invented flags

v0.1.3

vscode2026-07-02

VS Code Marketplace launch · memgit.dev live

Public launch milestone. VS Code–extension release; the CLI stays at v0.1.2 on PyPI / Homebrew / npm.

+ Added

  • +VS Code extension published to Marketplace — code416-memgit.memgit
  • +Extension ID: code416-memgit.memgit (install: code --install-extension code416-memgit.memgit)
  • +memgit.dev landing page deployed to Vercel production
  • +Multi-format favicon suite (SVG + PNG 16/32/180/192/512)
  • +Dynamic Open Graph social preview card (1200×630)
  • +XML sitemap and PWA web manifest

v0.1.2

stable2026-07-01

Homebrew tap · npm MCP wrapper · Chocolatey · GitHub Actions CI

+ Added

  • +Homebrew tap: brew tap code4161/tap && brew install memgit
  • +npm MCP wrapper package: npx memgit-mcp (package: memgit-mcp on npm)
  • +Chocolatey package submitted (pending moderation)
  • +GitHub Actions workflow for automated PyPI publish on git tag
  • +memgit setup all — auto-detects and registers every installed AI tool
  • +Per-tool setup: Cursor, Windsurf, Cline, Roo-Code, Continue.dev
  • +HTTP server (FastAPI) for ChatGPT Custom Actions and Gemini function calling
  • +OpenAPI 3.1 spec (openapi.json) for GPT integration
  • +Provider-agnostic tool definitions (llm-tool-definitions.json)

✓ Fixed

  • Lint rule length raised from 200 → 400 chars to match real Claude Code memory sizes
  • Slug regex relaxed to allow underscores (^[a-z0-9_-]+$)

v0.1.0

initial2026-07-01

Initial release — core CLI, TOON format, MCP server, Claude Code integration

The first public release. The CLI is feature-complete for local use with Claude Code.

+ Added

  • +Core content-addressed object store with SHA-256 content hashing
  • +TOON (Token-Optimised Object Notation) format — 40% more token-efficient than JSON
  • +Repository layer: add, commit, diff, log, list, remove, fsck, thread
  • +MCP stdio server with 5 tools: search_memories, get_memory, list_memories, save_memory, get_checkpoint_log
  • +BM25 relevance scoring for memory search
  • +Claude Code memory file importer (memgit import claude-code)
  • +Auto-sync hook integration (memgit setup claude-code installs Stop hook)
  • +Abbreviated SHA resolution (git-style 8-char short refs in diff)
  • +Interactive D3.js graph visualization of memory relationships (memgit graph)
  • +27-test suite with 100% pass rate

✓ Fixed

  • Abbreviated SHA resolution in diff command (FileNotFoundError on short refs)

Stay up to date

Watch the GitHub repo for release notifications, or check back here.

Watch on GitHub