mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 02:29:33 +01:00
fix: bound what the Files panel walk reads and keep its subfolders in it (release review)
The round-robin walk capped what it listed, not what it read: every queued folder was read whole, sorted and held until drained, so one GET could pull millions of entries (100 folders of 50,000 files killed a 400 MB heap). A read now keeps only the entries the listing can use, and MAX_WALK_ENTRIES_READ stops opening folders at 250,000 entries, leaving the rest queued and flagged. A folder also spent its whole share on its own files, leaving nothing for the subfolders it had just found, alone in its round or beside a sibling, so search hits inside them were lost. Its files now count as one more share beside those subfolders. Math.max(directoriesInRound, 2) would have fixed only the sole-folder case and cut a wide root's folder list short. Folders below the walk root are probed before their readdir (#516), since the walk reaches folders the depth-first one never did. Filtering at the read also clears the false flag on a folder whose only unread entries were hidden or excluded, and an exactly-full workspace now finishes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a908be05ac
commit
fafec35344
8 files changed
+379
-66
No files matched your search
@@ -10,10 +10,14 @@ A panel that browses the active session's working directory, or the git worktree
|
||||
moved into ([Git Worktrees](Git-Worktrees#when-an-agent-moves-into-a-worktree)). Its header
|
||||
button is on by default; if it is missing, re-enable it in **App Settings → Header & Panels**.
|
||||
|
||||
The panel and its search scan up to 5,000 files and folders per load, shallow levels first and
|
||||
taking turns between folders, so one huge folder cannot hide the ones after it. When a workspace
|
||||
is bigger than that the status line says `(truncated)`, and an expanded folder the scan did not
|
||||
finish shows **Not fully scanned (file limit reached)** rather than looking empty.
|
||||
The panel and its search list up to 5,000 files and folders per load, shallow levels first and
|
||||
taking turns between folders, so one huge folder cannot use up that limit before the ones after it,
|
||||
or the folders inside it, get a turn. They also stop opening folders after reading 250,000 entries,
|
||||
so a workspace with several enormous folders can still leave later ones unread. When a workspace is
|
||||
bigger than either limit the status line says `(truncated)`, and an expanded folder the scan did
|
||||
not finish shows **Not fully scanned (file limit reached)** rather than looking empty. A folder that
|
||||
does not answer, such as a network mount that went away, is skipped rather than waited on, and
|
||||
looks empty.
|
||||
|
||||
It renders what it can:
|
||||
|
||||
|
||||
Reference in new issue
Block a user