Repository navigation
Conversation
The file tree matched .gitignore files in TypeScript, re-normalizing paths with regexes for every row and every ancestor, so expanding a folder of 3,000 files spent about 300 ms in gitignore checks. It also only read the .gitignore files of folders that were already loaded. Listing a local or WSL folder for the tree now asks Rust which entries the workspace's ignore files exclude, reusing the file watcher's rules, and the tree reads that flag. WSL reads the rules through the \\wsl.localhost share without the global excludes file. The tree now also honors .ignore files, .git/info/exclude and the global excludes file, like the watcher. A change to an ignore file re-lists the loaded folders below it. The shared rules no longer let a /**/ pattern match the files next to it, and a !pattern can no longer bring back a path inside an excluded directory, which matches git.
Move the ignore rules out of the file watcher into a project-level module so the watcher, the file tree and the AI workspace tools match paths the same way. AI ignore files now use it too, so a /**/ rule no longer hides every file at the workspace root.
Opening a WSL folder listed its root without asking which entries the ignore files exclude, so ignored root entries were not dimmed or hidden until a refresh. The listing now goes through markIgnoredEntriesIn, as opening a local folder does. The Respect .gitignore setting now says it also covers .ignore files, .git/info/exclude and the global excludes file, and the note on readWorkspaceDirectoryEntries no longer claims every direct reader applies ignore rules itself.
mehmetozguldev
approved these changes
Nov 14, 2026
Member
|
Hey, can you please check the Contributor License checkbox? |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The file tree matched .gitignore files in TypeScript, re-normalizing paths for every row and every ancestor, so expanding a folder of 3,000 files spent about 300 ms in gitignore checks. It also only read the .gitignore files of folders that were already loaded. Listing a local or WSL folder now asks Rust which entries are ignored, using the same rules as the file watcher.
The tree now honors
.ignorefiles,.git/info/excludeand the global excludes file, and a change to an ignore file re-lists the loaded folders below it.The watcher, the file tree and the AI workspace tools share one gitignore matcher. A
/**/rule no longer hides the files next to it (this also fixes.aiignore), and a!patterncan no longer bring back a path inside an excluded folder, which matches git.Opening a WSL folder marks its root entries too, so ignored files at the top level are dimmed or hidden right away instead of after a refresh.
How to test:
.gitignorefiles and turn on "Respect .gitignore" in the file tree settings..ignoreor.git/info/exclude..gitignoreto add or remove a pattern and check that the loaded folders update without a manual refresh.cargo test -p athas-projectandbunx vp test run src/features/file-system/tests src/features/file-explorer/tests.Screenshots:
Not applicable.
Contributor License and Feedback Agreement: