v0.13.0
File operands inside a Git worktree now route through the repo's scoped Git index instead of a separate per-file corpus. seek 'needle' ./cmd/seek/searcher.go keeps Git ignore and local-change behavior, reuses the repo's index, and reads back as the file you selected.
Upgrade. No flag changes. Exact files inside a Git repo now route to the repo's Git corpus (scoped to your selection), not a standalone single-file corpus — files and directories take the same routing decision.
.gitignore-excluded files and folders, and anything outside a worktree, fall back to a plain file/folder corpus. The Git corpus identity is unchanged; a file newly routed to it may build a scoped committed/dirty layer on first use, and an ignored fallback may build a folder/file corpus.
What changes for you
- In-repo files reuse the Git index. A tracked or untracked-visible file routes to its worktree's Git corpus, scoped to the selection — no per-file corpus, consistent ignore + dirty-layer behavior.
- Ignored folders are searchable. An exact
.gitignore-excluded file or folder now searches via a fallback corpus. Previously only ignored files. - Selected files read as what you picked. Single-corpus mode shows the basename; multi-corpus mode keeps the absolute, openable path.
- Files follow nested-Git ownership. A file routes through its parent dir: into the inner repo when nested, collapsed to one plan when multiple files share a repo or a selected directory already covers them.
- Predictable at boundaries.
git check-ignoreruns index-aware (tracked-but-ignored stays tracked); submodule-interior paths fall back per path; case/normalization-insensitive filesystems are corrected to the real on-disk name so a mistyped-case operand isn't silently missed. - Pathspec-safe operands. Paths are fed as literals (
./-prefixed), so a:-leading name isn't misparsed as pathspec magic; a symlink to a gitignored in-worktree file falls back instead of vanishing.
Dev/test
- 3-phase operand router (resolve → classify visibility → route), one
git check-ignorebatch per repo root,core.fsmonitor=falseto skip the fsmonitor IPC tax. - Extracted
git_scope.go,git_visibility.go,corpus_id.go. realCaseWithincorrects case/NFC-NFD names byos.SameFileidentity before they drive the byte-exact Git scope.- Regression coverage: classify gap (tracked/untracked/ignored/nested/collapse), visibility matrix (submodule-interior, leading-colon, all-prefiltered), case-mismatch, symlink-to-ignored, operand-order independence, frozen golden guard on the dirty-scope cache key. Refreshed README and CLI help.
Full changelog: v0.12.0...v0.13.0