github fedro86/ferrispad 0.9.0
FerrisPad v0.9.0

latest releases: 0.9.5, 0.9.5-rc.2, 0.9.5-rc.1...
4 months ago

Added

  • 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.

Don't miss a new ferrispad release

NewReleases is sending notifications on new releases.