docs/blog/fresh-0.2.9/index.md
February 25, 2026
A roundup of features and fixes since the 0.2 release — over 90 bug fixes, 8 GitHub issues resolved, and a handful of new capabilities.
Fold and unfold code blocks using LSP foldingRange. Click the gutter indicator to collapse a range; click again to expand. Keyboard navigation (Up/Down) skips over folded regions. Each split view maintains its own fold state.
Smart editing when writing Markdown: Enter continues list items (bullets, ordered lists, checkboxes), Enter on an empty marker removes it, and Tab indents list items while cycling the bullet style. Single-quote auto-close is disabled in Markdown files so apostrophes don't interfere. (This is implemented as a built-in plugin, markdown_source, enabled by default.)
On top of source editing, an experimental compose mode conceals syntax markers (**, *, []()), applies soft line breaks at a configurable width, and renders tables. Open the same file in a vertical split to see source and composed views side by side.
Fresh adds support for precise line numbers in very large files. The new default when opening a large file shows exact byte offsets in the gutter, instead of approximate line numbers. Using "Go to Line" (Ctrl+G) offers to scan the file — only the line index is kept in memory, not the file contents. Over SSH, the scan runs server-side and only the index is transferred. Open remote files with fresh user@host:/path/to/file — see Remote Editing (SSH) for details.
Add column rulers at any position via the "Add Ruler" command. Useful for enforcing line length limits. Rulers are per-buffer and can be added or removed from the command palette.
<div class="showcase-demo"> </div>Smart Home toggles between first non-whitespace character and column 0. Smart Backspace in leading whitespace removes one indent level instead of a single character. Auto-indent fixes: Go files dedent with tabs, tab_size is respected, Python nested indentation after consecutive : lines works correctly.
New auto_save_enabled config option. When turned on, modified buffers are saved to disk at a configurable interval (default 30 seconds). The existing crash-recovery auto-save (every 2 seconds to a recovery directory) continues to work independently.
Arc::ptr_eq — diff cost is proportional to edit regions, not total leaves.didClose is now sent so re-enable gets a fresh didOpen.editor.apiVersion().createTerminal, sendTerminalInput, closeTerminal for terminal control from plugins.filenames field supports *.conf, *rc, /etc/**/rc.* for extensionless file detection.use_osc52 and use_system_clipboard toggles to prevent hangs in certain terminals.show_hidden / show_gitignored toggles now persist to config and are applied on startup.