You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Support indexed hidden-file searches while preserving ignore rules - #158
Make index and serve include hidden, non-ignored files by default, while ordinary searches continue to apply ripgrep-compatible hidden-file filtering. serve --hidden is accepted as a redundant flag; no new server startup flag is required.
This fixes the indexed-search performance regression for Copilot's existing arguments, including --index-path <index> --files-with-matches --hidden --glob !.git --with-filename -- needle <root>. Content, filename-only, count, JSON, and --files queries can use compatible local indexes or the server without dropping hidden matches or disabling ignore rules.
Apply shared visibility before candidate limits/counts/output selection, respecting explicitly requested hidden roots and Windows hidden attributes without per-candidate filesystem probes.
Carry the broader corpus through builds, resumed checkpoints, reloads, incremental publication, native watching, polling, and startup reconciliation. Discover and update ignore rules inside hidden directories; preserve .gitignore/.ignore and other existing ignore semantics.
Exclude the actual configured index directory and its staging/retired generations, including custom storage inside the source tree. Preserve existing Windows generation retirement and rollback handling.
Reconcile descendants when a native directory rename/removal reports only the directory, so old content/cache and filename entries do not survive.
Compatibility and migration
Legacy, incomplete, or mismatched coverage metadata falls back to a filesystem scan. A current server reconciles older indexes and publishes hidden coverage only when it has established the eligible corpus; older servers must explicitly confirm support before a new client renders indexed results.
The new file-table format prevents older local readers from silently exposing hidden results by ignoring visibility metadata. Filename-only membership is published atomically with its visibility and file-table identity, including coherent startup hydration after interrupted publication. New readers retain legacy-format migration support. Downgrading to an older binary requires rebuilding its index, preferably at a separate --index-path.
--hidden never implies --no-ignore. Positive glob overrides intentionally scan because they can reinclude ignored files absent from the default index; negative-only globs such as !.git remain indexed. Other unsupported corpus-widening flags retain their scan fallback. README and agent guidance document these boundaries.
No package version bump, runtime-repository change, tag, or release is included.
This unconditional ancestor rejection breaks OverrideBuilder's last-match-wins semantics. For example, --glob '!foo' --glob 'foo/keep.txt' allows the walk to descend for the later whitelist, but passes_filters calls this method and drops foo/keep.txt as soon as it sees the excluded foo ancestor. Preserve rule ordering across ancestor and file matches so later positive overrides can re-include descendants.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Make
indexandserveinclude hidden, non-ignored files by default, while ordinary searches continue to apply ripgrep-compatible hidden-file filtering.serve --hiddenis accepted as a redundant flag; no new server startup flag is required.This fixes the indexed-search performance regression for Copilot's existing arguments, including
--index-path <index> --files-with-matches --hidden --glob !.git --with-filename -- needle <root>. Content, filename-only, count, JSON, and--filesqueries can use compatible local indexes or the server without dropping hidden matches or disabling ignore rules..gitignore/.ignoreand other existing ignore semantics.Compatibility and migration
Legacy, incomplete, or mismatched coverage metadata falls back to a filesystem scan. A current server reconciles older indexes and publishes hidden coverage only when it has established the eligible corpus; older servers must explicitly confirm support before a new client renders indexed results.
The new file-table format prevents older local readers from silently exposing hidden results by ignoring visibility metadata. Filename-only membership is published atomically with its visibility and file-table identity, including coherent startup hydration after interrupted publication. New readers retain legacy-format migration support. Downgrading to an older binary requires rebuilding its index, preferably at a separate
--index-path.--hiddennever implies--no-ignore. Positive glob overrides intentionally scan because they can reinclude ignored files absent from the default index; negative-only globs such as!.gitremain indexed. Other unsupported corpus-widening flags retain their scan fallback. README and agent guidance document these boundaries.No package version bump, runtime-repository change, tag, or release is included.
Validation
ripgrep_compat230,ripgrep_parity102,indexed_hidden8,indexed_files4,concurrent_search7,memory_cap1,watcher_dot_ignore2,watcher_watch_registration6,warm_start_gitignore1, andserve_max_filesize1. The final committed eight-testindexed_hiddentarget was rerun successfully.cargo clippy --workspace --benches --locked --quiet -- -D warnings,cargo build --workspace --benches --locked --quiet,cargo fmt --all -- --check, and Git whitespace checks passed.-l/-crouting and--filesparity; Rust regressions separately assert filename backend diagnostics.