Skip to content

Releases: b451c/quickmd

v1.3.2 — File > Open, Local Link Navigation, URL Encoding

02 Mar 18:10

Choose a tag to compare

What's New

Added

  • Local Markdown Navigation: Clicking a link to another local .md, .markdown, .mdown, or .mkd file now automatically opens it in a new QuickMD window, bypassing default system editors.
  • Space Character URL Parsing: Links with spaces in paths/titles are now correctly percent-encoded and activate properly.

Fixed

  • File > Open Menu: Restored the native File > Open and File > Open Recent menu items that were previously hidden.
  • Relative Document Links: Relative links like ./other.md are now resolved against the originating document's directory.

Full Changelog: https://github.com/b451c/quickmd/blob/main/QuickMD/CHANGELOG.md

v1.3.1 — Copy to Clipboard & Search Improvements

13 Feb 10:21

Choose a tag to compare

What's New

Copy to Clipboard

  • ⌘⇧C copies the entire raw markdown to clipboard
  • "Copy source" button (top-right) — hover to reveal, click to copy whole file
  • Copy sections — hover any heading in the main content or ToC sidebar to reveal a copy icon that copies that section's markdown
  • Toast feedback — "Copied!" notification on all copy operations

Search Improvements

  • Word-level highlighting now works inside code blocks, tables, and blockquotes (previously only text and headings)
  • Per-occurrence navigation — arrow keys move between individual word matches, not just blocks. Counter shows exact count (e.g., "5/19")
  • Focused match highlighted in orange, all others in yellow

Performance Fixes

  • Critical hang fix: MarkdownBlock converted from enum with computed id to struct with stored id — eliminates thousands of AttributedString copies per LazyVStack layout pass that caused 100% CPU freezes during scrolling
  • Search navigation: Pre-computed highlight cache + dedicated focus state. Arrow clicks now recompute only 1 block instead of all visible blocks
  • Optimized searchHighlight: Single-pass parallel index iteration replaces per-character dictionary allocation

Full Changelog: v1.3...v1.3.1

QuickMD v1.3

13 Feb 01:08

Choose a tag to compare

Major Feature Release

17 commits since v1.2.1 — the biggest update yet, completing the entire Phase D roadmap.

New Features

Find & Search (D5)⌘F

  • Match highlighting, counter ("1/5"), ⌘G / ⇧⌘G navigation, Escape to close

Nested Blockquotes (D2)

  • Full nesting support with left border indicators per level

Double-backtick Inline Code (D1)

  • code with ` backtick per CommonMark spec

Per-block PDF Export (C4)

  • Each block rendered individually — page breaks only between blocks, no mid-block splits

Table of Contents (D4)⌘⇧T

  • Auto-generated sidebar from H1–H6 headings, click-to-navigate

Reference-style Links (D3)

  • [text][id], [text][], [text] formats with case-insensitive matching
  • Definition lines hidden from output

Custom Color Themes (D6)⌘,

Theme Type
Auto Follows system light/dark
Solarized Light Warm cream background
Solarized Dark Deep blue background
Dracula Purple-tinted dark
GitHub Clean white, familiar style
Gruvbox Dark Warm earthy tones
Nord Arctic blue palette

Improvements

  • Background parsing on Task.detached (no UI freezes)
  • Comprehensive code audit: Sendable conformance, FocusedValue multi-window, recursive bold/italic parsing, bracket depth tracking
  • MarkdownTheme refactored to stored properties with static theme instances

Bug Fixes

  • Triple-backtick in inline context renders correctly
  • Search index mapping for AttributedString
  • ⌘F shortcut reliability

Full Changelog

See CHANGELOG.md

QuickMD v1.2.1

22 Jan 21:37

Choose a tag to compare

Performance & Quality Release

A quality-focused release with significant performance optimizations and code improvements.

Performance Highlights

Optimization Impact
Cached MarkdownRenderer -99% allocations per parse
Cached syntax highlighting Zero recomputation on re-render
Static regex compilation 9 patterns, zero runtime compilation
Theme caching Singleton pattern, zero allocations

Code Quality Improvements

  • Zero runtime force unwraps - All URLs moved to compile-time validated constants
  • Zero sync network calls - Remote images handled gracefully in PDF export
  • Proper logging - Replaced print() with os.Logger
  • Consistent patterns - Stored properties instead of computed where appropriate

Audit Results

Category Score
SwiftUI Performance 10/10
Code Quality 10/10
Production Readiness 10/10

Checksum

SHA256 (QuickMD-v1.2.1.zip) = e57d7a208e9c02bbd175792ad1a890296a42916fecce3a532b4a9419d61342c0

Full Changelog: v1.2...v1.2.1