Added
- Toolchain-free tree-sitter install — the
c,dart,proto,kotlin, andswiftgrammars now ship vendored native prebuilds (six platform/arch each — linux/darwin/win32 × x64/arm64, every.nodeload-and-parse verified with committedSHA256SUMSand SLSA build provenance), so a fresh install no longer requires a C/C++ toolchain;kotlinmoved off itsoptionalDependencyinto the vendored path,dart/protokeep a source-build fallback when no prebuild matches, and a registry-parameterized CI workflow builds, load-validates, and vendors the binaries (#2113, #2125, #2110) gitnexus uninstall— reversesgitnexus setuptarget-by-target, surgically removing GitNexus MCP server entries (Cursor, Claude Code, Antigravity, OpenCode, Codex), installed skill directories, and Claude Code / Antigravity hook entries with their bundled scripts; idempotent, JSONC-preserving, dry-run by default with--forceto apply (#2062, #2060)- MCP
list_repospagination — boundedlimit/offsetpaging so clients can reliably enumerate every indexed repository instead of having the unpaginated array truncated by LLM token limits; the result is now a{ repositories, pagination }object (page untilpagination.hasMoreis false), with deterministic(lower-cased name, path)ordering (#2120, #2119) - C++ inheritance-lattice member lookup — receiver members now resolve through the inheritance lattice with dominance hiding, ambiguous-base suppression, virtual-diamond deduplication, and overload ranking, and class-scope
using Base::memberdeclarations are no longer mistaken for namespace imports (#2077, #1891) - Taint/PDG substrate (M0) — foundational graph schema and pipeline seams for reliable taint analysis on a PDG-expandable substrate: the
BasicBlocknode label andCFG/REACHING_DEF/TAINTED/SANITIZES/TAINT_PATHrelationship types (round-tripped through the bulk-COPY path), a phase-registry seam (registerPhase/enabledWhen) generalising the graph-phase opt-in guard, and a per-language source/sink/sanitizer config registry. All additive and inert — no phase emits the new nodes/edges yet and a defaultanalyzerun is byte-identical to before (#2092, #2080)
Fixed
- Optional grammars lazy-loaded so
analyzenever crashes when one is missing — the swift/dart/kotlinquery.tsmodules no longer statically import their tree-sitter binding at module load, so a missing optional grammar can no longer abortgitnexus analyze(or the MCP server,doctor, and.githooksauto-reindex) withERR_MODULE_NOT_FOUNDregardless of the repo's actual languages; grammars now resolve lazily at first use inside the worker,GITNEXUS_SKIP_OPTIONAL_GRAMMARSis honored at runtime, the scope-resolution phase excludes unavailable-language files, and skip diagnostics/precheck globs were corrected (#2101, #2091, #2093) tree-sitter-kotlinoptional-grammar install — install now fails soft when no C/C++ toolchain is present, emitting one clear warning and always exiting 0 (mirroring the Swift/Dart/Proto probes) instead of breakinggitnexusinstall; optional-grammar/toolchain docs corrected to include Kotlin (#2110, #2107)- CLI image FTS keyword search — the full-text-search extension is now baked into the CLI Docker image so a containerized
servedoes offline keyword search instead of silently degrading to vector-only (#2108)
Changed
- Tree-sitter prebuild CI matrix greened and made re-run-safe — dropped the broken
-t 22flag from theprebuildifyinvocation that crashed every matrix job (v.indexOf is not a function; N-API prebuilds are Node-version-agnostic, so no target is needed) (#2121), cleared npm-bundledprebuilds/before prebuildify so the host tuple is detected (not a straywin32-x64) and source-built thetree-sitterruntime peer onlinux-arm64where upstream ships no prebuild (#2122), and switched the vendor-prebuilds push togit push --forceso re-running a workflow no longer fails with a stale-lease rejection (#2123)
Performance
- MCP
queryenrichment batched — thequerytool now batches its per-symbol enrichment lookups (3N sequential pool round-trips collapsed to 2–3WHERE n.id IN $nodeIdsqueries), cutting N+1 round-trips with byte-identical output (#2108)
Chore / Dependencies
@ladybugdb/corebumped 0.17.0 → 0.17.1 in /gitnexus (#2098)- Claude plugin manifests synced to the release version — bumped
plugin.jsonand thegitnexusmarketplace.jsonentry to match the published npm version (stale1.3.xmanifests had blocked marketplace updates), added a Vitest guard asserting all three manifests advertise one version, and documented the sync step inCONTRIBUTING.md(#2090)