v0.4.0

Released: May 17, 2026 ยท Download


โœจ New features

idx read โ€” file streaming with access logging

New command to stream file contents directly from the terminal.

idx read internal/core/services/search/search_command_service.go

idx tracks every file you read in .idx/read_log.idx and uses that data to boost recently accessed files in search results.

  • 30-day TTL โ€” old entries are pruned automatically
  • Inode-based rename detection โ€” log entries follow the file even after a rename
  • Deletion pruning โ€” stale entries for deleted files are removed on next read
  • 5-minute write cache โ€” batches log writes to avoid hammering disk on rapid reads

idx config show โ€” active configuration inspector

New subcommand that prints all 13 tunable keys with clear highlighting of which values come from .idx.yml vs. built-in defaults.

idx config show

Parallel directory indexing

idx init now indexes directories concurrently across all available CPU cores using a two-phase collect + index approach bounded by runtime.NumCPU. Large repositories index significantly faster.

Status reporting during idx init now shows a live spinner with per-directory progress.

Project-level .idx.yml configuration

Place an .idx.yml at your Git root to configure idx per-project. Supports all 13 tunable keys including BM25 parameters (k1, b), proximity weight, max workers, and cache TTL.

search:
  k1: 1.5
  b: 0.85
  maxWorkers: 8

Precedence: built-in defaults โ†’ .idx.yml โ†’ CLI flags.


๐Ÿ› Improvements

Rich idx status panel

idx status now renders a formatted overview panel instead of a bare success message:

  • Project name and Git root path
  • File and directory count
  • Index size on disk
  • Human-readable last-updated age
  • Daemon status with PID and start time
  • Active config overrides from .idx.yml

Enhanced idx version output

Version output now includes full build information: Go version, target OS/arch, and commit SHA alongside the styled logo.

Watch command refactor

Cleaner daemon lifecycle management and more reliable incremental sync on file system events. Reduced surface area between the watch coordinator and the underlying indexing service.

Error messages

Unindexed directory errors now include the offending path and a concrete hint (idx init) instead of a generic failure.


๐Ÿ—๏ธ Architecture

  • ADR 0014 โ€” project-level .idx.yml at Git root; pointer-field YAML adapter for override detection; defaults โ†’ file โ†’ flag precedence
  • ADR 0015 โ€” parallel directory indexing with bounded concurrency (runtime.NumCPU) using two-phase collect + index
  • ADR 0016 โ€” idx read streams files via bufio.Scanner; access log at .idx/read_log.idx tracks reads with 30-day TTL, inode-based rename detection, deletion pruning, and a 5-min write cache
  • ReadLogRepository and ReadCommandService fully tested with fake implementations
  • Core services refactored to meet cyclomatic complexity < 15 per function and SRP rules