You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Markdown Preview: Live side-by-side preview for .md files with async image resizing. Toggle via View menu or settings.
Tab Groups: Colored tab groups (Red, Orange, Yellow, Green, Blue, Purple, Grey) with group labels, collapse/expand into compact chips, right-click context menu for group management (create, rename, recolor, ungroup, close).
Drag-to-Group: Drag a tab onto the center of another tab to group them. Drag to the edges to reorder. Visual feedback: 50% blended highlight for grouping, vertical insertion line for reordering.
Draggable Collapsed Groups: Collapsed group chips can be dragged to reorder entire groups. Click-without-drag still toggles expand/collapse.
Group Reorder Protection: Ungrouped tabs cannot be inserted between tabs of the same group; insertion point snaps to group boundary.
Crash-Safe Session Auto-Save: Session auto-saves every 30 seconds so tabs survive task manager kills, crashes, and power loss.
"+" New Tab Button: Quick new tab creation button in the tab bar.
Syntax Highlighting: 50+ languages via syntect with oniguruma regex backend. Chunked non-blocking processing for large files with sparse checkpoints every 128 lines.
Tabbed Editing: Custom-drawn tab bar with rounded top corners, shrink-to-fit sizing, per-tab close buttons, hover highlighting, middle-click close, and dark/light theme support.
Session Restore: Three modes (Off, Saved Files Only, Full including unsaved content) with multi-instance session merging and schema versioning.
Select All (Ctrl+A), Find Previous (Ctrl+Shift+G), Go To Line (Ctrl+G).
Dynamic Line Number Gutter: Auto-sizes based on document line count.
macOS Dark Mode Detection via AppleInterfaceStyle defaults key.
Windows Executable Metadata: Version, description, and copyright via embedded resource manifest.
Fixed
FLTK Widget Lifecycle Leaks: Fixed modify callback, tile widget, and shared image cache leaks via direct FFI.
glibc Memory Not Returned: Added targeted malloc_trim(0) calls after tab close and preview hide.
TextBuffer::text() Memory Leak: Plugged 3.8MB/call leak via buffer_text_no_leak() helper.
Find No Longer Marks Document as Dirty: Dirty flag only sets on actual text changes, not selection changes.
Memory Leaks in Syntax Highlighting: Reduced highlighting memory from 290MB to 63MB on large files.
Native File Dialogs Restored: Fixed regression that broke native file chooser on Linux.
Allow Closing App While Dialog is Open: run_dialog checks app::should_program_quit().
Changed
Major Architecture Refactoring: Decomposed monolithic main.rs into src/app/ (business logic) and src/ui/ (presentation) with message-passing event-driven architecture. ~5,200 lines across 28 files.
Extracted HighlightController, UpdateController, PreviewController, EditorContainer, and TabManager from AppState.
Added thiserror-based AppError enum for consistent error handling.
Configured jemalloc dirty/muzzy decay to 0ms at startup for immediate page return.
Updated README and website to reflect v0.9.0 feature set.