v0.11.0
Minor Changes
-
#178
36106ffThanks @SutuSebastian! - Add structural duplicate detection:symbols.body_hashat index time (canonical function body AST) and bundledduplicatesrecipe. Schema version 39 — existing indexes rebuild on nextcodemaprun. Function-shaped symbols only; trivial one-line bodies skipped. Triage collisions withsnippet— shared control-flow skeletons can false-positive. -
#179
8595173Thanks @SutuSebastian! - Add churn × complexity hotspot ranking:file_churnrefreshed on every index from git history, withcodemap ingest-churn, MCP/HTTPingest_churn, and configchurn.filefor non-git repos. Schema version 40 — existing indexes rebuild on nextcodemaprun. Newchurn-complexity-hotspotsrecipe ranks files or symbols (by_symbol) by change frequency × complexity with normalized 0–100 scores andchurn_trend. Outcome aliashotspotsstill maps to fan-in. -
#173
d4982c4Thanks @SutuSebastian! - Add SonarSource cognitive complexity onsymbols(same function-shaped coverage as cyclomatic, including class methods). Schema version 38 — existing indexes rebuild on nextcodemaprun. New recipehigh-cognitive-complexity;high-complexity-untestedrows includecognitive_complexity.
Patch Changes
-
#177
bb8bae9Thanks @SutuSebastian! - Onaudit --base <ref>(CLI / MCP / HTTP), eachaddedrow carriesattribution: introduced | inherited(branch-new vs pre-existing at merge base).--summaryaddsadded_introduced/added_inheritedper delta. -
#172
cf7df2fThanks @SutuSebastian! - Addquery --format codeclimate(GitLab Code Quality JSON) andquery --format badge(markdown issue-count line orcodemap-badge/v1JSON via--badge-style json). Available on CLI, MCP, and HTTP query tools. -
#183
b509e4cThanks @SutuSebastian! - Add hash-stablemap_idandcodebase_maprouting hints tocontextresponses (CLI, MCP, HTTP). MCP initialize instructions now includemap_idand top hub paths. Opt out with--no-codebase-maporinclude_codebase_map: false; omitted whencompact. -
#176
16687a0Thanks @SutuSebastian! - Addcoverage-confirmed-deadrecipe: static dead exports withconfidence(highwhen ingested 0% coverage,mediumwhen unmeasured), plusreasonandcaller_count. -
#174
a11242eThanks @SutuSebastian! - Addreasonandevidence_jsoncolumns on high-judgment recipe rows (boundary-violations,deprecated-symbols,unimported-exports) so agents can cite detection path beforeapplyor manual edits. -
#175
af86d10Thanks @SutuSebastian! - Addhigh-crap-scorerecipe: CRAP ranking with measured coverage when ingested, or graph-estimated 85/40/0% tiers from test reachability otherwise.Extend
unimported-exportswithunresolved_import_blind_spotreason andevidence_json(unresolved import hop) so dead-export / high-CRAP triage does not over-trust the graph past alias blind spots. -
#181
aae172fThanks @SutuSebastian! - Scopecodemap impactand MCP/HTTPimpacthomonym symbols:--in/indisambiguates by defining file (same prefix/exact rules ascodemap show --in); unscoped homonyms union per-defining-file call graphs instead of merging by name only. Mismatched scope returns emptymatcheswithskipped_scope. -
#170
e74410cThanks @SutuSebastian! - MCPtools/listand HTTPGET /toolsexpose advisoryreadOnlyHint,destructiveHint, andidempotentHintper tool so clients can gate auto-approval. Apply tools carrydestructiveHint; read-only query tools carryreadOnlyHint. -
#180
a5caca8Thanks @SutuSebastian! - Harden read surfaces:codemap query --format …blocks index mutations via the same read-only guard as--json;codemap serverequires--tokenwhen--hostis not loopback (any127.0.0.0/8address counts as loopback, so--tokenstays optional on127.0.0.2and similar);codemap validate(and MCP/HTTPvalidate) can returnrejectedrows with optionalreason(path escapes project root|path escapes via symlink|path resolves outside project root) — outputpathkeys are always project-relative POSIX paths. -
#182
3568c5fThanks @SutuSebastian! -createCodemap()and the CLI now reject invalid project config at load time. A secondcreateCodemap()with a different project root in the same process throws (audit--baseworktree reindex is exempt). -
#184
fb73e0dThanks @SutuSebastian! -showandsnippetnow use fast equality lookup for exactnameand lonename:Tokenqueries (no wildcards); substring, multi-field, and FTS paths stay on the broader slow tier. CLI help, MCP tool descriptions, and bundled agent guidance document the two tiers.