Skip to content

v0.23.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 21:31
· 69 commits to main since this release
Immutable release. Only release title and notes can be modified.

Highlights

One index per checkout and per branch

  • Worktrees: each checkout directory has its own index. A linked git worktree is a separate project. Inside a worktree or nested repository that has no index, queries no longer use the parent checkout's graph. The SessionStart hook names the directory to index. Indexing a checkout skips the linked worktrees inside it. Before this change, git worktree add ./wt added duplicate files to the parent graph.
  • Branches: when an index run finds the checkout on a different branch, it parks the old branch's index (zstd-compressed) and restores the new branch's index. A switch back re-indexes only the changed files. Settings: branch_index, branch_index_keep and branch_index_budget. index_status shows indexed_branch and the parked indexes.
  • Cache expiry: once a day, the server moves stale indexes into a trash. These are indexes whose checkout is gone, unused indexes and old parked branches. Use code-cortex-mcp cache expire --dry-run to see what would go, and cache restore <project> to restore an index. Settings: cache_expiry*.

Design: docs/BRANCH_INDEX.md, docs/CACHE_EXPIRY.md.

Upstream sync to ec6427c3 (2026-10-16, curated)

About 110 upstream commits, ported in eleven themed groups. Some of the changes:

  • C/C++: C typedefs are nodes. Macros and enumerators get qualified names. Definitions wrapped in a macro take the name of the macro argument. C member access binds by object type. Class::member resolves across files. A file parsed both raw and preprocessed gives one definition per site.
  • Doc comments are complete across languages. search_graph listings cap docstrings at 500 bytes.
  • Performance: big files are resolved first, the C field-owner rows cost less, and the projection rescue computes only the definitions it uses.
  • Fixes: a Python package named in pyproject.toml keeps its self-imports internal. A tie in the registry never picks a constructor over its own type. search_code reads at most 64 MiB per file and never throws. Cross-repo calls that name another host are never served locally. core.excludesFile is rooted at the enclosing repository.

Full log: UPSTREAM_SYNC.md.

Upgrade note

The index format is now 5. Existing indexes are rebuilt on the next index run.

Full Changelog: v0.22.0...v0.23.0