Skip to content

Releases: Entelligentsia/grove

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 05 Jul 13:04
75ae9b4
grove v0.3.1 — multi-harness grove init (Cursor, Codex, Gemini, Winds…

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Jul 09:05
a4ebce7
grove v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 02:35
2fba6a8
grove v0.2.0

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 27 Jun 16:32
0a7553d

[0.1.11] - 2026-06-27

Changed

  • Route-by-task steering (grove init CLAUDE.md block and the grove
    skill's SKILL.md). Both surfaces previously framed code navigation as an
    "INVARIANT — grove or it's a steering violation", relegating
    grep/rg/read/cat/sed to fallbacks allowed only after grove was
    tried. With grove's current 7-tool surface (no text-search tool yet), that
    over-rigid framing pushed the model into costly one-symbol-at-a-time source
    fan-outs for things the shell does cheaply, and gave no guidance for
    text/non-code/quick-fact work or for combining grove with the shell. The
    steering now routes by task: grove for named symbols and structural
    relationships (where-defined, who-calls, what's-in-a-file, how-a-dir-connects,
    post-edit check), the shell for text / non-code files / quick facts ("the
    right tool, not a fallback"), and an explicit combine path (grep a
    literal's line → definition --at; outline → bounded read; map/symbols
    → grep a constant inside). The useful procedure (outline→source chains, stable
    symbol-ids, map breadth control, the shape-slice, profile gate, recovery,
    setup) is preserved.

Notes

  • Validated in the nav-3way testbench: on L4-grove-redis the reworked
    steering cut context ~41% (560k → 329k tokens) with no loss of answer
    completeness — the model combined 20 grove calls with 3 greps + 2 bounded
    reads instead of 36 source calls.

v0.1.10

Choose a tag to compare

@github-actions github-actions released this 27 Jun 15:15
a9d12b8

[0.1.10] - 2026-06-27

Fixed

  • Supertype-guard no longer false-positives on / in query comments. The
    guard added in 0.1.9 (which disables locals.scm/imports.scm using
    crash-prone tree-sitter supertype syntax (a/b)) skipped string literals but
    not ; comments, so a comment like ; if/else or ; try/catch wrongly
    disabled an otherwise-valid query. It now tracks ;-to-end-of-line comments.
    This unblocks scope-aware resolution for hosted locals.scm whose comments
    contain / (e.g. java, c, cpp).

Notes

  • With this fix, the hosted registry's newly added locals.scm for python,
    go, java, c#, c, cpp, rust
    take effect (grove fetch + definition --at),
    bringing scope-aware go-to-def to 11 languages total (with the existing ruby,
    scala, julia, javascript). Each was verified to resolve a shadowed local
    line-exact against the pinned grammar.

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 27 Jun 09:57
0766814

[0.1.9] - 2026-06-27

Added

  • Scope-aware definition --at (ADR 0001, Step 1) — go-to-def from a usage
    position now resolves a name to its nearest enclosing local binding
    (parameter or let/assignment) before falling back to the directory-wide name
    lookup. A shadowing local correctly wins over a same-named global, so the
    result is the one binding the cursor refers to instead of a candidate list of
    every same-named symbol. Driven by an optional locals.scm (tree-sitter's
    standard @local.scope / @local.definition / @local.reference query) added
    per registry dir; grammars without one keep the previous behavior. Shipped for
    the rust/python/javascript dev stub; ingest/index/fetch now carry
    locals.scm through to the hosted registry.
  • Import-edge cross-file definition --at (ADR 0001, Step 2) — when a name
    has no local binding, grove now follows an import statement to the target
    file
    and returns the definition there, instead of a directory-wide list of
    every same-named symbol. Aliases resolve to the original symbol
    (from m import x as y / import { x as y } from …). No index: at most one
    extra file is parsed, bounded by import depth, not repo size. Driven by an
    optional imports.scm query plus an import_resolution strategy in the
    manifest profile — dotted_package (Python foo.barfoo/bar.py,
    __init__.py, and relative ./.. imports) and relative_path (JS/TS
    ./util./util.js, .jsx, /index.js; bare specifiers are left to the
    directory-wide fallback). Shipped for python/javascript; carried through
    ingest/index/fetch. Out of scope (degrades to the candidate list):
    method/receiver typing, multi-hop re-exports, wildcard/dynamic imports.

Changed

  • MCP/CLI/steering descriptions now advertise definition --at as the
    precise, scope-aware, cross-file mode (no tool signatures changed) so agents
    reach for it from a usage position instead of a name lookup.

Robustness

  • Optional registry queries (locals.scm/imports.scm) compile non-fatally
    and their captures are prefix-matched, so a query authored against a
    different grammar version (or using subtyped captures like
    @local.definition.function) degrades gracefully instead of breaking the
    grammar's core tools.
  • grove now refuses tree-sitter supertype query syntax ((a/b)) in optional
    queries, which can otherwise hard-crash the wasm query engine at match time —
    so a hosted registry file can no longer segfault grove.

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 25 Jun 05:49
29c7d05

[0.1.8] - 2026-06-25

Added

  • grove init --as grammars — a fourth integration target that provisions
    grammars and writes grove.lock, but writes no harness glue: no
    .mcp.json, no CLAUDE.md steering block. For embedding hosts (e.g. an editor
    or agent runtime that registers grove's tools in-process and supplies its own
    steering), this leaves the project's own files untouched. The existing mcp,
    skill, and both targets are unchanged — they still write steering, since
    for a cold agent availability isn't adoption (VISION §6.4.1).

Full changelog: https://github.com/Entelligentsia/grove/blob/v0.1.8/CHANGELOG.md

grove v0.1.7

Choose a tag to compare

@devasur devasur released this 23 Jun 11:03
7a6c94c

What's new

Lines/columns are now 1-based across the whole surface (fixes #31)

The headline fix. Previously grove reported raw 0-based tree-sitter rows in
symbol-ids, outline, map, definition --at, and callers — so every citation
was one line low vs the grep -n / editor convention. v0.1.7 normalizes to
1-based everywhere (CLI, MCP, symbol-ids), so a grove-sourced file:line:col
round-trips straight into --at and matches what you see in your editor.

  • Symbol-ids are now <lang>:<relpath>#<name>@<line> (1-based).
  • grove definition --at <file:line:col> takes 1-based input.

callers now returns real coverage (fixes #33)

  • Includes all reference kinds (not just call) — type references,
    implementation references, etc. — so heavily-used class/type names return
    results instead of [].
  • Textual fallback: a whole-word grep pass finds references the tags query
    misses (type annotations, imports, dynamic dispatch), each tagged with
    provenance — structural (tree-sitter, high precision) or textual (grep,
    high recall).
  • CLI output now leads with path:line:col and marks each site [S]/[T].

Generated declaration files are skipped (fixes #32)

symbols / definition / callers now skip generated .d.ts / .d.cts /
.d.mts declaration files during directory walks, so they answer from real
source instead of machine-generated decls.

Note on v0.1.6

The v0.1.6 release notes and CHANGELOG listed #32 and #33, but those fixes were
not in the v0.1.6 tag's code (git merge-base --is-ancestor confirms; the
released v0.1.6 binary fails the generated-decls and callers-recall probes).
They ship here in v0.1.7, alongside #31. map (from #34, in v0.1.6) now also
reports 1-based lines.

Verification (Tier-1, agent-free, zero-token)

probe v0.1.6 v0.1.7
line-accuracy (#31) 0/9 9/9
generated-decls (#32) 0/2 2/2
callers-recall (#33) 1/3 3/3 (spring-boot 886, django 261, hugo 504)
map-graph (#34) 2/2 2/2

cargo test: 100 unit + 13 CLI pass, 0 warnings.

What's Changed

  • fix(engine): surface 1-based lines/cols, not raw tree-sitter rows (#31)
  • fix(ops): skip generated .d.ts declaration files in directory walks (#32)
  • fix(ops): broaden callers to all reference kinds + textual fallback (#33)
  • release: v0.1.7

Full Changelog: v0.1.6...v0.1.7

grove v0.1.6

Choose a tag to compare

@devasur devasur released this 23 Jun 09:01

What's new

map tool — directory-level dependency graph (fixes #34)

A new map tool returns every definition in a directory grouped by file, each with its outgoing references (which other symbols it calls/uses). No source bodies — just the dependency graph. This replaces many symbols+source round-trips with a single call, preventing the over-read / non-convergence behavior where agents fan out across many candidates without breadth control.

grove map src --kind function --name parse
[{"file": "src/parse.rs", "entries": [
  {"id": "rust:src/parse.rs#parse_item@41", "kind": "function", "name": "parse_item",
   "parent": "Parser", "row": 41, "signature": "fn parse_item(&mut self) -> Result<Node>",
   "references": ["Result", "Node", "lex"]},
  ...]}]

Breadth control steering

Tool descriptions, MCP instructions(), init-written CLAUDE.md, and SKILL.md now actively steer agents toward map for architectural questions and away from sequential source fan-out.

Fixes from included PRs

  • callers: include all reference kinds (not just call) — type references, implementation references, etc. now return results instead of [] for heavily-used class/type names (#33)
  • callers: textual fallback finds whole-word references the tags query misses (#33)
  • symbols/definition/callers: skip generated .d.ts/.d.cts/.d.mts declaration files (#32)

What's Changed

  • feat(ops,mcp): add map tool for directory-level dependency graphs (#34)
  • fix(ops): broaden callers to all reference kinds + textual fallback (#33)
  • fix(ops): skip generated .d.ts declaration files in directory walks (#32)

Full Changelog: v0.1.5...v0.1.6

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 22 Jun 11:55
eb7d623
grove v0.1.5

C navigation fixes: full symbol bodies (#25,#26), file-scope variables (#26),
callers with enclosing-function context (#27); definition file column; struct
kind alias.