All notable changes to this project are documented here, generated automatically from the Conventional Commits by semantic-release.
2.28.4 (2026-09-03)
2.28.3 (2026-09-03)
2.28.2 (2026-09-02)
2.28.1 (2026-08-31)
2.28.0 (2026-08-12)
- bench: the repo cloner is clonePinned, not ensureRepo (f4eab99)
- search: index the right tree, and say when a query found nothing (df2c9c3)
- bench: grade answer quality against the TypeScript compiler (a2d8521)
- bench: run the answer-quality benchmark, and report what it says (612870b)
- lsp: opt-in language-server tier for type-aware references (a70ca0d)
- mcp: tool profiles and a one-call project brief (f73df3a)
- query: let the caller choose the payload, and score the row we were losing (8f716a8)
2.27.1 (2026-08-05)
- literals: stop reporting vocabulary and coincidence as duplication (3aed123)
2.27.0 (2026-08-05)
- classify: index terraform, solidity, zig and hcl in real scans (0784eeb)
- literals: report values with no single source of truth (ac410b7)
2.26.0 (2026-08-01)
- playground: open a local folder, and survive a rough network (5249efb)
2.25.2 (2026-08-01)
- playground: stop a rate-limited load from freezing on a stale counter (53ce749)
2.25.1 (2026-08-01)
- playground: repair the header wordmark, the card padding, and the palette (fa549e9)
2.25.0 (2026-08-01)
- playground: index everything by default, and adopt the site's design (972ab68)
2.24.2 (2026-08-01)
- playground: anchor the palette to the input, and stop claiming jsDelivr (7c175e0)
- site: deploy the playground after a release, not one release later (8fb0260)
2.24.1 (2026-08-01)
- site: redeploy the playground when the engine bundle changes (6f486fe)
2.24.0 (2026-08-01)
- browser: publish the browser build as @maxgfr/codeindex/browser (5a9b8fb)
2.23.0 (2026-08-01)
2.22.1 (2026-07-31)
- extract: index declarations inside an IIFE, and module constants on the regex tier (891f7fb)
2.22.0 (2026-07-30)
- ast: close the three recall gaps the ctags differential named (dea75aa)
2.21.1 (2026-07-30)
- grammars: ship tags.scm in the pull asset, and surface query status (dab65b7)
2.21.0 (2026-07-30)
- ast: audit against each grammar's own tags.scm, and index record components (bb4c52a)
- ast: index type members, qualify parents, attach docs and full signatures (1f764fa)
- grammars: add a pull-only extended tier — Kotlin, Elixir, Zig, Solidity, HCL (e70fcea)
- graph: resolve inheritance into edges, a type hierarchy and a symbol graph (35fced5)
- search: BM25F over six fields, prose indexing and a stem fallback (2e9abf7)
2.20.1 (2026-07-25)
- bench: correct harness comments that outlived what they described (03c1eb4)
2.20.0 (2026-07-25)
- walk: stop capping at 20,000 files by default (199bb48)
2.19.1 (2026-07-25)
- delta: stop charging dangling risk for an import into an ignored tree (1413198)
2.19.0 (2026-07-25)
- mcp: declare outputSchema and emit structuredContent where it can conform (443a699)
2.18.0 (2026-07-25)
- cli: teach the flag hoister about --workers, --index and --max-response-bytes (315d9ca)
- pool: ask workers for the main thread's grammars, and bound a hung worker (2fc4ec6)
- sources: stop shipping literal NUL bytes in TypeScript sources (76ad826)
- graph: delta review, impact and neighbors — the traversals consumers kept reimplementing (08c5fd8)
- mcp: bound oversized responses, expose the caps that already existed (e46277a)
- mcp: negotiate the protocol, annotate the tools, validate the arguments (5b686d5)
- cli: reuse the persisted index in every read command (9e82664)
- extract: fold four AST traversals into one, drop the discarded ones (8ae58d2)
- mcp: one walk per call, a bounded LRU, and a memoized caller index (ef6353a)
- mcp: skip the resource-link probe on responses that were not capped (2ca6200)
- pool: extract across worker_threads, byte-identical to sequential (c53258c)
- scip: assemble the protobuf into a growable Uint8Array, not a number[] (8bbce52)
2.17.1 (2026-07-25)
- cli: accept global flags before the subcommand (75ccc7d)
2.17.0 (2026-07-25)
- mcp: pin one repo with --repo, add
rewrite, fix grep --scope (a205c34)
2.16.0 (2026-07-24)
- ast: expose warmGrammars — the one-call AST warm-up consumers were missing (af7011c)
2.15.0 (2026-07-24)
- bench: prime+preload codeindex MCP path for a symmetric measurement (d1e1d92)
- mcp: preload the persisted .codeindex index on first tool call (78deb48)
2.14.0 (2026-07-24)
- ast: re-derive the MCP grammar warm per call, not once per repo path (cdef284)
- bench: assert non-optional section slices in the smoke test (strict typecheck) (93538cb)
- bench: fairness and robustness fixes from live end-to-end validation (7d77a28)
- bench: gate serena and graphify off oversized monorepos (next.js) (4f9bad3)
- mcp: refresh scan_summary commit after a git HEAD move on an unchanged worktree (e3420e5)
- bench: add MCP adapters and detection for serena, graphify, falcon (0d7c186)
- bench: add MCP stdio client and standalone probe child (f10a5ac)
- bench: wire MCP scenarios into the orchestrator and embed methodology (171aed6)
- engine: split buildIndexArtifacts into scan + buildArtifactsFromScan (8dcce08)
- grammars: slim pull/cache tier + shared-cache resolution + per-release asset (013b762)
- mcp: optional serverInfo override on runMcpServer (00e3af7)
- scan: change-tracking flags + precomputedWalk on RepoScan (e50db6b)
- ast: warm only the grammars for languages present (f596654)
- cli: index fastpath — reuse on-disk artifacts when the scan is unchanged (a9fae84)
- engine: shared per-scan derived-structure cache (455b30f)
- mcp: session-level scan + artifacts memoization behind the stat oracle (a8790db)
- walk: dirent-typed walk — one lstat per entry, zero stats for ignored dirs (47a8de7)
2.13.0 (2026-07-24)
- embed: validate a custom-URL model.json before writing it (4fd8e35)
- extract: stop capturing 'extends' as the class name of an anonymous default class export (5c9d05b), closes #11
- walk: exclude .codeindex from the index (c62940f)
- engine: export the EmbedPullTarget type (f088a29)
- scan: configurable per-file call cap (maxCallsPerFile) (73f864d), closes #10
- walk: replaceable ignore-directory set (ignoreDirs) (8b4c052), closes #10 #10
- mcp: memoize the static embed model across requests (7ac4ce9)
2.12.0 (2026-07-23)
- docker: ship docs/SEMANTIC.md referenced by MIGRATION.md (4563004)
- extract: export-alias symbols cite the original declaration's line (c3f4c69), closes #9
- pkg: ship docs/SEMANTIC.md in the npm tarball (584ee1f)
- callers: add buildRawCallerIndex for ungated raw recall (#8) (4ef2553)
- embed: default pull URL with sha256 verification (5e74ba0)
- embed: official static model conversion toolchain (b0430cf)
- mcp: report effective search tier instead of degrading silently (acc158f)
- mcp: memoize the embedding index across server requests (0c47a72)
2.11.1 (2026-07-23)
- extract: emit export-alias symbols from extractSymbols too (a730cc4)
- extract: stop emitting C/C++ function definitions as call sites (994cd7f)
- extract: suppress only the definition's own token when excluding self-calls (0cd8b8a)
2.11.0 (2026-07-23)
- embed-image: cap request body and batch size on the embedding server (67c28cd)
- extract: emit symbols for export aliases (7fcb94d)
- embed: containerized HTTP embedding endpoint tier (971b922)
2.10.0 (2026-07-23)
- embed: deterministic static-embedding tier with RRF-fused semantic search (38126f2)
2.9.0 (2026-07-23)
- search: trigram fuzzy fallback for unmatched query terms (0f1f6f3)
2.8.1 (2026-07-23)
- scip: pin the golden's tool version so release bumps cannot invalidate it (3a61bfb)
2.8.0 (2026-07-23)
- scip: declare per-document UTF-16 position encoding (779c54b)
- scip: SCIP index export with a hand-rolled zero-dep protobuf encoder (87d93b8)
2.7.0 (2026-07-22)
- types: drop the NodeJS namespace reference from the public declarations (cc38559)
- pkg: expose the engine as an importable npm library (1ab3020)
2.6.0 (2026-07-22)
- ast: tree-sitter grammars for scala, bash, and lua (c9cb760)
2.5.0 (2026-07-22)
- categorize: archive/executable extensions as assets, astro language (dfbf6ac), closes #6
- dead-code tiers, cyclomatic complexity × churn risk, mermaid diagrams (44fdb58)
- extract: call-site receivers and JS/TS export parity (extractor v6) (e0533ae), closes #1
- grep: negation globs with identical semantics on both backends (e1b7d45), closes #3
- keyless BM25 search, architecture rules, recall-oriented caller index (f1096a6), closes #4 #4 #7
- resolve: SFC/HTML import candidates and bare tsconfig extends (70db135), closes #5
- walk: count and surface excluded files on WalkResult and RepoScan (0e0418d), closes #6
- workspaces: uv workspaces, Composer path repos, Gradle includes, nested globs, descriptions, warnings (b161d82), closes #2 #6
2.4.0 (2026-07-22)
- symbolic editing and project memories (Serena-parity, static edition) (d363003)
2.3.0 (2026-07-22)
- query: symbol overview, name-path lookup and tiered references (7d95498)
2.2.0 (2026-07-22)
- change coupling, hotspot ranking and token-budgeted repo map (3879f41), closes hi#leverage
2.1.0 (2026-07-22)
- cli: build the CLI wrapper from TypeScript (d39c000)
2.0.1 (2026-07-22)
- adversarial-review findings across the new surfaces (867b626)
2.0.0 (2026-07-22)
- fix(engine)!: pure library bundle, CLI moved to a static wrapper (2216445)
- run the CLI as
node scripts/cli.mjs <cmd>(or the codeindex bin) — executing engine.mjs directly no longer dispatches commands.
1.1.1 (2026-07-22)
- ignore: full fnmatch conformance with git check-ignore (0e82ec8)
1.1.0 (2026-07-22)
- cli: single-pass index command with incremental cache (4b8f7e3)