v0.3.0
mdeasy 0.3.0
Breaking changes
- Export HTML → Export PDF: menu "Export HTML…" replaced by "Export PDF…" (⌘E). Uses native
WKWebView.createPDF— preserves current theme/CSS/Mermaid, paginated output. No more JS-side HTML re-assembly.
New
- Single-file reader semantics: when multiple files are opened together (Finder multi-select,
open *.md), only the last one renders. No multi-window/tabs — by design. - CI headless render self-check (
mdeasy --selftest <path.md>): proves the full load→IIFE→bridge→render→doc-shown pipeline on a GUI-less macOS runner. Every push to main is now verified end-to-end, not just compiled. - md.js unit tests (13 cases): slugify (ASCII + CJK), image rewrite, mermaid detection, outline extraction, task lists, code highlighting.
Improvements
- Version number single-sourced from
App/Info.plist, injected into the reader bundle at build time — no more hardcoded0.2.3drift. - Path sandbox unified:
PathSandbox.join(base:relative:)shared by bothmdeasy-app://andmdeasy-asset://handlers. - Mermaid/theme config deduped into single
mermaidConfig(). - Hot-refresh preserves scroll position (external editor save no longer jumps to top).
openInEditoravoids self-recursion (mdeasy is itself a registered .md handler).- FileWatcher re-arm race fixed (all shared state routed through serial queue).
- Icon alpha gate in CI actually works now (was silently swallowed by
|| true). - Source
reader/index.htmlunified with build output (no more ESM/CSP divergence trap). - Fragile
smoke-open.shremoved in favor ofci-selftest.sh.
Install (unsigned, self-use)
- Open the dmg, drag mdeasy.app to Applications
- First launch: System Settings → Privacy & Security → Open Anyway
- Set as default: mdeasy → Set as Default Markdown App…
- Or Finder: select
.md→ Get Info (⌘I) → Open with mdeasy → Change All…
- Or Finder: select
First open (method B)
- Open
mdeasy(if blocked, dismiss the alert) - System Settings → Privacy & Security
- Find the message that mdeasy was blocked
- Click Open Anyway, confirm Open
Then double-click any .md file to read.