A simple, high performance text editor.
The browser list was cached: files added/removed/renamed, or whose mtime changed, did not show up (and did not re-sort) until the user navigated away and back in. In particular, opening a file and returning showed a stale list — a new file created elsewhere only appeared after navigating up and back down. The browser now re-reads the current directory while it is on screen: - A short (~1 s) timer re-reads the visible directory so external changes (including inbound syncs) appear live, re-sorted in the current sort mode. A landing re-index repopulates the visible+prefetch pages synchronously (no flicker), preserves the scroll offset, and re-filters an active search without a scroll jump. - Returning to the browser from the editor triggers one immediate re-read so the list is current the moment you land back. - Bounded to one read per directory: a refresh while a read of the same directory is in flight coalesces, and a stale result for a directory the user has since left is dropped rather than clobbering the current view. - A failed background refresh keeps the last good view (the next tick retries); a failed navigation still recovers to the previous directory. - Change detection: a refresh that finds the directory unchanged rebuilds nothing and emits no frame, preserving the event-driven emission contract (TestNoFramesWhileIdle_Browser) while the browser idles. Verified on-device: external add while sitting in the browser appears and re-sorts to the top within ~1 s; an external add+remove made while in the editor is reflected immediately on return; an external delete drops the row within ~1 s. |
||
|---|---|---|
| .qwen | ||
| cmd/pad | ||
| doc | ||
| internal | ||
| scripts | ||
| tools/touchinject | ||
| .DS_Store | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||