Skip to content

v11.6.1

Choose a tag to compare

@doobidoo doobidoo released this 05 Sep 07:07
· 228 commits to main since this release

Special thanks to timkjr for the classifier fix in #180, and to @tecnobrat, whose report in #170 is the origin of most of what shipped here and in v11.6.0.

PATCH release. Two things carry it.

The harvest classifier now honors HARVEST_LLM_PROVIDERS instead of demanding GROQ_API_KEY. That completes #178 — the rewriter half shipped in v11.6.0, the classifier did not, so a deployment pointed at LiteLLM, Ollama, or any other OpenAI-compatible endpoint was still skipping classification silently and still needed the placeholder-key workaround.

And the Claude Code plugin manifest goes to 1.0.2. That bump is what actually delivers the #177 hook fix to anyone who already installed the plugin. v11.6.0 shipped that fix with the manifest still at 1.0.1, and the Marketplace caches the plugin under a version-keyed directory, so no existing install ever re-fetched the hooks. If you installed the plugin before today and your auto-capture is still tagging everything observation, updating to plugin 1.0.2 is what corrects it.

Fixed

  • fix(harvest): classifier honors HARVEST_LLM_PROVIDERS, not just GROQ_API_KEY (#180, timkjr; #178, reported by @tecnobrat in #170). HarvestClassifier._ensure_initialized gated all LLM classification on GROQ_API_KEY, so a provider chain configured through HARVEST_LLM_PROVIDERS was ignored and classification was skipped with no warning. The rewriter's provider loading and usability check are now module-level functions in rewriter.py (load_llm_providers, is_usable_provider) that the classifier reuses, so the two cannot drift apart again. The classifier tries the provider chain first through a new OpenAI-compatible call path and falls back to the legacy Groq SDK bridge only when nothing usable is configured, logging which provider resolved.
  • chore(plugin): bump the Claude Code plugin manifest to 1.0.2. Ships #177 (fix(hooks): send memory types the server ontology accepts) to installed plugin users. See above.
  • fix(hooks): stop the worktree guard from minting a branch per session start (#193). .claude/hooks/worktree_guard.sh — the repo-local dev hook, not the Claude Code plugin — called prepare unconditionally on every SessionStart firing and never reclaimed anything, which had accumulated 85 orphaned wt/* branches and 9 abandoned worktrees in one checkout. It now reuses an already-prepared, unused worktree instead of creating another, and garbage-collects wt/* branches that back no worktree and are already merged into the default branch.

Added

  • ci(plugin): gate releases on the Claude Code plugin manifest version (#195; #170, reported by @tecnobrat). scripts/ci/check_plugin_version.sh now runs as a CI job on release changes and fails when claude-hooks/ changed since the last commit that moved the manifest version. It anchors on the version line rather than on the file, because a metadata-only edit to the manifest would otherwise move the window forward and hide the hook changes before it. This release is the gate's first live run.

Changed

  • test(harvest): pin the classifier provider chain and sanitize its log values (#194). Nothing in tests/harvest/test_classifier.py configured HARVEST_LLM_PROVIDERS, so the exact case reported in #178 could regress unnoticed. Five cases now hold it. The new provider logging also interpolated provider names and remote response bodies straight into f-strings; all logger calls in the file now use lazy %-style formatting with _sanitize_log_value on anything from outside.
  • docs(claude-md): trim CLAUDE.md to what a session cannot derive from the repo, and surface AUTHORSHIP.md (#192).

Upgrading

pip install --upgrade mcp-memory-service

Docker images are published for this tag as usual. Plugin users should update the plugin so the Marketplace picks up 1.0.2.

Full changelog: https://codeberg.org/doobidoo/mcp-memory-service/src/branch/main/CHANGELOG.md