• v0.4.1 5669573a04

    v0.4.1
    Some checks failed
    CI / cargo fmt (pull_request) Failing after 15s
    CI / cargo clippy (pull_request) Has been skipped
    CI / cargo test (pull_request) Has been skipped
    CI / cargo fmt (push) Failing after 16s
    CI / cargo clippy (push) Has been skipped
    CI / cargo test (push) Has been skipped
    Release Build / Generate Version (push) Successful in 15s
    Release Build / Build linux-x86_64 (push) Successful in 3m54s
    Release Build / Build linux-aarch64 (push) Successful in 4m18s
    Release Build / Build windows-x86_64 (push) Successful in 4m39s
    Release Build / Create Forgejo Release (push) Failing after 1m1s
    Stable

    buildagent released this 2026-06-04 15:41:06 +02:00 | 268 commits to master since this release

    Security hardening

    Completes the parser recursion-depth hardening started in v0.4.0.

    v0.4.0 capped every plugin's walk recursion, but the self-recursive type-expression helpers in the Python, C#, and TypeScript plugins were still unbounded. A crafted file with a deeply nested type expression (List[List[...]], List<List<...>>, Array<Array<...>>) is reached via a shallow walk but recurses thousands of levels inside emit_type_ref / emit_receiver_type_refs, overflowing the daemon's worker stack — which catch_unwind cannot intercept.

    Each helper now routes through a depth-aware core guarded by MAX_PARSE_DEPTH. Extraction behavior is unchanged; a deep-nested-type regression test per plugin confirms the guard (verified to SIGABRT with the cap disabled). PHP's type helper is structurally flat and needs no guard.

    With this, all six language parsers are fully guarded against the deeply-nested-input stack-overflow DoS — closing the last residual from the v0.4.0 ultradeep review.

    Changes: v0.4.0...v0.4.1

    Downloads
  • v0.4.0 8b245d1a48

    v0.4.0
    Some checks failed
    CI / cargo fmt (pull_request) Failing after 18s
    CI / cargo clippy (pull_request) Has been skipped
    CI / cargo test (pull_request) Has been skipped
    CI / cargo fmt (push) Failing after 18s
    CI / cargo clippy (push) Has been skipped
    CI / cargo test (push) Has been skipped
    Release Build / Generate Version (push) Successful in 21s
    Release Build / Build linux-x86_64 (push) Successful in 5m9s
    Release Build / Build linux-aarch64 (push) Successful in 5m32s
    Release Build / Build windows-x86_64 (push) Successful in 5m40s
    Release Build / Create Forgejo Release (push) Failing after 1m3s
    Stable

    buildagent released this 2026-06-04 15:30:50 +02:00 | 269 commits to master since this release

    Highlights

    Ruby is now a fully supported language (sixth indexed language), with Rails-aware extraction — and this release closes a stack-overflow DoS that affected every language parser.

    Ruby plugin

    • Detects .rb / .rake / .gemspec and the extensionless Rakefile / Gemfile.
    • Modules, classes (+ superclass type refs), instance & singleton methods, top-level functions, constants, attr_* fields, require/require_relative imports, bare-call vs receiver method_call refs, and include/extend/prepend mixin refs.
    • Rails-aware associations: has_many / has_one / belongs_to / has_and_belongs_to_many emit a type reference to the associated model class — honoring class_name: and singularizing plural names — so find_references on a model surfaces its association sites.

    Security: parser recursion-depth guard

    A crafted file of deeply nested literals (well under the 2 MiB size cap) could overflow the worker stack and crash the long-lived daemon — and catch_unwind cannot intercept stack exhaustion. All six language plugins now cap recursion depth, so a single malicious file can no longer take down the daemon. Verified with a 2 MiB-stack regression test on 20 000-deep input.

    Parity & tests

    Wired Ruby into qualified-name separators, project-root detection (Gemfile/*.gemspec), entry-point heuristics, ctags cross-validation, and the init template. Ships 25 unit tests, full e2e + Rails-association + parity coverage, and a 5-layer correctness_ruby cross-validation against ripgrep/ctags.

    Reviewed ultradeep by a multi-agent pass (correctness, security, performance, test coverage, cross-language parity, production readiness) with adversarial verification of every finding.

    Changes: v0.3.3...v0.4.0

    Downloads
  • v0.3.3 15e7039d37

    v0.3.3
    Some checks failed
    Release Build / Generate Version (push) Successful in 20s
    CI / cargo fmt (push) Successful in 29s
    CI / cargo clippy (push) Successful in 47s
    CI / cargo test (push) Failing after 2m47s
    Release Build / Build linux-x86_64 (push) Successful in 4m34s
    Release Build / Build linux-aarch64 (push) Successful in 5m16s
    Release Build / Build windows-x86_64 (push) Successful in 5m29s
    Release Build / Create Forgejo Release (push) Failing after 1m3s
    Stable

    buildagent released this 2026-06-04 14:29:17 +02:00 | 270 commits to master since this release

    Fix

    Release builds previously set panic = "abort", which silently turned the catch_unwind guard in parse_with_plugin into a no-op: a panicking tree-sitter grammar would SIGABRT the whole long-lived daemon instead of being caught and recorded as a parse_error row. This release switches [profile.release] to panic = "unwind" so that resilience holds in production. The size optimizations (lto, codegen-units, strip) are unchanged.

    Verified end-to-end under the real release profile: a panicking plugin is caught and recorded (IndexStats.parse_errors=1, exit 0); a negative control under panic = "abort" aborts with exit 134, confirming the regression was real.

    Note: this regression is invisible to cargo test — the test harness forces panic = "unwind" regardless of profile.

    Changes: v0.3.2...v0.3.3

    Downloads
  • v0.3.2 3fa96a3fda

    code-index v0.3.2
    Some checks failed
    CI / cargo fmt (push) Successful in 15s
    Release Build / Generate Version (push) Successful in 16s
    CI / cargo clippy (push) Successful in 1m37s
    CI / cargo test (push) Failing after 2m54s
    Release Build / Build linux-x86_64 (push) Successful in 4m51s
    Release Build / Build windows-x86_64 (push) Successful in 5m10s
    Release Build / Build linux-aarch64 (push) Successful in 5m13s
    Release Build / Create Forgejo Release (push) Successful in 1m32s
    Stable

    buildagent released this 2026-05-21 22:04:36 +02:00 | 274 commits to master since this release

    code-index v0.3.2

    Build: v0.3.2+local

    Three-binary release: code-index-mcp (MCP stdio bridge — the usual entry), code-index-daemon (long-lived watcher + RPC server, auto-spawned), and code-index (CLI: init, index, watch, doctor, link).

    Downloads

    Platform Archive
    Linux x86_64 code-index-v0.3.2-linux-x86_64.tar.gz
    Linux ARM64 code-index-v0.3.2-linux-aarch64.tar.gz
    Windows x64 code-index-v0.3.2-windows-x86_64.zip

    Wire into Claude Code

    { "mcpServers": { "code-index": { "command": "/usr/local/bin/code-index-mcp", "args": ["--root", "/path/to/your/project"] } } }
    

    SHA256 checksums (.sha256 files) available for every archive.

    Downloads
  • v0.3.1 52f0535fc5

    code-index v0.3.1
    All checks were successful
    Release Build / Generate Version (push) Successful in 16s
    CI / cargo fmt (push) Successful in 26s
    CI / cargo clippy (push) Successful in 1m15s
    CI / cargo test (push) Successful in 2m29s
    Release Build / Build linux-x86_64 (push) Successful in 4m21s
    Release Build / Build linux-aarch64 (push) Successful in 4m36s
    Release Build / Build windows-x86_64 (push) Successful in 4m45s
    Release Build / Create Forgejo Release (push) Successful in 1m29s
    Stable

    buildagent released this 2026-05-20 12:19:09 +02:00 | 276 commits to master since this release

    code-index v0.3.1

    Build: v0.3.1+local

    Three-binary release: code-index-mcp (MCP stdio bridge — the usual entry), code-index-daemon (long-lived watcher + RPC server, auto-spawned), and code-index (CLI: init, index, watch, doctor, link).

    Downloads

    Platform Archive
    Linux x86_64 code-index-v0.3.1-linux-x86_64.tar.gz
    Linux ARM64 code-index-v0.3.1-linux-aarch64.tar.gz
    Windows x64 code-index-v0.3.1-windows-x86_64.zip

    Wire into Claude Code

    { "mcpServers": { "code-index": { "command": "/usr/local/bin/code-index-mcp", "args": ["--root", "/path/to/your/project"] } } }
    

    SHA256 checksums (.sha256 files) available for every archive.

    Downloads
  • v0.3.0 be340898c8

    code-index v0.3.0
    Some checks failed
    CI / cargo fmt (push) Successful in 16s
    Release Build / Generate Version (push) Successful in 14s
    CI / cargo clippy (push) Successful in 46s
    CI / cargo test (push) Failing after 2m20s
    Release Build / Build linux-x86_64 (push) Successful in 4m9s
    Release Build / Build linux-aarch64 (push) Successful in 4m37s
    Release Build / Build windows-x86_64 (push) Successful in 4m56s
    Release Build / Create Forgejo Release (push) Successful in 1m30s
    Stable

    buildagent released this 2026-05-12 09:58:37 +02:00 | 281 commits to master since this release

    code-index v0.3.0

    Build: v0.3.0+local

    Three-binary release: code-index-mcp (MCP stdio bridge — the usual entry), code-index-daemon (long-lived watcher + RPC server, auto-spawned), and code-index (CLI: init, index, watch, doctor, link).

    Downloads

    Platform Archive
    Linux x86_64 code-index-v0.3.0-linux-x86_64.tar.gz
    Linux ARM64 code-index-v0.3.0-linux-aarch64.tar.gz
    Windows x64 code-index-v0.3.0-windows-x86_64.zip

    Wire into Claude Code

    { "mcpServers": { "code-index": { "command": "/usr/local/bin/code-index-mcp", "args": ["--root", "/path/to/your/project"] } } }
    

    SHA256 checksums (.sha256 files) available for every archive.

    Downloads