History

Changelog

A complete history of Ferrite releases. For detailed technical notes, check our blog or the GitHub changelog.

v0.3.0

May 22, 2026

View on GitHub

Highlights

Rendered edit session (WYSIWYG block switching)PDF & themed HTML exportExecutable code blocks (shell/Python)Mermaid first wave: insert toolbar, validation, flowchart polisheframe/egui 0.34.2 + Rust 1.92 MSRVPhosphor icon set — full UI refreshSplit-view scroll syncQuick note workflowWorkspace file index (Ctrl+P / Ctrl+Shift+F)User-configurable accent color

Added

  • • Rendered edit session (Tasks 94–105) — consolidated WYSIWYG architecture: one click opens any block (heading, paragraph, list item, formatted block, table cell); previous block commits automatically. Block-commit undo: each block close produces one logical Ctrl+Z step
  • • Native PDF export (File → Export → PDF…) — page size, margins, optional H1 page breaks, link annotations via krilla + krilla-svg
  • • Print preview — reuses PDF render path; opens in in-app PdfViewer tab
  • • Themed HTML export — theme-aware CSS, Mermaid as inline SVG, syntect-highlighted code blocks, export options dialog
  • • Executable fenced code blocks — Run control in rendered/split preview for shell & Python; background worker; inline ANSI-colored output; exit status; insert output as fenced block
  • • Code execution settings — master enable, shell/Python toggles, timeout (default 30 s, max 300 s), hard timeout, user Stop, first-run consent modal
  • • Mermaid: Insert → Mermaid… toolbar with per-diagram templates; About/Help syntax section and snippets
  • • Mermaid inline validation — parse-time errors, warning header, last-good diagram fallback, squiggles in raw editor
  • • Mermaid flowchart: extra shapes & style/classDef, state fork/join/history pseudostates
  • • Mermaid flowchart edge routing & layout polish — edge–node obstacle avoidance, TD/BT layer centering, stable back-edge side channels with parallel lanes, inner back-edge direct path, branch parent snap, same-layer sibling spacing safety net
  • • eframe / egui upgraded to 0.34.2 — skrifa + vello_cpu text backend; Phosphor 0.12; Popup & Tooltip APIs; Windows glow renderer retained
  • • HarfRust validation under egui 0.34 — cluster shaping, 32 unit tests
  • • MSRV raised to Rust 1.92 — rust-toolchain.toml, CI, package.rust-version
  • • Phosphor icon font (egui-phosphor 0.12.0) — all chrome, ribbon, toolbars, panels, preview, viewers now use Phosphor instead of emoji or mixed Unicode
  • • Split-view scroll sync — source line + fraction anchors keep raw editor and rendered preview aligned; Sync & 2-way controls on minimap footer; persists to settings
  • • Mode-toggle scroll sync (Ctrl+E) — Raw ↔ Rendered preserves position via same hybrid strategy
  • • Quick note workflow (on by default) — pathless tabs no longer block quit; empty untitled tabs close silently; closing a modified untitled tab still prompts; double-click to name; session recovery for unsaved text
  • • Workspace file index — Ctrl+P and Ctrl+Shift+F search the entire workspace on a background thread; animated progress bar; index rebuilds on file create/delete/rename
  • • User-configurable accent color — color picker in Settings → Appearance and Welcome; drives headings, selection, tabs, hub chrome, status bar
  • • Spanish UI language (Español) — locale es / es-* detection
  • • Productivity Hub polish — card layout, Pomodoro emphasis, floating × re-docks to sidebar, stable docked widths, detached window respects user resize
  • • source_epoch widget identity — stable TextEdit ids under per-tab epoch counter; caret stays visible while typing in rendered headings (RS-2)
  • • Workspace file index improves Quick Switcher (Ctrl+P) search quality — tokenizes paths on -, _, ., separators; includes both indexed and recent files; replaced loose full-path fuzzy matching

