Bug Fixes
- Install regression —
mempalace-mcpconsole script is now declared inpyproject.tomlalongside.claude-plugin/plugin.json's reference to it. In v3.3.2 the two drifted apart (plugin.json shipped the new"command": "mempalace-mcp"form before the matching entry point landed), so every freshpip install mempalace==3.3.2produced a Claude Code plugin config pointing at a binary that wasn't installed. (#1093, #340) - Restore silent-save visibility after the Claude Code 2.1.114 client regression — production transcript saves were failing silently until this PR. (#1021)
- Paginate
status-path metadata fetches so large palaces don't trip SQLite variable limits. (#851) - Resolve the Claude plugin hook runner across platform / plugin-dir variations; previously broke on Windows and some macOS layouts. (#942)
- Real
python3resolution for.shhooks with aMEMPAL_PYTHONoverride path. (#833) - Add optional
wingparameter totool_diary_write/tool_diary_readand derive per-project wing from the Claude Code transcript path when writing from the stop hook — diary entries from different projects no longer collapse into a shared default wing. (#659) - Treat empty string as "no filter" in
mempalace_searchwing/room; LLM agents that default to filling every optional parameter with""no longer get bounced withmust be a non-empty string. (#1097, #1084) - Broaden
_wing_from_transcript_pathto handle Claude Code project folders without a-Projects-segment (e.g.~/dev/<parent>/<project>,~/code/<project>). The project name is now derived from the final dash-separated token of the encoded folder, so Linux users with code outside~/Projects/get per-project diary scoping instead of falling through towing_sessions. (#1145, follow-up to #659) mempalace_diary_read(wing="")now returns diary entries from every wing this agent has written to, matching the #1097 "empty-string as no filter" pattern. Previously defaulted towing_<agent>, siloing entries that hooks wrote to project-derived wings. (#1145)mempalace minenow skips the generatedentities.jsonfile so its contents aren't re-ingested as project content. (#1175)
Improvements
- Deterministic hook saves. Save hook now uses a silent Python API path, so successive hook invocations produce reproducible results and zero data loss on the hot path. (#673)
- Graph cache with write-invalidation inside
build_graph()— warm-path calls no longer rebuild the palace-graph per request. (#661) mempalace initentity detection overhaul. Canonical project names now come from package manifests (package.json,pyproject.toml,Cargo.toml,go.mod) and real people come from git commit authors, rather than being inferred from prose. Includes union-find dedup across name/email aliases, bot filtering that keeps@users.noreply.github.comhumans, and automatic "mine" flagging by contribution share. (#1148)- Regex detector accuracy. CamelCase extraction so
MemPalace,ChromaDB,OpenAIaren't fragmented; tighter versioned/hyphenated pattern killscontext-manager/multi-wordfalse positives; dialogue^NAME:\srequires ≥2 hits soCreated: <date>metadata stops classifying field names as people; expanded stopwords for common English participles and descriptors; high-pronoun signal classifies as person rather than dumping to uncertain. (#1148) - Init → miner wire-up. Confirmed entities merge into
~/.mempalace/known_entities.jsonon init, which the miner reads to tag drawer metadata for entity-filtered search. Previously init's output was not consumed by the miner; the per-projectentities.jsonis kept as an audit trail. (#1157) - Case-insensitive project dedup across manifest, git, and convo sources so casing variants of the same project name collapse into one review entry. (#1175)
Added
- i18n: Belarusian translation. (#1051)
- i18n: entity detection for German, Spanish, and French locales. (#1001)
- i18n: Traditional + Simplified Chinese entity detection. (#945)
mempalace init --llm: optional LLM-assisted entity classification. Defaults to local Ollama (zero-API); also supports any OpenAI-compatible endpoint (LM Studio, llama.cpp server, vLLM, OpenRouter, etc.) and the Anthropic Messages API. Runs interactively with a progress indicator; Ctrl-C cancels cleanly and returns partial results. Useful for prose-heavy folders where the regex detector struggles (diaries, transcripts, research notes). Opt-in only — default init path remains zero-API. (#1150)- Claude Code conversation scanner.
~/.claude/projects/<slug>/directories now contribute project entities using each session's authoritativecwdmetadata, avoiding slug-decoding ambiguity. (#1150)
Known — deferred to v3.3.4
- HNSW parallel-insert SIGSEGV when
hnsw:num_threadsis unset on collection creation (#974) — fix in-flight as #976, awaiting rebase against develop.
Install
pip install --upgrade mempalace==3.3.3See the full changelog for historical releases.