Skip to content

Fstrategy/md-preview.app

 
 

Repository files navigation

Markdown Preview

App icon

A fast, native macOS app for reading Markdown files.

Platform Swift License Latest release


Drop a .md on the icon (or set Markdown Preview as your default handler) and get a clean, scrollable preview with a real document outline — no Electron, no browser tab.

Screenshots

Main window with document outline sidebar

Quick Look preview — spacebar a .md in Finder:

Quick Look preview from Finder

Features

  • Native renderingWKWebView pipeline backed by swift-markdown, with heading anchors and link handling.
  • Document outline — sidebar TOC that mirrors your headings; click to jump.
  • Inspector panel — toggleable side panel with file metadata.
  • In-document search — toolbar search field plus standard ⌘F / ⌘G / ⌘⇧G for next/previous match.
  • Open With — switch to your real editor (VS Code, Cursor, Zed, Sublime, BBEdit, Nova, CotEditor, TextMate, MacVim, Xcode, TextEdit) without leaving the preview. The list filters to apps that actually declare an editor role for Markdown, and remembers your pick.
  • Share = copy the source — the share toolbar feeds the picker the Markdown text itself, so Copy writes the raw source to the clipboard (great for pasting into ChatGPT / Claude), and Mail, Messages, and Notes get the content in the body instead of a file URL.
  • Quick Look extension — system-wide .md previews from Finder spacebar, Spotlight, and Mail attachments without launching the app.
  • Default handler — offers to register itself as the default .md opener on first launch.

Supported file types

.md, .markdown, .mdown, .txt UTI: net.daringfireball.markdown

Installation

Grab the latest signed and notarized DMG from the Releases page.

Requirements

  • macOS 15 or later
  • Apple Silicon or Intel

Building from source

git clone git@github.com:pluk-inc/md-preview.app.git
cd md-preview.app
open md-preview.xcodeproj

Build and run the md-preview scheme. Swift Package Manager will resolve Sparkle and swift-markdown on first build.

Project layout

md-preview/         Main app target (AppKit, WKWebView)
quick-look/         Quick Look extension (.appex)
scripts/            Release & rollback automation
Version.xcconfig    Marketing & build version (single source of truth)
appcast.xml         Sparkle update feed

Releasing

Releases are driven by Amore — it handles building, code signing, notarization, DMG creation, S3 upload, and Sparkle appcast publishing in one shot.

Bump MARKETING_VERSION and CURRENT_PROJECT_VERSION in Version.xcconfig, then:

./scripts/release.sh

Use ./scripts/rollback-release.sh to revert the appcast pointer if a release misbehaves.

Contributing

Pull requests are welcome. For larger changes, please open an issue first to discuss what you'd like to change.

  1. Fork the repo and create your branch from main.
  2. Run the app and verify the change end-to-end (UI changes need a manual smoke test — there's no UI test suite yet).
  3. Keep PRs focused; one logical change per PR.
  4. Match the existing Swift style (no formatter is enforced; mirror nearby code).

Acknowledgments

  • swift-markdown — Markdown parser (Apple, cmark-gfm-backed)
  • Sparkle — Auto-update framework
  • Amore — macOS release automation (signing, notarization, DMG, hosting, appcast)

License

MIT

About

A simple Markdown viewer for reading .md files

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Swift 87.7%
  • Shell 12.3%