Releases: Helweg/open-codebase-index
Release list
v0.23.0
What changed
- fix: shut down project watchers with host lifecycles (#267) @Nicolas-nwb
🚀 Features
🐛 Fixes
- fix: avoid slow watcher startup on large worktrees (#278) @Helweg
- fix: reconcile external config changes after watcher ready (#277) @Helweg
- fix: preserve native watcher content rewrites (#275) @Helweg
- fix: make watcher capability probe observational (#273) @Helweg
- fix: harden watcher snapshot reconciliation (#272) @Helweg
- fix: handle MCP shutdown signals during startup (#271) @Helweg
⚡ Performance
🧰 Maintenance
📚 Documentation
- docs: document watcher hardening (#274) @Helweg
- test: harden mixed-intent retrieval benchmark (#266) @Helweg
- test: expand frozen cross-repo benchmark to mixed intent (#265) @Helweg
🧪 Tests
- test: harden mixed-intent retrieval benchmark (#266) @Helweg
- test: expand frozen cross-repo benchmark to mixed intent (#265) @Helweg
Release checks
- Draft notes reconciled against the full previous release tag diff (for example
git log --oneline <previous-tag>..HEAD) -
CHANGELOG.mdupdated -
package.jsonversion bumped -
npm run build && npm run typecheck && npm run lint && npm run test:runpassed
v0.22.5
Added
- Opt-in fixed-version codebase-memory-mcp comparator for cross-repository benchmarks.
- Frozen 25-query benchmark cohort across JavaScript, Python, Go, and Rust, with documented three-way pilot results.
Fixed
- Deterministic module-aware ordering for duplicate exact definition names.
- Strict validation for complete
--dataset-dirbenchmark inputs. - Comparator source-copy isolation and safe handling of file-level comparator results.
- Host plugin manifests now match the release version.
See CHANGELOG.md for details.
v0.22.4
What's Changed
- feat: add fair CodeGraph benchmark comparator by @Helweg in #245
- fix: prevent invalid CodeGraph definition comparisons by @Helweg in #246
- fix: align definition benchmark scope with source intent by @Helweg in #247
- fix: preserve exact definition context order by @Helweg in #249
- fix: exclude documentation definition candidates by @Helweg in #250
- fix: omit non-comparable CodeGraph latency by @Helweg in #251
- feat: expose codebase context diagnostics by @Helweg in #253
- docs: describe codebase context diagnostics by @Helweg in #254
- fix: resolve open dependency vulnerabilities by @Helweg in #255
- feat: complete pre-edit context evaluation gate by @Helweg in #256
- feat(eval): cover unresolved-symbol fallback in pre-edit gate by @Helweg in #257
- fix(eval): enforce pre-edit fallback route assertions by @Helweg in #258
- fix: stabilize community performance CI and metadata staging by @Helweg in #259
- fix(ci): update actions to Node 24 runtime by @Helweg in #260
- chore(release): prepare v0.22.4 by @Helweg in #261
Full Changelog: v0.22.3...v0.22.4
v0.22.3
Changed
- Completed canonical host-neutral identity cleanup across user-facing defaults and build artifacts while preserving legacy package, binary, manifest, storage, and dual-publication compatibility.
Fixed
- Hardened watcher readiness and filesystem integration tests against CI timing variance.
- Stabilized the 10k-node community performance gate using a sub-second warm median with bounded cold and outlier budgets.
Full changelog: v0.22.2...v0.22.3
v0.22.2
Changed
- Prepared release metadata to follow the active GitHub repository identity.
- Renamed the canonical repository to
Helweg/open-codebase-index. - Updated package metadata, host manifests, badges, installation commands, security links, troubleshooting links, and changelog comparisons.
- Preserved legacy npm package, MCP binary, storage, native artifact, and public tool compatibility.
v0.22.1
Added
- Two-tier retrieval quality gates: Added a daily focused Ollama smoke evaluation and a weekly full-repository representative evaluation spanning TypeScript, Rust, Swift, and PHP, with manual tier selection, separate artifacts, and dataset-specific absolute budgets.
Changed
- Faster real-provider evaluation: Scoped the four-query scheduled Ollama smoke gate to the relevant indexer, OpenCode adapter, and configuration source areas, retaining real semantic competition and all expected files while avoiding full-repository embedding on CPU-only GitHub runners.
Fixed
- Evaluation quality gate: Replaced the retired GitHub Models fallback with a pinned local Ollama provider, refreshed stale smoke-dataset paths after the adapter and ranking refactors, explicitly scoped scheduled runs to the smoke dataset, and fail fast when CI reindexing produces no searchable vectors instead of reporting a misleading zero-quality score.
- Stabilized the linked-worktree config creation test under full-suite CPU contention without changing runtime behavior.
Validation
- Full build, typecheck, lint, and 1,328 tests passed.
- Packed clean-install smoke tests passed for
open-codebase-indexandopencode-codebase-index, including both MCP binary names. - GitHub-hosted full-repository eval passed at Hit@5 84.62%, MRR@10 0.5987, and p95 105.778 ms.
v0.22.0
Highlights
- Added the portable
code_communitiesgraph-analysis tool across OpenCode, MCP, and Pi. - Added deterministic cross-community coupling diagnostics with filtering, limits, and representative symbol relationships.
- Added opt-in, branch-aware community ranking for exact symbol retrieval.
- Added a direct
indexCLI subcommand for both MCP binary identities. - Bounded file-level indexing memory with transactional publication, queue backpressure, and streaming failed-embedding state.
Performance
The checked-in v0.22.0 comparison uses three interleaved general benchmark samples per version and three sequential indexing-memory samples.
- Peak indexing RSS: 387.3 MiB → 328.3 MiB, 15.2% lower.
- Indexing duration: 13,111 ms → 12,873 ms, 1.8% faster.
- Published-output and embedding-request digests remained identical.
- General tree-sitter, usearch, BM25, and SQLite performance remained broadly consistent with v0.21.0.
See docs/benchmarks/v0.22.0-vs-v0.21.0.md for methodology and representative results.
Compatibility
open-codebase-indexremains the preferred package.opencode-codebase-indexandopencode-codebase-index-mcpremain supported.- Native artifact names, public tool contracts, storage paths, and persisted index formats remain compatible.
Validation
- Full build, typecheck, and lint passed.
- All 1,322 tests passed.
- Dual-package clean-install smoke tests passed for both MCP binary identities.
- Cross-platform path semantics and CodeQL checks passed.
Full changelog: v0.21.0...v0.22.0
v0.21.0 - Host-neutral package identity
What's New
Host-neutral package identity
open-codebase-index is now the preferred npm package. It ships the same implementation as opencode-codebase-index and exposes both open-codebase-index-mcp and opencode-codebase-index-mcp for compatibility.
The existing opencode-codebase-index package remains fully supported and continues to publish from the same release.
Portable project indexes
Project-owned paths are stored relative to the project root. Git worktrees that inherit project configuration can share the main checkout's index and reuse unchanged chunks and embeddings. Explicit worktree-local project configuration remains isolated.
Existing project indexes containing absolute stored paths require a one-time force rebuild.
Host-neutral architecture
OpenCode, MCP, and Pi registration now live behind dedicated adapters. Portable tool names are centralized, MCP CLI runtime is isolated behind its adapter, and host-dependent runtime paths require explicit host context. Existing tool names, schemas, outputs, and host-specific aliases are unchanged.
Compatibility-aware releases
Release automation stages metadata and manifests independently for both npm package identities, preserves native artifact names, and safely skips versions already published during retries.
Compatibility
- Existing
opencode-codebase-indexinstalls continue to work. - Existing
opencode-codebase-index-mcpcommands continue to work. - Storage paths, native artifact names, MCP server identity, and tool names are unchanged.
- New installations should prefer
open-codebase-index.
Validation
- TypeScript and native builds
- Type checking and linting
- 1,273 Vitest tests
- 116 Rust tests
- macOS arm64/x64, Linux arm64/x64, and Windows x64 native builds
- Matching package inventories and both MCP binary aliases
v0.20.1
What changed
🧰 Maintenance
- refactor: extract tool operation runtime (#208) @Helweg
- refactor: extract context pack utilities (#207) @Helweg
- refactor: extract Git branch resolution (#206) @Helweg
- refactor: extract context search resolution (#205) @Helweg
- refactor: extract native Database bindings (#204) @Helweg
- refactor: extract native call graph persistence (#203) @Helweg
- refactor: extract definition ranking helpers (#201) @Helweg
- refactor: extract embedding batch helpers (#200) @Helweg
- refactor: extract Indexer search ranking (#198) @Helweg
- refactor: share MCP and OpenCode tool contracts (#197) @Helweg
- refactor: modularize native TypeScript wrappers (#196) @Helweg
📚 Documentation
- docs: refresh final architecture boundaries (#209) @Helweg
- docs: reorganize README and references (#199) @Helweg
🧪 Tests
- fix: canonicalize equivalent filesystem paths (#178) @Nicolas-nwb
- fix: fall back to polling when file watchers exhaust handles (#179) @Nicolas-nwb
Release checks
- Draft notes reconciled against the full previous release tag diff (for example
git log --oneline <previous-tag>..HEAD) -
CHANGELOG.mdupdated -
package.jsonversion bumped -
npm run build && npm run typecheck && npm run lint && npm run test:runpassed
v0.20.0 - Retrieval quality and battery-aware indexing
What's new
Battery-aware background indexing
Automatic startup and watcher indexing can now pause while a Mac is running on battery through the opt-in indexing.pauseBackgroundIndexingOnBattery setting. Pending work is coalesced and manual indexing remains available. Thanks to @Nicolas-nwb for the original contribution.
Stronger retrieval quality
- Exact definition and implementation searches rescue authoritative symbols omitted by per-file semantic chunk caps, without increasing embedding volume.
- Nested declarations are cataloged independently of semantic chunk limits, improving lookup for methods in large classes.
- Conceptual context packs prioritize implementation sources while preserving requested documentation, test, and fixture intent.
- Broader repository-task routing hints use bounded
codebase_contextguidance without repeating on tool loops.
Trustworthy quality measurement
- Added a representative graded benchmark across TypeScript, Rust, Swift, and PHP with route, outcome, recovery, difficulty, filtering, and symbol-aware evidence.
- Added privacy-safe per-route effectiveness diagnostics and retained scheduled evaluation artifacts.
- Raised scheduled quality floors so meaningful retrieval regressions fail CI.
Reliability and maintenance
- Routine branch switching is silent unless branch debug logging is explicitly enabled.
- Evaluation diagnostics upload on successful and failed runs.
- GitHub Actions now use immutable Node.js 24 releases and Release Drafter uses its current configuration model.
- Patched the PostCSS path traversal advisory and the safely overridable brace-expansion dependency.
Validation
The release passed the complete build, typecheck, lint, package smoke test, CodeQL analysis, and all 1,217 automated tests.
Full changelog: v0.19.1...v0.20.0