Releases: b451c/quickmd
v1.4.1 — Inline Math, Footnotes, Homebrew
What's New
Added
- Inline Math:
$...$expressions render as TeX-quality graphics inline with paragraph text — fractions, integrals, superscripts all render beautifully within a sentence - Footnotes:
[^id]references render as superscript numbers, definitions listed at end of document - Homebrew Cask:
brew install --cask quickmdformula included
Full Changelog: https://github.com/b451c/quickmd/blob/main/QuickMD/CHANGELOG.md
v1.4.0 — LaTeX Math & Mermaid Diagrams
What's New
Added
- LaTeX Math Rendering: Display math blocks (
$$...$$) are now rendered with TeX-quality typography. Supports fractions, integrals, matrices, sums, and all standard LaTeX notation. Powered by vendored SwiftMath — native Core Graphics rendering, zero network dependency. - Mermaid Diagram Rendering: Fenced code blocks with
```mermaidare now rendered as visual diagrams — flowcharts, sequence diagrams, pie charts, class diagrams, and more. Powered by bundled Mermaid.js.
Fixed
- Dead App Store Link: Updated the Mac App Store link to the correct app ID.
Zero external dependencies. SwiftMath is vendored (copied into the project), Mermaid.js is bundled as a static resource. No SPM packages, no CocoaPods, no network required.
Contributors: @ken-ams (bug report)
Full Changelog: https://github.com/b451c/quickmd/blob/main/QuickMD/CHANGELOG.md
v1.3.3 — Local Image Access, Persistent ToC, Scroll Fix
What's New
Added
- Folder Access for Local Images: QuickMD now prompts for folder access when a local image can't be loaded due to sandbox restrictions. Access is persisted via Security-Scoped Bookmarks — the prompt only appears once per folder.
- Persistent Table of Contents: The ToC sidebar state now persists across app launches and new documents.
- Check for Updates: GitHub version now shows "Check for Updates" in the Help menu, with a subtle notification when a new version is available.
Fixed
- Scroll Freeze on Complex Code Blocks: Fixed a UI freeze caused by rapidly creating/destroying views containing box-drawing Unicode characters during fast scrolling.
- Cmd+W to Close: Restored the standard macOS Close Window shortcut that was accidentally removed by a CommandGroup override.
Contributors: @fxd0h (Security-Scoped Bookmarks), @tbeseda (feature requests)
Full Changelog: https://github.com/b451c/quickmd/blob/main/QuickMD/CHANGELOG.md
v1.3.2 — File > Open, Local Link Navigation, URL Encoding
What's New
Added
- Local Markdown Navigation: Clicking a link to another local
.md,.markdown,.mdown, or.mkdfile 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 > OpenandFile > Open Recentmenu items that were previously hidden. - Relative Document Links: Relative links like
./other.mdare 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
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:
MarkdownBlockconverted from enum with computedidto struct with storedid— eliminates thousands ofAttributedStringcopies perLazyVStacklayout 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
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/⇧⌘Gnavigation, Escape to close
Nested Blockquotes (D2)
- Full nesting support with left border indicators per level
Double-backtick Inline Code (D1)
code with ` backtickper 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
MarkdownThemerefactored to stored properties with static theme instances
Bug Fixes
- Triple-backtick in inline context renders correctly
- Search index mapping for AttributedString
⌘Fshortcut reliability
Full Changelog
See CHANGELOG.md
QuickMD v1.2.1
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