LeafMark is a lightweight local-first macOS Markdown editor and previewer.
V0.1.1 focuses on a small local document loop:
- open Markdown or text files
- edit Markdown locally
- preview rendered Markdown in a split view
- save and save as
- manage multiple documents with tabs
- browse and manage a local folder from the file sidebar
- open
.md,.markdown, and.txtfiles through Finder / Open With - export rendered Markdown to PDF or HTML
- copy rendered content as rich HTML with a plain-text fallback
LeafMark is currently intended for personal local use, not App Store distribution.
- macOS 14 or newer
- Swift toolchain via Xcode or Command Line Tools
- Full Xcode is needed to run XCTest-based tests with
swift test
swift package resolve
swift buildscripts/build_app_bundle.shThis creates:
build/LeafMark.appRun it with:
open build/LeafMark.appAutomated tests are written with XCTest under Tests/LeafMarkCoreTests.
Run them with:
swift testIf the active developer directory only provides Command Line Tools and does not include XCTest, swift test may fail with:
no such module 'XCTest'
In that case, either install/select full Xcode or rely on build checks plus manual QA for local smoke testing.
QA documents:
docs/qa/leafmark-v0.1.1-manual-qa-checklist.md
Each version should follow the same release path:
- Start from a clean, up-to-date
master. - Create a version branch from
master, usually namedcodex/leafmark-vX.Y.Z. - Implement only the planned version scope on that branch.
- Run developer self-tests before handing the build to manual QA.
- Record manual QA findings in the version QA document.
- Fix confirmed issues on the same version branch and re-run relevant checks.
- When manual QA is accepted, update version metadata and README release notes.
- Merge the version branch back into local
master. - Push both the version branch and
masterto origin. - Create and push the version tag, for example
v0.1.1. - Confirm GitHub's default branch points at
master.
Do not publish a version from a feature branch only. A release is complete only
after local master, remote origin/master, and the version tag all point to
the accepted release commit.
Included:
- SwiftUI single-window app
- split editor and preview, with optional sidebar and outline
- WKWebView Markdown preview
- Markdown rendering behind
MarkdownRenderService - common Markdown features including tables, links, images, quotes, lists, and code blocks
- New / Open / Save / Save As / Toggle Preview / Copy Rendered
- document tabs for multiple Markdown/text files
- folder tree browsing with create, rename, delete, and reveal actions
- appearance mode control: light, dark, or system
- PDF and HTML export
- unsaved-change confirmation for destructive document actions
- local app bundle script and document type metadata
Not included yet:
- App Store release, signing, notarization, or installer
- cloud sync, accounts, collaboration, or plugin system
- syntax highlighting
- scroll sync
- plugin or Git integration
See docs/qa/leafmark-v0.1.1-manual-qa-checklist.md for post-QA notes and follow-up requests.