v1.5.0 — PMEntityStore, 10-codebase benchmarks, MCP quality fixes
·
118 commits
to main
since this release
What's new in v1.5.0
Performance
- PMEntityStore — eliminates per-entity disk I/O during scans. All entities are buffered in memory and written in a single snapshot at flush time. Scan time on a 723-file project dropped from 394 s → 9 s (97.7% reduction).
- QueryCache — in-memory entity map cache with thundering-herd protection. Warm query latency: 10–94 ms.
- MCP server now uses PMEntityStore instead of the old EntityWriter. Previously only the HTTP API used the fast path; MCP stdio users were silently hitting the slow per-entity-file path.
Quality fixes
- JSDoc extraction for JS/TS —
_preceding_jsdochelper stripsexport/async/declare/abstractkeyword wrappers before scanning for/** */blocks. All four entity types (class, interface, named function, arrow declaration) now carry docstrings. - Slim query line numbers —
pm_contextstubs now includelineso AI can point to exact source locations. - Token deduplication —
_tokenizededuplicates camelCase sub-tokens to avoid inflating similarity scores. - pm_context stub formatting —
_entity_block()now handles both full entities (withsections.*) and flat query stubs. Previously summaries, tags, and properties were silently omitted frompm_contextresults. - Minified file detection — scanner and delta both skip files >250 KB, or >10 000 chars with fewer than 5 newlines. Fixes minified bundles appearing as perpetual "new files" in
pm_delta. - Windows UTF-8 crash fix — MCP stdio server wraps
sys.stdin/sys.stdout/sys.stderrin UTF-8 on Windows so em-dashes in startup logs no longer crash the process on cp1252 consoles. - LLM enrichment removed — PM is now purely static-analysis-based. No external API calls during scans.
New documentation
docs/howto/— step-by-step MCP setup guides for Claude Code, Cursor, Antigravity, and Codex (Windows + Linux/Mac paths, before/after JSON, smoke tests).docs/explained/— plain-language docs: what Project Mapper is, what MCP is, and what PM reads/stores (trust document).
Benchmarks (10 codebases)
Geomean token reduction across Python, Go, TypeScript, Ruby, PHP, Java, C#, C, Rust, and Swift:
| Mode | Reduction | Multiplier |
|---|---|---|
| Full | 83% | ~6× |
| Slim | 92% | ~13× |
Real-world test on Odysseus (723 files, Gemini Flash 3.5): 95% for structure queries, 99.6–99.8% for impact analysis.
All 8 test cases passed (pathfinding, graceful failure, knowledge contribution, incremental add/delete, impact traversal after contribute).
Supported languages
Python · JavaScript · TypeScript · Go · Ruby · PHP · Java · C · C++ · C# · Rust · Swift