Skip to content

v0.9.0: Clustering, more embedding backends, critical summary fix

Choose a tag to compare

@jarmstrong158 jarmstrong158 released this 03 Jul 17:14

Critical fix: empty session-start injection for large stores

The get_project_summary truncation loop evaluated the original text in its condition, so any store whose summary exceeded the token budget (~30+ entries) silently popped every line and injected an empty summary at session start. Large stores were getting ~0 tokens of memory briefing. Found by measurement (see below); fixed with a regression test.

Topic clustering

Above 8 decisions, get_project_summary groups decisions by their most-frequent shared tag instead of one flat list -- a 59-decision store reads as a dozen topics.

OpenAI-compatible embedding backends

semantic.api: "openai" points the semantic blend at any /v1/embeddings endpoint -- LM Studio, llama.cpp server, or OpenAI itself (api_key_env names the env var holding the key). Ollama stays the default; same fail-safe lexical fallback. nomic task prefixes now apply only to nomic models.

Trust-aware conflict guidance

similar_entries matches now carry each entry's origin, and the guidance states the precedence: user-stated overrides agent-inferred overrides imported.

Token-reduction measurement published

evals/token_reduction.py, run against four real stores: 94-97% reduction on large stores (e.g. 78 entries: ~75k tokens dumped vs ~2k injected), with the by-construction caveat stated in-script. Running this measurement is what caught the empty-injection bug.

Six more MCP clients documented

OpenCode, GitHub Copilot CLI, Antigravity, OpenClaw, Hermes, and pi/oh-my-pi config snippets in the README. The server is standard stdio MCP; only the hooks are Claude Code specific.

136 tests passing (5 new). Tool schemas unchanged (2481/2500 token budget). Held-out retrieval eval unchanged.