Skip to content

Feather MD v1.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 08:35

This is a minor update focusing on keyboard efficiency, distraction-free editing, and user settings accessibility.

Summary:

  • Distraction-Free Fullscreen Preview: Press F11 to hide the editor, status bar, and toolbar, displaying only your rendered document in fullscreen. Press Esc or F11 to return.
  • Quick Style Cycling: Tap Alt + T (themes), Alt + F (fonts), or Alt + D (tab sizes) followed by / arrow keys to quickly customize the editor interface without using the mouse.
  • Recent Files Dialog: Access your recently opened documents in a clean, scrollable window using Ctrl + R.
  • Keyboard Controls: Quit the app with Ctrl + Q and reload/refresh the app cleanly with Ctrl + Shift + R.
  • Remapped Shortcuts: Adjustments made to word wrap, sync scroll (Alt + X), and line numbers (Alt + C) to prevent keyboard conflicts.

Technical Details:

  • Capture-Phase Leader Sequence: Integrated a capture-phase keydown event listener in keyboard.js to intercept up/down arrow inputs after Alt-chords. This manages a 2-second timeout window to prevent standard CodeMirror inputs during configuration cycling.
  • Tauri Window Optimization: Modified window.js to utilize Tauri's isMaximized, maximize, and unmaximize APIs. This avoids OS-level borderless fullscreen layout glitches in Windows where the WebView lag leaves unpainted areas.
  • DOM & CSS Refactoring: Repositioned the split container to fixed viewport coordinates (inset: 0) and applied theme-based background paint during fullscreen mode. Replaced submenu elements in index.html and base.css with a modal layout (#recent-files-modal and #recent-files-list).
  • Safety reload: Implemented a reload utility that prompts the user through confirmDiscardChanges() in file-io.js to protect modifications before refreshing.
  • Test Suite Enhancements: Added comprehensive vitest suites: fullscreen.test.js validating JSDOM classes and hint timeouts; themes.test.js validating cyclical array traversals; and updated toolbar element assertions in toolbar.test.js and html.test.js.