Skip to content

v0.7.0 — zoekt sym: search, honest search totals, hardened lifecycle

Choose a tag to compare

@phuongddx phuongddx released this 08 Sep 14:19
· 87 commits to main since this release
v0.7.0
9469268

zoekt's sym: symbol search works for the first time, searchCode reports real match totals instead of a fabricated one, and the embedded zoekt-webserver gets an identity-checked health probe.

Install

Claude Code plugin:

/plugin marketplace add jarvis-intelligence/jarvis-index
/plugin install jarvis@jarvis

Standalone (uv / uvx):

uvx --from jarvis-mcp jarvis-server

To activate sym: symbol search on an existing install

sh setup.sh
jarvis reindex <slug>

zoekt only extracts symbols when universal-ctags is on PATH at index time; existing shards built without it stay symbol-less until reindexed.

What changed

  • sym: symbol search revived. jarvis never installed universal-ctags, so zoekt's symbol-definition ranking and sym: queries silently returned nothing for every language. setup.sh now installs it and symlinks the real ctags binary (what Homebrew/apt actually name it) as universal-ctags (the exact name zoekt looks up). Surfaced as capabilities.search.ctagsInstalled in getIndexStatus.
  • searchCode's response shape changes (breaking). total (always just len(hits), never a real total) is replaced by totalMatches and fileCount sourced from zoekt's own match statistics, truncated, and indexedAt.
  • Unbounded searchCode/semanticSearch payloads, fixed. zoekt's JSON API applies no result caps when a request omits Opts — a broad query could stream every match zoekt found into one response. Requests now cap display counts, and a single oversized match line (minified/generated files) is capped at 2000 characters.
  • zoekt-webserver health check now checks identity, not just "something answered". It requires zoekt's own GET /healthz (a real canary search, 200 only once shards are loaded) instead of accepting any HTTP response under 500 from whatever holds the port. Spawn failures now surface the child's stderr, JARVIS_ZOEKT_PORT overrides the hardcoded 6070, and a spawn race between two jarvis processes now has the loser adopt the winner instead of erroring.
  • semanticSearch's lexical signal revived for natural-language queries. zoekt's implicit-AND query semantics meant a six-word NL query typically matched nothing; NL-shaped queries now OR-expand through the existing symbol tokenizer, while code-shaped queries (identifiers, sym:/lang: syntax) pass through unchanged.

Platforms: macOS (arm64/x86_64) and Linux (x86_64/aarch64), Python 3.12–3.14.

See CHANGELOG.md.