v0.31.1
Release v0.31.1
Previous release: v0.21.3
A large release — ten minor/patch versions of accumulated work landing in one tag. Headline additions are semantic search, daemon-mode CLI, and stronger dekko-usage enforcement for Claude Code sessions; underneath that, two full rounds of real-world evaluation (against awesome-go, claude-buddy, claude-code, cline, spring-boot, tensorflow, zed) drove a substantial correctness pass on the resolver, search relevance, and daemon subsystem.
✨ Highlights
- Semantic search —
dekko search "<query>"/search_codeMCP tool ranks every symbol by BM25 lexical relevance by default (no new dependencies), with opt-in--scorer embedding(offline hashing-trick embeddings,pip install dekko[search], no model download) and--scorer both(reciprocal rank fusion of both). - Daemon-mode CLI —
dekko daemon start/stop/statusruns a per-repo background process that keeps a warm map cache across CLI calls, so repeatedquery/outline/affected/diff/worksetinvocations skip re-parsingmap.jsonfrom scratch. Explicit start/stop, fails open to normal direct execution if the daemon isn't running. - Stronger dekko-usage enforcement — real sessions showed agents falling back to
grep/whole-file reads instead of dekko's structural tools even with hooks installed. Newdekko --claude-md-installwrites an idempotent usage-policy block into your project'sCLAUDE.md(a materially stronger lever than per-turn hook context), and a new opt-inpre-bashhook interrupts grep/find/cat fallbacks with the dekko equivalent instead of only nudging.
Also new
- Two new Claude Code skills:
dekko-verify(sanity-check suspiciously low/zero call-graph results before trusting them) anddekko-daemon(when to use daemon mode). query's:LINEdisambiguation qualifier for overloaded symbols,dekko[fastjson]extra for faster JSON I/O, cross-platform regen file locking,--dry-runfor install/uninstall flags.
🛠 Correctness fixes
- Resolver: eliminated false positives on built-in/global calls, fixed C++
#includedisambiguation, Go cross-package resolution, several bare-name self-resolution collisions, and receiver-typed method resolution. - Search relevance: fixed inconsistent scoring across differently-sized result batches, false
1.00scores on partial matches, and common-term-crowds-out ranking. - Change analysis:
diff/affectedno longer re-parse redundantly, and no longer report phantom "added" symbols from gitignore mismatches. - Fixed an O(N²) hang in
dekko leanon large repos, and JVM-source-root false positives in vendored-directory detection. - Multiple daemon reliability fixes, including two Windows-specific transport bugs and a race where
daemon stopcould report success before teardown actually finished.
⚡ Performance
- Server-side map caching, a disk-backed cache for resolved historical git revisions (speeds up repeated
diff/affected), and cached BM25 tokenization for repeat searches.
🔧 Internal
src/dekko/reorganized from 42 flat modules into six role-based subpackages (core/,render/,analysis/,daemon/,integrations/,storage/) — no behavior change for anyone using thedekkoCLI or MCP server. If you import dekko internals directly (e.g.from dekko.cli import mainrather than through the CLI/MCP), update to the new paths (e.g.dekko.integrations.cli).
Compatibility
- All new CLI subcommands, flags, and the
pre-bashhook are opt-in — no behavior change for existing installs until you turn them on. dekko[search]anddekko[fastjson]are new optional extras; the defaultlexicalscorer and base install are unaffected.- No changes to
map.jsonschema or existing MCP tool signatures.
Full changelog: see CHANGELOG.md for the complete per-version breakdown ([0.21.3] → [0.31.1]).