dan 0.2.129
Reliability & data-loss hardening
A defensive audit pass closing realistic paths to lost work, panics, and deadlocks:
- Crash recovery now covers every buffer. Untitled buffers,
dan newfile, and post–Save-As / reload buffers previously had no swap file, so a crash lost everything in them. They now autosave, and a new panic hook flushes unsaved buffers to their swap files before the process exits. - Fixed input-reachable panics:
tab_width = 0divide-by-zero in the renderer; typing non-ASCII text in the Save-As / Replace prompts; and wrapping a non-ASCII selection (auto-close) then copying it. - Formatter no longer risks a pipe deadlock on large files — stdin is written on a dedicated thread — and a vanished formatter worker no longer pins the editor to a busy-poll.
- Bounded resources: undo history and the project-file index are now capped, and a file-size limit on load avoids OOM-aborting (which would have taken down every open buffer).
- Safer saves & files: unique temp-file names (no concurrent-write collisions), swap files cleaned up on discard / force-quit, and BOM'd UTF-16 files now open and round-trip on save instead of being rejected as binary.
Command palette (Ctrl-P)
- Navigation now accounts for divider lines — moving up/down keeps the selected item correctly in view regardless of section dividers, and the visible-row count now matches the rendered modal height on every terminal size.
- Added a divider between recent files and commands, so the palette groups results as buffers │ recent files │ commands.
Other
- Fixed a panic when an async formatter returns a shorter document than the buffer had.
Full changelog: 0.2.125...0.2.129