Skip to content

Releases: dfallman/dan

0.2.129

22 May 12:12

Choose a tag to compare

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 = 0 divide-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

0.2.125

17 May 05:48

Choose a tag to compare

Bug fixes

  • Fix tab-character rendering corruption (#raster). A tab in the buffer used to land in the grid as a literal '\t' when show_whitespace=false, and Print('\t') to the terminal was interpreted as the C0 TAB control character — moving the cursor to the next tab stop and bypassing our cell-by-cell positioning. The result was ghosted/shifted cells, missing line numbers, and parts of previous rows leaking into new rows on every tab-indented file. Tabs now substitute to a plain space in the grid; the existing tab-expansion path still fills the full tab_width run.
  • Atomic frame writes. ScreenBuffer::diff assembles the entire frame in a local buffer and emits it with a single write_all. Previously a large repaint (e.g. 100x30 with RGB syntax colours, ~190 KB) overflowed the 64 KB BufWriter mid-frame and auto-flushed, sending partial frames to the terminal between renders.

Diagnostics

  • DAN_RENDER_LOG=/path/to/file env var dumps each frame's grid and raw ANSI bytes to a file for repro/debugging.

0.2.123

12 May 06:12

Choose a tag to compare

Bug fixes and other improvements to rendering speed and reliability, especially when viewing large documents with color syntax.

Added support for multiple buffers open at the same time.

Added a ctrl+p menu for controlling (almost) all aspects of the editor, including creating and switching buffers.

Release v0.2.57

16 Apr 07:27
4420622

Choose a tag to compare

Bug fixes, updates, and improvements.

Quick install
Install/update to latest version of Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Clone, build, and install Dan
git clone https://github.com/dfallman/dan.git
cd dan
cargo build --release
cargo install --path .

v0.2.50

06 Apr 09:40
ef16e36

Choose a tag to compare

Initial release of Dan: a fast, friendly, and zero-fuss low-latency terminal editor