Search the whole folder tree, not just the folder being browsed
The query box filtered the current listing, which only ever answered is-it-here; the usual question is where-did-I-put-it. domain/FileSearch walks down from the current folder and streams matches as they are found, since a whole-volume walk takes tens of seconds and a blank screen for that long reads as a hang. Hits show where they were found, and the app bar shows progress while the walk runs. Bounds, all deliberate: a matching folder is still descended into; a hidden folder is skipped whole rather than merely filtered, so the preference cannot be leaked around; the walk stops at 200 matches; each keystroke cancels the previous walk instead of queueing; and navigating away abandons the search.
This commit is contained in:
@@ -38,6 +38,21 @@ upload needs a **higher `versionCode`** than every previous upload.
|
||||
|
||||
### Added
|
||||
|
||||
- **Recursive search.** The query box used to filter the folder you were standing in, which
|
||||
can only ever answer "is it here?" — and the usual question is "where did I put it?". It
|
||||
now walks *down* from the current folder (`domain/FileSearch`) and streams matches as they
|
||||
are found, because walking a whole volume takes tens of seconds and a blank screen for
|
||||
that long reads as a hang. Rows say where the hit was found (`Folder · Documents/2026`) and
|
||||
the app bar shows progress while the walk is still going.
|
||||
|
||||
Three deliberate bounds: a matching folder is still descended into, so a folder called
|
||||
`holiday` cannot hide the matching files inside it; a hidden folder is skipped *whole*
|
||||
rather than merely filtered out, so the preference cannot be leaked around; and the walk
|
||||
stops at 200 matches, because a search returning ten thousand rows is not more useful than
|
||||
one returning two hundred. Each keystroke cancels the walk in progress instead of queueing
|
||||
behind it, and navigating away abandons the search — its results belonged to the folder
|
||||
being left.
|
||||
|
||||
- **Undo for delete, rename and move.** A delete is now a *move* into a hidden
|
||||
`.plainfiles-trash` folder on the same volume rather than a removal, so the snackbar can
|
||||
offer to put it back; a rename and a pasted cut record how to reverse themselves. Four
|
||||
|
||||
Reference in New Issue
Block a user