Skip to content

Feather MD v1.9.0

Choose a tag to compare

@github-actions github-actions released this 12 Jun 17:36

This is a minor release focusing on native OS integration, major memory reduction, and print pipeline reliability.

Summary

  • System Tray Support: On Windows, closing the window now keeps Feather MD running in the background. This ensures you do not lose background tasks.
  • Lower Memory Footprint: By loading heavy math/diagram libraries on-demand, disabling unused GPU browser processes, and trimming memory pages when minimized, the app baseline RAM is significantly reduced.
  • Reliable PDF Exports: Closing the app immediately after printing will no longer result in broken, 0-byte PDF files. The application now prompts you and waits for the PDF compilation to complete.
  • Open Files in Existing Window: Launching another file while the app is already open will now open it directly inside the running window instead of launching a duplicate process.
  • Live Updater Progress: The auto-updater window now displays a live downloading percentage showing the real progress of the download.
  • Flexible Recent Files list: You can now remove individual items from your recent files list or clear the entire history.

Details

  • System Tray Orchestration: Built native support in lib.rs using Tauri TrayIconBuilder and wired live menu updates, window hide/show behaviors, and context actions. Synchronized state checking in window.js via isTrayActive so the frontend fails safe to standard exit on platforms without tray support.
  • Working Set Trimming: Implemented COM interface query in Rust to access ICoreWebView2_19::SetMemoryUsageTargetLevel and set the target level to low when hiding the window.
  • Resource Reductions: Excluded GPU rendering and auxiliary browser features (such as msWebOOUI, msPdfOOUI, and msSmartScreenProtection) from tauri.conf.json. Configured opt-level "s", Link-Time Optimization (LTO), single-codegen-unit builds, and aborted panics in release profiles inside Cargo.toml.
  • On-Demand Math and Diagram Rendering: Extracted math and diagram examples from welcome.js and split them into a separate template loaded only on user request, avoiding cold-start import overhead.
  • Compiling PDF Overlay: Integrated a custom print-status checking loop inside main.js using the window.__FEATHER_PRINTING__ flag. Intercepted close requests to display a #print-overlay spinner in index.html, delaying the window teardown until compile time completes.
  • Asset Protocol Relocation: Configured local image path rewriting in preview.js to route absolute, relative, and file:// paths through Tauri's convertFileSrc helper.
  • Single-Instance Locks: Enforced a single application instance check via tauri-plugin-single-instance. Wired launch arguments to be captured and sent to the active window via the open-file-from-args event.
  • Editor Transaction Identification: Replaced global boolean flags with compartment-level transaction annotations using CodeMirror 6 to distinguish programmatic content updates from user edits inside editor.js.
  • Test Alignment: Updated Vitest test files html.test.js, performance.bench.js, and toolbar.test.js to support the new menu entries, correct font classes, and execute authentic regex stripping benchmarks.