diff --git a/docs/v0.5-palette-and-multi-file.md b/docs/v0.5-palette-and-multi-file.md index 9320da1..d974560 100644 --- a/docs/v0.5-palette-and-multi-file.md +++ b/docs/v0.5-palette-and-multi-file.md @@ -149,6 +149,24 @@ shown). On-device check: reflash → open a note (trailing empty line visible) newline for the same reason; the guarded save leaves the prefs file with exactly one. +**Amendment 2026-07-13 — recursive enumeration + a 2-char search threshold.** +Loading a real repo (`jcalixte/notes`) exposed that `enumerate_files` listed +only the **top-level** files of `/sd/repo` and `/sd/local` — a nested notes tree +showed a single file in the palette (subpaths always *opened* fine via +`:e repo/sub/x.md`; only the listing was flat). The enumeration is now a +recursive walk: dot entries are skipped at every level (so `.git` is never +descended into), each directory is read fully before recursing (one FatFS dir +handle open at a time — the `remove_dir_recursive` pattern, kind to the +FD-bounded mount), depth is capped at 8, and the boot-time walk logs its file +count and duration (`file walk: N files in Xms`) so the FAT dir-IO cost on a +big repo is measurable, not assumed. With the list now card-sized, the palette +gained a **search threshold**: below 2 typed chars the result list is the +**recents (MRU) only** — quick-switch (`Cmd-P`, `Enter`) stays one keystroke +away — and the full fuzzy-ranked list appears from 2 chars on +(`PALETTE_MIN_QUERY`). A fresh boot with no opens yet shows `(type to search)`. +`>` commands and `$` snippets are short curated lists; the threshold does not +apply to them. + - [x] `Cmd-P` opens fuzzy file palette over **both** `/sd/repo/` and `/sd/local/` — **landed and CONFIRMED ON DEVICE 2026-07-12** (Spike 11: no ghosting on the transient panel); scope shows as the inline