Skip to content

Latest commit

 

History

History
336 lines (259 loc) · 11 KB

File metadata and controls

336 lines (259 loc) · 11 KB

Ferrite v0.2.7 Release Test Plan

Date: 2026-03-11 Version: 0.2.7 Last release: v0.2.6.1 (2026-02-06)

This document covers what needs manual testing before tagging v0.2.7. Automated tests (1291 passing, 0 failures) cover the core logic; this plan targets UI behavior, platform-specific features, and the many new user-facing changes.


Priority Legend

Priority Meaning
P0 Must pass — blocks release
P1 Should pass — significant regression if broken
P2 Nice to verify — minor or cosmetic

1. New Features (P0)

1.1 Wikilinks & Backlinks

Test file: test_md/test_wikilinks.md (open inside test_md/ as workspace)

  • [[target]] syntax creates clickable link in Rendered/Split mode
  • [[target|display text]] renders display text, navigates to target
  • Click navigates to the linked file (opens as new tab)
  • Spaces in filenames work: [[My Wikilink Note]]
  • Ambiguous targets show selection prompt
  • Backlinks panel (side panel -> Backlinks tab) lists files linking to current doc
  • Backlinks update when switching tabs

1.2 GitHub-Style Callouts

Test file: test_md/test_callouts.md

  • All 5 callout types render with correct color/icon (NOTE, TIP, WARNING, CAUTION, IMPORTANT)
  • Custom titles display correctly
  • Collapsible callouts (> [!NOTE]-) start collapsed and expand on click
  • Rich content inside callouts (bold, code blocks, lists) renders
  • Regular blockquotes are NOT mistakenly rendered as callouts

1.3 Vim Mode

Test file: test_md/test_vim_mode.md

  • Enable in Settings -> Editor
  • hjkl movement works in Normal mode
  • dd, yy, p, x, dw commands work
  • v/V visual selection works
  • /search works
  • i, a, o, O enter Insert mode
  • Escape returns to Normal mode
  • Status bar shows mode indicator ([NORMAL], [INSERT], [VISUAL])
  • Ctrl+ shortcuts (Ctrl+S, Ctrl+Z, Ctrl+C, Ctrl+V) still work in all modes

1.4 Ctrl+Scroll Zoom

Test file: test_md/test_zoom.md

  • Ctrl+Scroll Up/Down zooms in/out
  • Ctrl++/Ctrl+- keyboard zoom works
  • Ctrl+0 resets zoom
  • Normal scroll (without Ctrl) is unaffected

1.5 Check for Updates

  • Settings -> About -> "Check for Updates" button works
  • Shows "up to date" when on latest version
  • Shows download link when update available (test with older binary)
  • Handles network error gracefully (disconnect wifi and try)

1.6 Welcome Page

Test file: test_md/test_welcome_page.md (follow instructions)

  • Appears on first run (delete config folder)
  • All configuration widgets function
  • "Get Started" closes the welcome tab
  • Does not appear on subsequent launches
  • Does not appear when opening with file arguments

1.7 Frontmatter Panel

Test file: test_md/test_frontmatter.md

  • FM tab appears in outline panel
  • All YAML fields render as form widgets
  • Editing a field updates the source YAML
  • Editing the source YAML updates the panel
  • Tags render as chip/pill UI

1.8 Single-Instance Protocol

Test file: test_md/test_single_instance.md

  • Double-clicking a file in Explorer opens it in existing Ferrite window
  • No new Ferrite process is spawned
  • File opens near-instantly (<100ms)
  • Multiple rapid opens all work
  • Lock file cleaned up on exit

1.9 Complex Script Font Loading

Test file: test_md/test_complex_scripts.md

  • Arabic, Hebrew, Devanagari, Thai, etc. render correctly (no tofu)
  • Font loads lazily on demand
  • Font preferences in Settings -> Appearance -> Additional Scripts work

2. Changed Behavior (P0-P1)