Improved

  • • Build warnings: four-phase cleanup (Tasks 90–93) — cargo build goes from ~268 warnings to zero: unused imports, unused locals, egui 0.34 API migrations (Ui::close_menu → close, ComboBox::from_id_salt, Frame::corner_radius, etc.), dead_code audit
  • • Undo granularity in raw mode — removed 500 ms time-based merging; each record_operations call is its own undo step; replace edits still undo atomically
  • • Rendered mode block-commit undo — keystrokes inside active rendered block stay off the undo stack until close/switch; one logical step per commit
  • • Main ribbon toolbar always icon-only — removed collapse/expand and section labels; fixed compact 28 px bar; tooltips and shortcuts unchanged
  • • UI icons: emoji → Phosphor throughout — sharper, theme-consistent glyphs at all DPI scales
  • • Flowchart TD/BT layer centering on max_cross_size instead of available_width — eliminates large empty left strip
  • • Rendered view: scroll ratio preserved on viewport-culling remeasure — no layout nudges unrelated to sync
  • • Per-document view mode (Raw/Split/Rendered) restored on reopen — closed tabs upsert into last_open_tabs; settings merge without erasing closed-file state

Fixed

  • • CRITICAL: Smart-paste crash (STATUS_STACK_BUFFER_OVERRUN) — pasting text with a colon followed by multi-byte UTF-8 (Hebrew, Bengali, Hindi, emoji) caused abort in release builds. Fixed s.get(colon_pos..colon_pos+3) instead of direct slice. 5 regression tests
  • • CRITICAL: Restored recovery snapshots dropped all edits on second crash cycle — Tab::with_file anchored original_content to recovered buffer, poisoning disk_content_hash. restore_from_session_result now constructs from on_disk_content and swaps buffer via set_content
  • • Recovery / autosave cross-tab data loss — recovery and autosave now require path-and-disk-hash identity before applying; mismatches rejected; non-blocking banner for diverged content
  • • Double-click required to switch WYSIWYG blocks (RS-1, RS-4, RS-5) — fixed by RenderedEditSession::switch_to_ui; one click closes active block and opens target
  • • Cursor flash or disappear while typing in rendered headings (RS-2) — content_hash-based id remaps destroyed caret state; stable ids under source_epoch fix this
  • • Formatted list/paragraph stuck in raw edit mode after clicking away (RS-3) — immediate save/exit on dismiss; formatted_editing cleared on switch
  • • Rendered/split tables: two clicks to edit another cell — superseded by session-integrated table cells (BlockRef::TableCell, signal_table_force_commit)
  • • Mermaid flowcharts shifted right with large left gap (#83, FC-83a) — TD/BT layers now centered on max_cross_size; back-edge padding only on sides that need loop clearance
  • • Split/rendered view: only first of consecutive fenced code blocks visible (#129)
  • • Empty markdown table cells hard to focus / edit (#131) — hit targets and Tab/Shift+Tab for empty cells
  • • Multi-cursor copy/cut only copied primary selection — selected_text() now joins every non-empty selection (VS Code style); regression test added
  • • Search in Files panel grew to full window height — results scroll inside fixed-height region; max 480 px; window fade disabled
  • • Rendered/split scroll ghost snap with sync off — turning sync off clears tab pending targets and resets SyncScrollState
  • • Split 2-way sync: preview jumped up when scrolling to bottom — top/bottom snaps from rendered pane now use SyncScrollState::set_raw_target()
  • • Crash recovery dropped file opened on cold start — startup paths from CLI/file association deferred until session recovery dialog answered
  • • Rendered view: scroll jump when toggling task list checkboxes — reuses culling layout when block structure unchanged; only wheel/scrollbar drag treated as active scroll
  • • CSV rendered view: long cell text overflowed column bounds — truncate_cell_to_pixel_width() with font-metrics binary search; painter clip rect
  • • Frontmatter panel stale after tab switch — cache keyed on (tab_id, content_version); regression tests
  • • Document nav buttons visible above modal overlays — nav buttons use Order::Middle; suppressed while Ctrl+P / palette / search panel open
  • • Status-bar Help (?) vs bottom-right resize (I-1, WIN-5) — consume_clicks_in_resize_zones prevents edge widgets stealing resize clicks
  • • Integrated terminal: CJK paste/input local-echo (I-2, TRM-3) — UTF-8 init on shell spawn (PSReadLine, chcp 65001); lazy CJK font load on CJK input
  • • Quick note workflow: closing untitled tabs with content did not prompt to save — Tab::should_prompt_to_save takes SavePromptContext; tab close still shows dialog; app exit stays frictionless
  • • Export menu double icons (PDF, Print preview) — stripped duplicate emoji from export labels in all locale files
  • • Outline panel tab selector layout — Phosphor icons broke hit-testing; fixed with painter-based dual-font tab labels
  • • Detached Productivity Hub fought resize — removed width floor; clipped inner content; viewport-based max size only

v0.2.8

April 2026

View on GitHub

Highlights

Command Palette (Alt+Space)HarfRust text shaping for complex scriptsImage viewer tabs (PNG/JPEG/GIF/WebP/BMP)PDF viewer tabs (pure Rust)Rendered view performance overhaulTable cell rich text with click-to-edit13 bug fixes

Added

  • • Command Palette (Alt+Space) - searchable command launcher with fuzzy search, recent commands, category grouping, and shortcut hints
  • • Windows Alt+Space suppression - thread-level keyboard hook prevents OS system menu conflict
  • • HarfRust text shaping engine (Phase 2) - proper rendering for Arabic, Bengali, Devanagari, and other complex scripts
  • • Image viewer tabs - open PNG, JPEG, GIF, WebP, BMP files directly as image tabs
  • • PDF viewer tabs - native PDF viewing via hayro (pure Rust, no system dependencies)
  • • Background file loading for 5MB+ files with progress indication
  • • Strict line breaks (Obsidian model) - single newlines create line breaks in rendered view
  • • Middle-click to close tabs
  • • Table cell rich text rendering - bold, italic, strikethrough, code, and nesting with click-to-edit in rendered view

Improved

  • • Rendered view performance overhaul - AST caching, viewport culling, block height cache, and lazy estimation for large files
  • • Per-frame O(N) elimination for large documents in rendered view
  • • CSV viewer per-frame allocation fixes (reduced unnecessary reallocation)
  • • TreeViewer (JSON/YAML/TOML) per-frame allocation fixes
  • • Central panel per-frame allocation optimizations

Fixed

  • • macOS .md file association not opening in Ferrite (#102)
  • • Windows IME candidate box positioning (#103) - applied layer_transform_to_global() to IME coordinates
  • • Custom font crash on Linux (#114)
  • • Linux Cinnamon desktop dialog detection (#116)
  • • Table inline formatting preservation and rendering (#117)
  • • Terminal CJK double-width character overlap (#110) - unicode-width crate, 2-column cursor advancement
  • • Windows 11 borderless window offset (#112) - .with_transparent(true) DWM workaround
  • • Slow rendering on large documents (#105) - AST caching and viewport culling
  • • Table inline formatting lost on cell edit
  • • Table strikethrough not rendering in cells
  • • Table code spans not rendering in cells
  • • Table nested formatting (bold+italic) not rendering
  • • CSV viewer unnecessary per-frame parsing

v0.2.7

March 2026

View on GitHub

Highlights

Wikilinks & backlinks panelVim mode (optional modal editing)GitHub-style calloutsVisual frontmatter editorWelcome view on first runUnicode complex script support (Phase 1)20+ bug fixes

Added

  • • Wikilinks support - [[target]] and [[target|display]] syntax with click-to-navigate
  • • Backlinks panel - files linking to current file with graph-based indexing
  • • Vim mode - Normal/Insert/Visual modes with hjkl, dd, yy, p, /search, mode indicator
  • • GitHub-style callouts - [!NOTE], [!TIP], [!WARNING], [!CAUTION], [!IMPORTANT] with collapsible blocks
  • • Welcome view on first run with theme, language, and editor configuration (community PR #80)
  • • Check for updates button in Settings → About (manual, offline-first)
  • • Visual frontmatter editor - FM tab in outline panel with key-value form interface
  • • Ctrl+Mouse Wheel zoom (Ctrl+Scroll for zoom in/out)
  • • Large file detection (>10MB warning) and lazy CSV row parsing
  • • Single-instance protocol - files open as tabs in existing window instead of new process
  • • Unicode complex script font loading for 11 script families (Arabic, Bengali, Devanagari, Thai, Hebrew, Tamil, Georgian, Armenian, Ethiopic, other Indic, Southeast Asian)
  • • Script font preferences UI in Settings → Additional Scripts
  • • Column resizing for table editing with draggable separators
  • • Format toolbar moved to collapsible bottom bar, side panel toggle strip
  • • Windows MSI installer overhaul with optional file associations, context menu, add-to-PATH
  • • PortableApps.com Format packaging with automated CI build
  • • Nix/NixOS flake support for reproducible builds (community PR #92)
  • • German and Japanese localization
  • • macOS .app bundle in CI (fixes Gatekeeper blocking)

Improved

  • • Syntax highlighting no longer re-parses every frame (cache-first approach)
  • • Scrollbar accuracy with word wrap (cumulative y-offsets, binary search drag)
  • • Smooth scrollbar height that lerps toward actual value (no jumping)
  • • Flowchart modularized from 3600-line monolith into 12 focused modules
  • • Window controls redesigned with crisp hand-painted icons
  • • Table backgrounds use actual rendered row dimensions (no gaps/overlap)
  • • Text selection preserved after formatting operations
  • • Rendered mode copy no longer inserts phantom spaces

Fixed

  • • Crash on large selection delete with word wrap (capacity overflow panic)
  • • IME backspace deleting editor text during CJK composition (#91)
  • • Light mode text invisible (strong text color fix)
  • • List item text not wrapping in rendered/split view (#82)
  • • Empty list item causing heading mis-render (#82)
  • • CJK rendering after restart with explicit font preference (#76)
  • • Images not displaying in rendered mode
  • • Binary file crash when opening PNG/JPEG as text
  • • Session recovery dialog after "Don't Save"
  • • Task list checkboxes showing as ASCII instead of UI elements (#95)
  • • Open Folder not working in Flatpak (#96)
  • • Linux file dialog portal failure detection (#97)
  • • Windows IME backspace deleting editor text (#91)
  • • View mode bar hidden on unsupported file types
  • • CJK fonts not loading on language switch

v0.2.6.1

February 6, 2026

View on GitHub

Highlights

First code-signed releaseIntegrated terminal workspaceProductivity hubMajor app.rs refactoring into ~15 modules

Added

  • • Integrated terminal workspace - multiple sessions, tiling, splits, theming (community PR #74)
  • • Productivity hub - quick-access panel for common tasks (community PR #74)
  • • Code signing - Windows artifacts signed via SignPath.io, no more SmartScreen warnings
  • • Tab drag reorder with visual drop target indicator
  • • File watcher auto-reload for externally modified files
  • • Undo after text formatting (Bold, Italic, etc.)
  • • Multiline blockquote rendering - merged into continuous blocks
  • • CJK first-line paragraph indentation (Chinese 2em, Japanese 1em)
  • • Memory diagnostics with [MEM] log messages at startup

Improved

  • • App.rs refactoring - split 7,600+ line monolith into ~15 focused modules
  • • Lazy CJK font loading - reduced startup memory by ~80MB
  • • System locale detection - preloads only the one CJK font you likely need
  • • Settings CJK change no longer loads all fonts

Fixed

  • • Duplicate Line (Ctrl+Shift+D) wrong position
  • • Keyboard shortcut conflict: Ctrl+Shift+E (ExportHtml changed to Ctrl+Shift+X)
  • • Maximize/restore button icon disappearing on hover
  • • Drag-drop image inserting at wrong position
  • • Smart paste not working (stale cursor state)
  • • Auto-save toggle inconsistency
  • • Rendered mode raw editor stuttering on mode switch
  • • Keyboard shortcut conflict: Ctrl+Backtick (FormatInlineCode changed to Ctrl+Shift+Backtick)
  • • CJK font crash on startup (#63)
  • • Portable Windows startup crash (#57)

v0.2.6

January 26, 2026

View on GitHub

Highlights

Custom FerriteEditor - ground-up rewrite100x less RAM (4MB file: 15MB vs 1.5GB)Multi-cursor & code folding now workVirtual scrolling + rope buffer

Added

  • • FerriteEditor - custom text editor built with egui drawing primitives
  • • Virtual scrolling - only renders visible lines + buffer
  • • Rope-based buffer (ropey) - O(log n) text operations
  • • Full selection support - click-drag, Shift+Arrow, double/triple-click, Ctrl+A
  • • Multi-cursor editing - Ctrl+Click to add cursors
  • • Code folding with gutter indicators
  • • IME support - Chinese Pinyin, Japanese Romaji, Korean Hangul
  • • Bracket matching - windowed O(window) algorithm
  • • Document navigation buttons - Top/Middle/Bottom jump
  • • Semi-transparent selection highlighting
  • • Cursor blink with theme-aware colors
  • • Auto-focus new documents

Improved

  • • Editor architecture - 2735 lines split into focused modules (43% reduction)
  • • Memory: 4MB file adds ~15MB (was 1.5GB with egui TextEdit)
  • • Search debouncing (150ms) - no more search on every keystroke
  • • Large file optimizations - hash-based modification detection, reduced undo stack
  • • Bracket matching - windowed ~20KB extraction (was 4.8GB/sec allocation)
  • • Format toolbar connected to FerriteEditor buffer
  • • Outline panel and minimap integrated with new scroll system
  • • Font settings dynamically update editor

Fixed

  • • Critical: 4MB file causing 1.8GB RAM usage (#45)
  • • Per-frame document cloning for undo (240MB/sec allocation)
  • • Case-insensitive search copying entire document
  • • Memory not released on tab close
  • • Text jumping to next line when typing at end
  • • Cannot scroll to bottom of large files
  • • Outline/Minimap cursor landing wrong line
  • • Search highlight drift on wrapped lines
  • • Box drawing characters (U+2500-U+257F) as squares
  • • File browser context menu doubled icons
  • • Windows Start Menu pixelated icon

v0.2.5.2

January 20, 2026

View on GitHub

Highlights

Delete Line & Move Line shortcutsmacOS file type associationsWindows MSI installer & portable buildLinux RPM package support

Added

  • • Delete Line shortcut (Cmd/Ctrl+D)
  • • Move Line Up/Down (Alt+Up/Down)
  • • macOS Finder "Open With" integration (.md, .json, .yaml, .toml, .txt)
  • • Windows portable build for USB drives
  • • Windows MSI installer with Start Menu shortcut
  • • Linux RPM package for Fedora/RHEL/CentOS

Improved

  • • I18n audit - replaced hardcoded strings with translation keys
  • • Removed ~200 orphaned translation keys
  • • Locale files now have consistent structure

Fixed

  • • Ctrl+X cutting entire document when nothing selected
  • • Linux window drag getting mouse stuck
  • • Split mode cursor position issues
  • • macOS modifier tooltips (now shows Cmd instead of Ctrl)
  • • Semantic minimap highlight accuracy

v0.2.5.1

January 17, 2026

View on GitHub

Highlights

Memory optimization: 250MB → 72MB idleMulti-encoding file supportCPU usage: 10% → <1% idleCursor positioning improvements

Added

  • • Multi-encoding file support (Latin-1, Windows-1252, Shift-JIS, etc.)
  • • Status bar encoding indicator with click-to-change
  • • Session restore toggle in settings

Improved

  • • CJK fonts now lazy-load on demand (~180MB savings)
  • • Custom memory allocators (mimalloc/jemalloc)
  • • Tiered idle repaint system for CPU efficiency
  • • Galley-based click mapping for better cursor positioning
  • • Scroll navigation accuracy in large files

Fixed

  • • Memory leaks in viewer states
  • • Intel Mac continuous 60fps repaint issue
  • • Window title command sent every frame
  • • New file dirty flag false positive
  • • CJK first-line indentation
  • • Linux close button hit-testing

v0.2.5

January 16, 2026

View on GitHub

Highlights

Native Mermaid diagrams (11 types)CSV/TSV viewer with rainbow columnsInternationalization supportSemantic minimap

Added

  • • Native Mermaid rendering for 11 diagram types
  • • CSV/TSV viewer with auto-delimiter detection
  • • i18n infrastructure with Weblate integration
  • • Semantic minimap showing actual headings
  • • Keyboard shortcut customization
  • • Drag-and-drop image support
  • • TOC generation (Ctrl+Shift+U)
  • • Document statistics panel
  • • Snippet system with variables
  • • Custom font selection
  • • CJK paragraph indentation settings
  • • Git status auto-refresh

Improved

  • • Split view: both panes now fully editable
  • • Complete Mermaid parser rewrite
  • • Font selection for regional CJK variants
  • • Smart paste for URLs and paths

Fixed

  • • Search highlight drift in UTF-8 text
  • • Config persistence across restarts
  • • Quick switcher mouse support
  • • Table editing cursor loss

v0.2.0

January 9, 2026

View on GitHub

Highlights

Split view with dual editingGit integrationZen modeAuto-save & session persistence

Added

  • • Split view with both panes editable
  • • Native Mermaid diagram support
  • • Editor minimap
  • • Git status indicators
  • • Zen mode (F11)
  • • Auto-save functionality
  • • Session persistence

Improved

  • • Overall performance and stability

Fixed

  • • Various stability issues from v0.1.x

v0.1.0

December 20, 2025

View on GitHub

Highlights

First public releaseMulti-tab editingWYSIWYG markdownJSON/YAML tree viewers

Added

  • • Multi-tab editing interface
  • • WYSIWYG markdown editing
  • • JSON/YAML/TOML tree viewers
  • • Workspace mode
  • • Custom borderless UI
  • • Syntax highlighting for 40+ languages