Releases: sethbang/markee
Release list
v1.1.0
Added
- Docs navigation — click
.mdlinks to navigate in-window with
back/forward history (⌘[ / ⌘]), a sidebar file tree,[[wiki-links]]
resolved across the workspace, and a workspace-wide full-text search palette
(⇧⌘O). File ▸ Open Folder as Workspace… sets the root explicitly. - Preferences window (⌘,) — override the theme (System/Light/Dark), accent
color, and base font size, and load a custom CSS file (Settings scene). - Window pinning — Window-menu commands: Float on Top (⌥⌘P), Visible on All
Spaces, Move to Active Space, and a Ghost Mode that dims the window until you
hover or hold a modifier. - Rendering polish — copy-code buttons and language badges on code blocks,
heading anchor links, and a live word-count pill. - Export PDF… (⇧⌘E) — write the rendered document straight to a PDF,
alongside the existing Export Standalone HTML. - Commercial / Team license materials (
COMMERCIAL.md,
docs/commercial-agreement-template.md).
Changed
- Print / Save as PDF now uses a print-tuned
@media printstylesheet
(forced light palette, page-break avoidance for code/tables/diagrams, printed
link URLs) for cleaner pagination. - Find in preview is reimplemented as a JS-owned engine using the CSS Custom
Highlight API — no DOM mutation, so highlights never leak into Export/Print. fetch-vendor.shnow verifies every downloaded library against a pinned
SHA-256 manifest (scripts/vendor.sha256) and fails on mismatch.
Removed
- The "Stay Visible in Full Screen" pinning option — unachievable for Markee's
activating DocumentGroup windows.
Fixed
- Mermaid and KaTeX render failures now surface in the in-app error banner
instead of failing silently.
v1.0.0
The first publicly distributable release — Developer ID signed and notarized,
so Markee installs and opens without Gatekeeper warnings.
Added
- Quick Look preview — press Space on a Markdown file in Finder to see it
fully rendered instead of as raw source. A sandboxed Quick Look extension
that reuses the app's renderer. - Per-file Finder thumbnails —
.mdfiles show a thumbnail of their
rendered content in Finder's icon views, falling back to the document icon. - Markdown document icon —
.mdfiles now carry a branded Markee document
icon in place of the generic plain-text page. - Developer ID signing & notarization — the app and both Quick Look
extensions are signed with a Developer ID certificate and notarized by Apple,
so they install and open without Gatekeeper warnings.make notarizeand the
release workflow handle it end to end.
Changed
- Mermaid now loads lazily — only documents that contain a diagram pay its
~2.5 MB parse cost, so cold-start render is faster for everything else. - Bundle version bumped to
1.0.0(CFBundleShortVersionString) /6
(CFBundleVersion).
v0.5.0
Added
- Copy Markdown Source (⌘⇧C) — copy the file's raw Markdown to the
clipboard, read fresh from disk. In the File menu and the preview
right-click menu. - Reveal in Finder (⌘⇧R) — reveal the current file in Finder. In the
File menu and the preview right-click menu. - In-app updates — Markee checks GitHub Releases for a newer version on
launch (at most once a day) and on demand via Markee ▸ Check for
Updates…. When a newer release exists it downloads, validates, and
installs it, then relaunches — clearing quarantine so there is no repeat
Gatekeeper prompt. Falls back to opening the release page in the browser
when it cannot replace itself in place.
Changed
- Bundle version bumped to
0.5.0(CFBundleShortVersionString) /5
(CFBundleVersion).
Fixed
- The custom title bar no longer disappears after the window loses and
regains focus. AppKit resetstitlebarAppearsTransparentduring window
reactivation; the window configuration is now re-applied via KVO
whenever that happens.
First launch: Markee is ad-hoc codesigned, not yet notarized. Right-click Markee.app → Open → Open the first time, or run xattr -dr com.apple.quarantine Markee.app.
v0.4.0
Added
- Zoom (⌘+ / ⌘= / ⌘- / ⌘0) — resize the rendered preview. Zoom is
reflow-based: text re-wraps and code blocks, images, KaTeX, and Mermaid
output scale together. The level is one global preference, shared across
all open windows and remembered across launches. ⌘+ and ⌘= both zoom in
(the latter needs no Shift). Driven through awindow.markee.setZoom()
bridge call applying CSSzoom; nativeWKWebView.pageZoomis macOS 14+
and the deployment target is macOS 13. - Find Next / Previous (⌘G / ⌘⇧G) — step through find-bar matches with
the standard macOS shortcuts, with matching Edit-menu items. ⌘G with no
active query opens the find bar. - Reload (⌘R) — manually re-read and re-render the file from disk; a
fallback for the rare save the file watcher does not catch.
Changed
- Bundle version bumped to
0.4.0(CFBundleShortVersionString) /4
(CFBundleVersion).
First launch: Markee is ad-hoc codesigned, not yet notarized. Right-click Markee.app → Open → Open the first time, or run xattr -dr com.apple.quarantine Markee.app.
v0.3.0
Added
- Find in preview (⌘F) — an in-app find bar. macOS
WKWebViewhas no
built-in find UI, so Markee ships its own: find-as-you-type, ↩ / chevrons
to step through matches, wrap-around, a "Not found" indicator, and ⎋ to
dismiss. Driven byWKWebView.find(_:configuration:). - Print / Save as PDF (⌘P) — opens the system print panel via
WKWebView.printOperation(with:); the panel's PDF menu covers
print-to-PDF.
Fixed
- Export Standalone HTML (⌘E) failed with "JavaScript execution
returned a result of an unsupported type."exportStandalone()is async
(it inlines images as data URIs), so it returns a Promise;
evaluateJavaScriptcannot await one. The bridge now uses
callAsyncJavaScript, which resolves the Promise before returning to Swift.
Changed
- CI builds on
macos-14+macos-15; the retiredmacos-13hosted
runner was queueing jobs indefinitely. - Bundle version bumped to
0.3.0(CFBundleShortVersionString) /3
(CFBundleVersion).
First launch: Markee is ad-hoc codesigned, not yet notarized. Right-click Markee.app → Open → Open the first time, or run xattr -dr com.apple.quarantine Markee.app.
v0.2.0
Added
- Open in Editor at Current Heading — ⌥⌘E or right-click an outline row to
jump to that heading's source line in your editor of choice. Auto-detects
Cursor, VS Code, Zed, Sublime, TextMate, MacVim, and Helix; override with
defaults write com.markee.preview editor "<name>". - Soft Modern UI/UX redesign:
- Integrated window chrome (no system titlebar divider, custom 44pt gradient bar).
- Spring-animated outline drawer (⌘⌥\ to toggle).
- Live active-heading highlight in the outline, driven by an
IntersectionObserver in the WebView. - New
theme.csswith--surface/--accenttoken palette,
soft-modern typography, custom task-list checkboxes, faded<hr>, and a
lede-paragraph treatment after H1. - Dark + light themes follow
prefers-color-scheme.
- Article max-width widened from 740px → 1000px.
MITlicense,THIRD-PARTY-NOTICES.md,SECURITY.md,CONTRIBUTING.md,
CHANGELOG.md, and adocs/demo.mdshowcase document.- GitHub Actions CI workflow that builds and tests on every push and PR.
Security
BundleSchemeHandlerpath-traversal hardening — requests like
markee-app://app/../../Info.plistno longer escape the bundle's
Resources/web/directory.DocSchemeHandlersymlink-escape fix — symlinks inside the document
directory pointing at files outside (e.g.~/.ssh/id_rsa) are now rejected.
Resolution moved fromstandardizedFileURLtoresolvingSymlinksInPath()
with a trailing-slash boundary so sibling directories with the root as a
prefix (/notes_secretvs root/notes) cannot match.- External-link allowlist — only
http,https, andmailtoschemes are
handed toNSWorkspace.shared.open;javascript:,file://, custom
app-handler schemes are blocked. - EditorLauncher input validation — user-supplied editor names from
UserDefaultsare validated against^[A-Za-z0-9._+-]+$before being
interpolated into thezsh -ilc 'command -v <name>'fallback, closing a
self-targeted shell-injection vector. - All
HTTPURLResponse(...)!andtask.request.url!force-unwraps in the
scheme handlers replaced withguard letearly-outs.
Changed
Makefileapptarget now depends on aResources/web/vendor/.fetched
sentinel — a fresh clone runningmake appautomatically fetches vendored
libraries instead of silently building a broken bundle.LICENSEandTHIRD-PARTY-NOTICES.mdare now copied into
Markee.app/Contents/Resources/at build time so the obligations travel
with the binary.- Bundle version bumped to
0.2.0(CFBundleShortVersionString) /2
(CFBundleVersion).
Fixed
fixtures/sample.mdreferences to the old "Macdown" name updated to
"Markee" + smoke-test stragglers removed.
First launch: Markee is ad-hoc codesigned, not yet notarized. Right-click Markee.app → Open → Open the first time, or run xattr -dr com.apple.quarantine Markee.app.