2.1 Keep Text Selected After Formatting (P0)

  1. Open any .md file, select text
  2. Click Bold (or Ctrl+B)
  • Text stays selected after formatting
  • Editor retains focus
  • Can immediately apply Italic (Ctrl+I) without reselecting

2.2 Format Toolbar Location (P1)

  • Format toolbar is at bottom of raw editor (not in ribbon)
  • Chevron toggle collapses/expands the toolbar
  • Visible in Raw and Split modes for .md files
  • Hidden for non-markdown files

2.3 Side Panel Toggle Strip (P1)

  • Thin toggle strip on right edge of editor
  • Click opens/closes side panel
  • Tabs: Outline, Statistics, Backlinks, Productivity Hub

2.4 View Mode Bar (P1)

  • Always visible for all editor tabs
  • Non-markdown files show two modes (Raw | Rendered)
  • Markdown files show three modes (Raw | Split | Rendered)

2.5 Window Controls (P2)

  • Close, Minimize, Maximize, Fullscreen buttons render correctly
  • Hover states work (red hover on close button)
  • NE corner resize works without conflicting with buttons

3. Bug Fixes to Verify (P0)

3.1 Linux File Dialog Error Handling

  • On Hyprland/Sway/i3 without portal: shows helpful error modal
  • Error includes distro-specific install instructions

3.2 Word Wrap Scroll Correctness

Test file: test_md/test_scroll_perf.md

  • Enable word wrap in settings
  • Scroll through large file — no jumps or position loss
  • Click on a line — cursor goes to correct position
  • Ctrl+G (go to line) goes to correct line

3.3 Binary File Crash Fix

  • Open a binary file (e.g., a .png or .exe) — no crash
  • Binary content detection shows warning

3.4 IME Backspace Fix

Test file: test_md/test_ime_input.md

  • IME input (Chinese, Japanese) works
  • Backspace during IME composition works correctly

4. Packaging & Installers (P0)

4.1 Windows MSI (WiX) — FIRST RELEASE

  • cargo wix builds successfully locally
  • MSI installs correctly
  • Feature selection UI shows (file associations, context menu, PATH, shortcuts)
  • File associations register in "Open With" menus
  • Context menu entries appear in Explorer
  • Start Menu shortcut created
  • "Launch Ferrite" checkbox on exit dialog works
  • Uninstall removes all registry entries cleanly
  • Upgrade from portable to MSI doesn't lose settings

4.2 Windows Portable Zip

  • Portable zip contains ferrite.exe + portable/ folder
  • Settings stored in portable/ subfolder (not AppData)

4.3 PortableApps.com Format

  • .paf.exe installs in PortableApps platform
  • Settings stored in Data\settings\
  • Version displayed correctly

4.4 Windows Code Signing (SignPath)

  • CI signs all Windows artifacts (zip, msi, paf.exe)
  • No SmartScreen warnings on download/install

4.5 macOS .app Bundle

  • ARM64 and Intel builds produce .app bundles (not raw binaries)
  • Gatekeeper doesn't block unsigned .app (or shows standard dialog)
  • .icns icon renders in Finder and Dock

4.6 Linux .deb Package

  • Installs on Ubuntu/Debian
  • Desktop entry works (shows in application launcher)
  • Icons appear at correct sizes

4.7 Linux .rpm Package

  • Installs on Fedora/RHEL
  • Same checks as .deb

4.8 Flatpak (Flathub)

  • Flathub manifest updated (see Flathub section below)
  • Test build passes on Flathub CI
  • Open Folder works in sandboxed Flatpak

4.9 Nix Flake

  • nix build .#ferrite succeeds
  • nix run github:OlaProeis/Ferrite works (after push)

5. CI/CD Pipeline (P0)

5.1 Release Workflow Verification

