Feature
- POSIX exit codes — exit 0 on match, 1 on no match, 2 on error, following the
grep/ripgrepconvention soseekcomposes naturally in shell pipelines and conditionals (if seek "TODO"; then … fi) - Quiet by default — clean output with no noise. New
-verbose/-vflag for debugging - Fresh results after edits — consecutive saves to the same file now trigger a re-index by including file mtime and size in the state hash, fixing a class of stale result bugs
- Concurrent safety — multiple seek processes can search the same repo simultaneously without reading partially-written index data
Fix
- Git status parsing — fixed incorrect parsing of NUL-terminated records that could silently misparse repository state
- Cache directory no longer causes repeated re-indexing —
.seek-cacheis auto-excluded from git tracking via.git/info/exclude - No more index gaps during re-indexing — atomic shard replacement eliminates a window where uncommitted content was temporarily invisible
- Removed
GIT_OPTIONAL_LOCKS=0— allows git to refresh its stat cache aftergit status, improving detection of rapid edits
Performance
- Zero-alloc context line counting
- Benchmark suite with
make test-bench
Test
- 1900+ lines of new tests covering integration, concurrency, locking, and edge cases
- CI now installs
universal-ctagson macOS and Linux