Skip to content

v0.31.1

Choose a tag to compare

@aahlijia aahlijia released this 14 Aug 13:50
· 59 commits to main since this release
cb88e74

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 searchdekko search "<query>" / search_code MCP 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 CLIdekko daemon start/stop/status runs a per-repo background process that keeps a warm map cache across CLI calls, so repeated query/outline/affected/diff/workset invocations skip re-parsing map.json from 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. New dekko --claude-md-install writes an idempotent usage-policy block into your project's CLAUDE.md (a materially stronger lever than per-turn hook context), and a new opt-in pre-bash hook 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) and dekko-daemon (when to use daemon mode).
  • query's :LINE disambiguation qualifier for overloaded symbols, dekko[fastjson] extra for faster JSON I/O, cross-platform regen file locking, --dry-run for install/uninstall flags.

🛠 Correctness fixes

  • Resolver: eliminated false positives on built-in/global calls, fixed C++ #include disambiguation, 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.00 scores on partial matches, and common-term-crowds-out ranking.
  • Change analysis: diff/affected no longer re-parse redundantly, and no longer report phantom "added" symbols from gitignore mismatches.
  • Fixed an O(N²) hang in dekko lean on 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 stop could 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 the dekko CLI or MCP server. If you import dekko internals directly (e.g. from dekko.cli import main rather than through the CLI/MCP), update to the new paths (e.g. dekko.integrations.cli).

Compatibility

  • All new CLI subcommands, flags, and the pre-bash hook are opt-in — no behavior change for existing installs until you turn them on.
  • dekko[search] and dekko[fastjson] are new optional extras; the default lexical scorer and base install are unaffected.
  • No changes to map.json schema or existing MCP tool signatures.

Full changelog: see CHANGELOG.md for the complete per-version breakdown ([0.21.3][0.31.1]).