Skip to content

v0.10.0

Choose a tag to compare

@eltu eltu released this 30 Jun 19:53

v0.10.0

Released: June 30, 2026 · Download


✨ New features

idx related <file> — contextual file discovery

A new top-level command that finds the files most likely relevant to the one you
are currently editing. Results are ranked by a weighted combination of three signals:

Signal Weight Description
Git co-change 0.5 Files that appear in the same commits as the target
Persistent co-read 0.3 Files read in the same session window (stored across sessions in .idx/co_read_matrix.idx)
BM25 term co-occurrence 0.2 Files sharing significant vocabulary with the target

The reason field (git, co-read, term-overlap, both) tells you which
signal(s) drove each result.

# Default: up to 10 related files in text format
idx related internal/features/search/service.go

# JSON output for scripting or AI agents
idx related internal/features/search/service.go --format json

# Compact output — paths only
idx related internal/features/search/service.go --compact --limit 5

# Filter to recently changed files
idx related internal/features/search/service.go --since HEAD~3 --ext go

Output columns (text mode): relative path · signal reason · final score (0–1).

idx search --since <ref> — git-aware search

idx search gains a --since flag that restricts results to files changed since
any git ref — commit SHA, branch name, tag, or HEAD~N.

# Only return matches in files touched since the last commit
idx search "error handling" --since HEAD~1

# Scope a search to a feature branch
idx search "middleware" --since main --ext go

# Use an explicit commit SHA
idx search "config" --since abc1234

An invalid ref returns a clear error immediately:

invalid git ref "bad-ref": ...

Four enforcement hooks for idx skills install claude

The Claude enforcement layer now installs four hook scripts instead of two.
The new idx-read-block.sh and idx-grep-block.sh hooks intercept Claude's
built-in Read and Grep tools at the project level, complementing the existing
Bash-shell blocker:

File Event Matcher Purpose
~/.claude/idx-block.sh PreToolUse Bash Blocks grep/cat/head/tail and similar shell tools
~/.claude/idx-read-block.sh PreToolUse Read Blocks the built-in Read tool on repo files
~/.claude/idx-grep-block.sh PreToolUse Grep Blocks the built-in Grep tool on repo files
~/.claude/idx-context-hook.sh UserPromptSubmit Injects enforcement rules each turn

Re-running idx skills install claude is idempotent and upgrades existing
installations automatically.


🐛 Bug fixes / Improvements

bm25.popularity_weight accessible via idx config get

bm25.popularity_weight was not included in the idx config show output or
accessible via idx config get. It is now a first-class config key alongside
the other 13 keys (total: 14 configurable keys).

idx config get bm25.popularity_weight
# 0.3

idx config show
# bm25.popularity_weight   0.3   · default

make check now enforces cyclomatic complexity and skill-asset drift

Two additional quality gates were added to make check (and make all):

  • complexity — fails the build when any function exceeds cyclomatic complexity 15.
  • skill-lint — fails if any flag or subcommand referenced in the skill asset
    files no longer exists in the binary. Catches drift between docs and CLI.

🏗️ Architecture

  • ADR 0024idx related original design: co-read affinity via temporal
    proximity + BM25 term co-occurrence; idx search --since via git diff --name-only.
  • ADR 0025idx related signals upgraded: git co-change (two-call approach:
    git log --format=%H + git diff-tree), persistent co-read matrix (GOB at
    .idx/co_read_matrix.idx, 30-min session window), temporal proxy removed.
  • Internal gitutil package extracted to internal/shared/gitutil/ — git
    subprocess calls are now shared rather than duplicated across features.
  • SearchCommandService and RelatedCommandService constructors migrated to
    SearchDeps/RelatedDeps structs; wiring layer gains a serverWiring
    accumulator that eliminates field-by-field extraction between builders.