The release workflow has significant changes since v0.2.6.1:

  • Windows: Builds exe + portable zip + MSI + PAF installer
  • Windows signing: SignPath signs all 3 Windows artifacts
  • Linux: Builds tar.gz + .deb (cargo-deb) + .rpm (cargo-generate-rpm)
  • macOS ARM64: Builds .app bundle via cargo-bundle
  • macOS Intel: Cross-compiles .app bundle for x86_64
  • Release job: Downloads all artifacts and creates GitHub Release

5.2 New in CI Since v0.2.6.1

  • Added cargo-wix MSI build step
  • Added PortableApps.com PAF build step (NSIS + Pillow icons)
  • Added cargo-deb and cargo-generate-rpm for Linux
  • Added macOS Intel cross-compilation job
  • Added Nix CI workflow (nix.yml)

6. Flathub Release Prep

Per docs/flathub-maintenance.md, before merging the Flathub PR:

In Ferrite Repo (before tagging)

  • Version is 0.2.7 in Cargo.toml (confirmed: yes)
  • CHANGELOG.md has v0.2.7 entry (confirmed: yes, dated 2026-03-06)
  • metainfo.xml has new <release version="0.2.7" ...> entry (NEEDS UPDATE)
  • Screenshot URLs use the new tag v0.2.7 (not master)

In Flathub Repo

  • Update tag: from v0.2.6.1 to v0.2.7
  • Update commit: hash to the tagged commit
  • Regenerate cargo-sources.json (Cargo.lock has 155 lines of changes)
  • Create PR, wait for test build to pass
  • Merge after GitHub Release is published

7. Regression Tests (P1)

7.1 Core Editor

  • Open, edit, save a file
  • Undo/Redo (Ctrl+Z, Ctrl+Y)
  • Find/Replace (Ctrl+F, Ctrl+H)
  • Multi-cursor (Ctrl+Click)
  • Code folding
  • Bracket matching

7.2 Markdown Rendering

Test file: test_md/test.md

  • Bold, italic, code, headings render correctly in Split/Rendered mode
  • Code blocks with syntax highlighting
  • Tables render properly
  • Lists (ordered, unordered, nested)
  • Images render (if local path exists)
  • Links are clickable

7.3 Structured Data Viewers

  • JSON tree viewer (open a .json file)
  • YAML tree viewer (open a .yaml file)
  • TOML tree viewer (open a .toml file)
  • CSV viewer with test_md/test_data.csv
  • TSV viewer with test_md/test_data.tsv
  • Column resizing in CSV viewer

7.4 Mermaid Diagrams

Test file: test_md/test_flowcharts.md

  • Flowcharts render
  • Other diagram types (if test files exist)

7.5 Workspace Mode

  • Open a folder — file tree appears
  • Git status indicators in file tree
  • File watcher auto-reloads changed files

7.6 Terminal

  • Integrated terminal opens
  • Can run commands
  • Split/tile layouts work

7.7 Session Persistence

  • Close Ferrite with multiple tabs open
  • Reopen — tabs are restored
  • Scroll positions restored
  • Unsaved changes preserved (if auto-save enabled)

8. Platform-Specific Tests

Windows

  • Borderless window with custom title bar works
  • Window snapping (Win+Arrow) works
  • High DPI rendering

macOS

  • .app bundle launches from Finder
  • Apple Events (open file via Finder) work
  • Menu bar integration

Linux

  • X11 and Wayland both work
  • File dialogs work (native or portal-based)
  • Flatpak sandbox permissions sufficient

Quick Smoke Test (5 minutes)

If you only have 5 minutes, do this:

  1. cargo run — app launches without errors
  2. Open test_md/test_callouts.md — callouts render correctly
  3. Switch to Split view — both panels sync
  4. Type some text — editor responsive
  5. Ctrl+B on selected text — stays selected
  6. Ctrl+Scroll — zooms in/out
  7. Open test_md/test_wikilinks.md in workspace mode — wikilinks work
  8. Enable Vim mode — basic hjkl + dd + i/Escape work
  9. Close and reopen — session restored
  10. Check Settings -> About -> "Check for Updates"