A simple, high performance text editor.
Reproduced on device: open a file, scroll, long-press-highlight a word, then recents-wipe the app ~1s after the highlight. The session file held the file but lost the selection and cursor: the 1s rate-limit had not elapsed since the previous save, so the final changes never flushed before the process died (a recents-wipe is a kill, not a clean shutdown, so Shutdown's final save never runs). Two changes in saveSessionIfChanged: - Urgent path: save immediately when the file changes or a selection appears/vanishes. These are low-frequency, high-value changes (the user just opened a file or highlighted/cleared text), and they are exactly what 'where I left off' means. - sessionSaveInterval 1s -> 250ms: bounds how stale scroll/cursor can be at an unlucky kill. The file is a few hundred bytes, so a few small writes a second during active scrolling is negligible. TestRestore_UrgentSaveOnSelection drives the kill race: a selection made right after the file-open save must land in the saver without waiting out the interval (fails with the urgent path disabled). |
||
|---|---|---|
| .qwen | ||
| cmd/pad | ||
| doc | ||
| internal | ||
| scripts | ||
| .DS_Store | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||