fix: flag a Files panel folder that did not answer the probe (release review)

A subfolder whose bounded probe answered `unknown` came back as `children: []`
with no `incomplete` and `truncated` false, so a dead mount, or a healthy one
slower than the 1.5 s probe on first touch, read as an empty folder and a
search missed it in silence. `unknown` is never `absent` (#516).

Such a folder now goes on the walk's `unread` list, which flags the node and
sets `truncated` in both walks. A folder the filesystem says is gone drops out
quietly as before. The row said "file limit reached", which would be false
here, so it now reads "Not fully scanned" for either reason.

Reproduced on a real disk with a parent at mode 0444, where the child's stat
answers EACCES: the API, the search and the panel all report it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer committed 2026-11-06 08:41:15 +01:00
1 parent f2f4952c34
commit 37dfb73b1e
9 files changed
+55 -26

No files matched your search

+5 -5
View File
@@ -1024,11 +1024,11 @@ as one more share beside the subfolders it has just found, so one huge folder ca
listing limit before its later siblings or its own subfolders are read, and the `matches` of a `q`
search come back shallow-first. A folder made of thousands of small subfolders can still use most
of the limit one level down, and folders that add up to the read limit can leave later ones
unread. In the tree, a directory node either limit stopped short of also carries
`incomplete: true`: its `children` hold what was listed before the limit, which can be nothing.
The key is absent on every other node. A folder below the start of the walk that does not answer a
bounded probe (a mount that stopped responding) is skipped like an unreadable one: it is listed
with empty `children` and no `incomplete`.
unread. A folder below the start of the walk that does not answer a bounded probe (a mount that
stopped responding) is not read either, and counts as left over the same way. In the tree, a
directory node the walk stopped short of for either reason also carries `incomplete: true`: its
`children` hold what was listed before it stopped, which can be nothing. The key is absent on every
other node.
## Session model (`displayModel`)