Releases · auto-updated from GitHub

What's new in MDHero.

Every release, in reverse chronological order. Notes pulled directly from GitHub Releases at build time, so this page always matches the canonical source.

View on GitHub

✨ New

  • Quick Look on macOS. Select a .md file in Finder and press Space to see it rendered — headings, tables, code highlighting, math and diagrams — instead of raw text. Works without opening MDHero. (#88 — thanks @miszterx; #115, #117)
  • Line numbers in the raw markdown view, matching the editor, and they stay aligned when you print. (#110, #114 — thanks @anandghegde; #118)
  • The table-of-contents sidebar is resizable. Drag its edge, or focus the divider and use the arrow keys; the width is remembered between sessions. (#108 — thanks @dahuangfeng123; #111)

🔒 Security and trust

  • The macOS .dmg is now notarized and stapled. Previous releases were signed but not notarized, so macOS showed a warning on first open and the download could be blocked outright. It now opens cleanly with no Gatekeeper prompt. (#116, #119)
  • Links to files now open only for an allow-listed set of types — PDFs, common images, .txt, .heic, .avif and .mp4. Previously a link could hand any path to the operating system's opener. (#112 — thanks https://github.com/feberbo)
  • Dependencies refreshed. Every critical and high advisory is closed; what remains is low and medium in build-time tooling. (#120)

🐛 Fixes

  • Files saved as "UTF-8 with BOM" render correctly. A file from Windows Notepad (and many other tools) lost its first heading — or its whole frontmatter block, which also quietly disabled Marp presentation mode. (#122 — thanks @DrorHarari; #124)
  • The raw view's line-number gutter no longer drifts out of alignment when printing. (#118)

Install

  • macOS (Apple Silicon): download the .dmg — this is the first release that opens without a Gatekeeper warning
  • Windows (x64 or ARM64): the .msi installer or -setup.exe (NSIS) — pick the x64 or arm64 file for your machine
  • Linux (x64 or arm64): the .deb (Debian/Ubuntu), .rpm (Fedora/openSUSE) or .AppImage (any distro)

Existing installs will offer this update in-app.

Quick Look needs one extra step on first use: open MDHero once after installing so macOS registers the extension. If Space still shows raw text, enable MDHero under System Settings → General → Login Items & Extensions → Quick Look.

Full changelog: v0.2.9...v0.2.10

View on GitHub

✨ New

  • Live reload for every open tab. Edit a file in another editor and its tab updates even in the background; the document on screen is only ever repainted for the tab you are looking at. If a file changes on disk while you have unsaved edits in it, your edits are kept, the tab shows ⟳, and Save asks before overwriting. (#97, #106)
  • Tabs come back after a restart — same files, same order, same active tab; files that no longer exist are skipped. Off switch in Settings → Behavior. (#72, #102)
  • Split mode scrolls in sync. Scroll either the editor or the preview and the other follows; typing keeps both panes on the same section. (#74, #105)
  • File › Print with Cmd+P / Ctrl+P, opening the native print dialog — print to paper or to PDF from the rendered view. (#89, #103)
  • New document — start an empty markdown file from the home screen or the + tab and pick its location on first save. (#63, #65)
  • mdhero:// links — open local files from other apps via the mdhero://open?path=… URI scheme. (#60, #61)
  • Right-to-left text. Arabic, Hebrew and Persian paragraphs, headings, lists and table cells render in their own direction, and <div dir="rtl"> / <div dir="ltr"> wrapper lines are honoured, including the case where a paragraph starts with a Latin word or number. (#64, #66, #95, #104)

🖥️ Platforms

  • Linux builds: .deb, .rpm and .AppImage, x64 and arm64. (#75 — thanks @AghastyGD; #80 — thanks @arfshl)
  • Windows on ARM (arm64 .msi and -setup.exe). (#79 — thanks @arfshl)
  • Windows fixes: local images and relative links now resolve on Windows; the Plans list is no longer empty there. (#76, #90 — thanks @hdo-projects, and @tuzumkuru and @Matis777 for the diagnoses)
  • Linux menu: the Window menu no longer opens empty. (#98)

🐛 Fixes

  • Live reload kept working only for the first tab you opened; switching tabs silently stopped it. (#68, #69 — thanks @feberbo)
  • Closing the last tab left the watcher running, so an external edit could paint a closed document over the home screen. (#91 — thanks @hdo-projects)
  • File › Close Tab was a dead menu item. (#92 — thanks @hdo-projects)
  • Dark theme: every syntax-highlighting token class now has a readable colour. (#67, #87)
  • Keyboard hints in the UI say Ctrl on Windows and Linux instead of Cmd. (#98)
  • The in-app updater and About dialog point at the current repository. (#98)

🔒 Hardening

  • Diagram rendering, the app's Content-Security-Policy and the file read/write paths were tightened after a private security review. No exploit was found against v0.2.8; these close the gaps that made one possible. (#107)
  • Local images are now limited to the document's own folder tree, its git checkout, or a folder you pinned. An image referenced from outside that shows as broken until you pin its folder. (#101)

⚙️ Under the hood

  • The unit and Rust test suites run in CI on every push and PR (#93 — thanks @hdo-projects), the type check is blocking (#99), and all actions run on Node 24 (#99).

Install

  • macOS (Apple Silicon): download the .dmg
  • Windows (x64 or ARM64): download the .msi installer or -setup.exe (NSIS) — pick the x64 or arm64 file for your machine
  • Linux (x64 or arm64): download the .deb (Debian/Ubuntu), .rpm (Fedora/openSUSE) or .AppImage (any distro) — amd64/x86_64 or arm64/aarch64

Existing macOS and Windows installs will offer this update in-app.

🔏 Code signing

macOS builds are signed with an Apple Developer ID and notarised by Apple. Windows builds are not yet code-signed, so Windows SmartScreen may warn that the publisher is unrecognised, and Microsoft Defender's machine-learning heuristics have flagged the installer as Trojan:Win32/Wacatac.B!ml. That detection is a false positive: the !ml suffix denotes a heuristic classifier rather than a match against known malware, and it fires on installers that are unsigned and have little download history. Every release is built in public by GitHub Actions from the source in this repository.

MDHero has applied to the SignPath Foundation, which provides free code signing to open source projects. Once approved, Windows installers will be signed via the SignPath Foundation and these warnings will stop.

View on GitHub

✨ New

  • View · Split · Edit mode switcher — a centered segmented control replaces the edit button. The new Split mode shows the editor and a live preview side by side. (#19, #59)
  • Marp presentation mode — open a marp: true document as a native slideshow with arrow / Space / Home / End navigation and optional pagination. No Marp CLI needed. (#44)
  • Editor line numbers — a wrap-aware line-number gutter with a current-line highlight; on by default, toggleable in Settings → Editor. (#53)
  • Copy Path — right-click a tab to copy its absolute file path. (#50, #51 — thanks @Rmohid)
  • Tab-switching shortcuts — native Ctrl+Tab / Ctrl+PageUp / Ctrl+PageDown on Windows/Linux and Cmd+Shift+[ / Cmd+Shift+] on macOS. (#39 — thanks @rxwen)
  • Middle-click a tab to close it. (#46)

🐛 Fixes

  • No more silent data loss — MDHero now warns before discarding unsaved changes when closing a tab or quitting the app. (#49, #54)
  • Empty markdown files open correctly — an empty .md opens straight into the editor instead of bouncing to the home screen. (#52)
  • Blockquotes no longer get injected " quotation glyphs. (#45)

Install

  • macOS (Apple Silicon): download MDHero_0.2.8_aarch64.dmg
  • Windows: download the .msi installer or .exe (NSIS)
View on GitHub

✨ New

  • Find works everywhereCmd+F now searches, highlights, and cycles matches in edit and raw views, not just the rendered view (#33, thanks @NaluTripician)
  • Viewport width toggle — flip between Comfortable and Wide reading widths from the toolbar or Reading Preferences (#38, #41)
  • Open local links in-app — click a relative link to another .md and it opens in a new tab; non-markdown files hand off to your OS default app (#30)
  • Home tab & brand refresh — MDHero identity in the toolbar and home hero, unified list rows, a uniform card grid for recents / plans / folders, and grouped toolbar controls (#43)

🐛 Fixes

  • Remembers window size & position across launches (#40, reported by @mashakos)
  • macOS Window menu — restores window-tiling and fullscreen keyboard shortcuts (#34)
  • Local images in markdown now render — relative-path images work, including files outside your home folder (#23, #31, thanks @rxwen)
  • Content stays centered when the table-of-contents sidebar is open (#29)
  • Smoother vim j / k scrolling (#25)
  • Accurate scroll position when switching between rendered, raw, and edit modes (#21)

🙌 Thanks

@NaluTripician, @rxwen, @mashakos — and everyone who filed issues this cycle.

Install

  • macOS (Apple Silicon): download MDHero_0.2.7_aarch64.dmg
  • Windows: download MDHero_0.2.7_x64_en-US.msi or MDHero_0.2.7_x64-setup.exe

First launch: on macOS, right-click the app → Open to get past the unsigned-app warning (or run xattr -cr /Applications/MDHero.app). On Windows, SmartScreen → More info → Run anyway.

View on GitHub

🚀 MDHero now updates itself

When a new version is out, click Update now in the update banner — MDHero downloads it, verifies the signature, installs, and relaunches. No more hunting for a download link (macOS + Windows).

This is the last update you'll need to install by hand. From 0.2.6 onward, updates are in-app.

✨ Also in this release

  • In-app About dialog — cross-platform, replaces the native macOS-only one (#18, thanks @pushkarchoudhari)
  • Fix: Settings dialog no longer scrolls the page behind it (#16, thanks @tejasnilangekar111-maker)

Install

  • macOS (Apple Silicon): download MDHero_0.2.6_aarch64.dmg
  • Windows: download MDHero_0.2.6_x64_en-US.msi or MDHero_0.2.6_x64-setup.exe
View on GitHub

What's new in v0.2.5

🤖 Right-click AI Lookup

Select any text in a Markdown article and right-click → send it to ChatGPT, Claude, Perplexity, Google, or Wikipedia with one click. Each provider can hold any number of saved prompt templates ("Explain this clearly:", "Summarize:", whatever you write) — define once, reuse forever. There's also a Custom prompt option for ad-hoc one-off use.

URL-based integration only — no API keys, no MDHero-side telemetry. The selection opens in your default browser; MDHero never sees what you sent or what came back.

  • Provider and prompt management lives in a new "AI Lookup" section of the Settings dialog (gear icon / Cmd+,)
  • Ships with sensible defaults: ChatGPT, Claude, Perplexity, Google Search, Wikipedia
  • Custom prompt works even with nothing selected (just type your prompt)
  • Originally requested by @ixuzhe in Discussion #3
  • Implemented in #13

📖 Save and restore reading progress per file

Long Markdown files now remember where you stopped. Close a file, come back days later, and MDHero smooth-scrolls to your last position. Anchored on Markdown source lines (not raw scroll position), so it survives font size, window width, and content reflow changes between sessions.

  • Silent — no toast, no indicator (the smooth-scroll animation is the feedback)
  • Skips short files that fit in viewport entirely
  • Survives external file edits (saved line falls back to closest available)
  • Originally requested by @ixuzhe in Discussion #6
  • Implemented by @pushkarchoudhari in #10

🙏 Thanks to this release's contributors

Huge thanks to @ixuzhe — both of this release's headline features came directly from his thoughtful feature requests in MDHero's Discussions. And to @pushkarchoudhari for shipping the reading-progress implementation, his second contribution to MDHero.


Downloads

Platform File Size
macOS (Apple Silicon) MDHero_0.2.5_aarch64.dmg 7.5 MB
Windows (installer) MDHero_0.2.5_x64-setup.exe 4.0 MB
Windows (MSI) MDHero_0.2.5_x64_en-US.msi 5.1 MB

Requires macOS 12+ (Apple Silicon) or Windows 10+. Intel Mac and Linux builds are not yet shipped — track progress in the Issues tab.

View on GitHub

What's new in v0.2.4

🍎 Notarized macOS builds — no more Gatekeeper friction

MDHero is now signed with an Apple Developer ID and notarized by Apple. On first launch, macOS shows only the standard "This app was downloaded from the Internet" prompt — no more "cannot be verified" warning, no more xattr -cr workaround, no trip through System Settings → Privacy & Security.

If you've been running an older version, the upgrade just works — drag the new app to Applications and double-click.

🎉 New contributor: @vpndev18

A big thank you to @vpndev18 for their first contribution to MDHero — the cleaner inline code rendering below (#9). Welcome!

Press ESC to close — like every other reader

A new Close on Escape setting (on by default) closes the current tab when you press ESC. If it was the last tab, the app fully quits — so MDHero is now usable as the default .md viewer in file managers: right-click → Open With → MDHero → read → ESC.

The toggle lives in a new Settings dialog (gear icon in the toolbar, or Cmd+,). If you'd rather have your old ESC behavior back, flip it off there.

Cleaner inline code rendering

Inline code spans like Cmd+O or pnpm install no longer render with literal backtick characters around them. This brings MDHero in line with GitHub, GitLab, Bitbucket, and every other Markdown viewer.


Downloads

Platform File Size
macOS (Apple Silicon) MDHero_0.2.4_aarch64.dmg 7.5 MB
Windows (installer) MDHero_0.2.4_x64-setup.exe 3.9 MB
Windows (MSI) MDHero_0.2.4_x64_en-US.msi 5.1 MB

Requires macOS 12+ (Apple Silicon) or Windows 10+. Intel Mac and Linux builds are not yet shipped — track progress in the Issues tab.

View on GitHub

What's new in v0.2.3

🎉 First external contribution

A huge thank you to @pushkarchoudhari for PR #2, the first contribution to MDHero from someone outside the maintainer team. Welcome!

Wider content area for high-DPI displays

The Content Width slider in the reader controls now reaches up to 3840px (full 4K width), up from the previous 1200px cap. Combined with the slider's smoother stepping (80px per stop), MDHero now feels right on ultrawide and 4K monitors.

The default content width (720px) is unchanged. Existing readers won't see any visual difference on upgrade — only users who actively pull the slider past 1200px will notice the new range.

Carried over from v0.2.2

  • Properly sealed macOS code signature (friendlier Gatekeeper dialog on first launch — see v0.2.2 release notes for the install workaround)

Downloads

Platform File Size
macOS (Apple Silicon) MDHero_0.2.3_aarch64.dmg 7.4 MB
Windows (installer) MDHero_0.2.3_x64-setup.exe 4.0 MB
Windows (MSI) MDHero_0.2.3_x64_en-US.msi 5.1 MB

Requires macOS 12+ (Apple Silicon) or Windows 10+. Intel Mac and Linux builds are not yet shipped — track progress in the Issues tab.

macOS install note

On first launch macOS shows "Apple could not verify…" (we're not enrolled in the Apple Developer Program yet). To bypass:

xattr -cr /Applications/MDHero.app

Or: System Settings → Privacy & Security → Open Anyway. One-time only.


Full changelog

  • feat: increase content width slider max to 3840px for 4K displays (#2 by @pushkarchoudhari) — closes #1
  • chore: release v0.2.3 (f6966ba)

Compare v0.2.2…v0.2.3

New Contributors

  • @pushkarchoudhari made their first contribution in #2 🎉
View on GitHub

What's new in v0.2.2

One thing: a macOS install fix. No new features. If you're on Windows, nothing changes for you — feel free to skip the upgrade.

The bug

Every macOS DMG MDHero has shipped (v0.1.0 through v0.2.1) had a subtly malformed ad-hoc code signature: the linker signed the binary, but the bundle's Resources/ and Info.plist were never sealed by codesign. Mac users who downloaded the DMG saw the harshest possible Gatekeeper dialog:

"MDHero" is damaged and can't be opened. You should move it to the Bin.

That dialog is special — it gives only Cancel and Move to Bin, with no workaround. Right-click → Open doesn't work. The xattr trick partially works but is hostile.

The fix

Set bundle.macOS.signingIdentity = "-" in tauri.conf.json so Tauri runs codesign --force --deep after assembling the bundle, properly sealing Resources/ and Info.plist. Verified locally and against the CI-built DMG:

v0.2.1 v0.2.2
Signature flags adhoc, linker-signed adhoc, runtime
Sealed Resources none version=2 rules=13 files=1
codesign --verify --deep fails passes

What you'll see now

Mac users will still get a Gatekeeper dialog on first launch (no Apple Developer ID = no notarization). But the dialog now reads:

"MDHero" Not Opened. Apple could not verify "MDHero" is free of malware...

Crucially, this dialog has a workaround.

How to install on macOS

  1. Download MDHero_0.2.2_aarch64.dmg
  2. Drag MDHero to Applications
  3. Try to open it once — you'll see the Gatekeeper dialog above. Click Done
  4. Open System Settings → Privacy & Security, scroll down, click Open Anyway next to MDHero, enter your password
  5. Done — MDHero opens normally from now on

Faster workaround (Terminal):

xattr -cr /Applications/MDHero.app

Then double-click MDHero — launches with no further prompts.

Both methods are one-time only.

The longer-term plan

A proper Apple Developer ID + notarization (Apple Developer Program, $99/yr) would eliminate the Gatekeeper dialog entirely. That's on the roadmap but not yet justified by Mac install volume. v0.2.2 is the best the free-tier path can do.


Downloads

Platform File Size
macOS (Apple Silicon) MDHero_0.2.2_aarch64.dmg 7.4 MB
Windows (installer) MDHero_0.2.2_x64-setup.exe ~4 MB
Windows (MSI) MDHero_0.2.2_x64_en-US.msi ~5 MB

Requires macOS 12+ (Apple Silicon only) or Windows 10+. Intel Mac support is not yet built — coming in a later release.

Full changelog

Single commit: 2d1c295v0.2.2: fix malformed ad-hoc signature on macOS DMG

View on GitHub

What's new in v0.2.1

A small but meaningful release focused on how MDHero tells you about updates — and giving you ways to find out yourself.

Update notifications

  • Home tab banner — when a new version is out, you'll see an inline banner above your recents/pinned folders. Cleaner than waiting for the floating toast to catch your eye.
  • "Check for Updates…" menu item — under the MDHero menu. Bypasses the 24h throttle, useful when you want to see if there's something new right now.
  • Smarter dismissal — clicking "Later" now hides only that specific version. When the next release ships, you'll see the new banner again. No more "Later" forever.

Update infrastructure

  • MDHero now checks mdhero.app/api/version (with api.github.com as a fallback). This lets us see aggregate update-check counts for sizing the project without storing any user data.
  • The request sends only your current version and OS family (darwin/win32/linux). No device IDs, no IPs in storage, no telemetry. SECURITY.md has the full disclosure.

Carried over from v0.2.0

The lightweight in-app editor (Cmd+E to edit, Cmd+S to save) and source-line scroll sync.


Downloads

Platform File
macOS (Apple Silicon) MDHero_0.2.1_aarch64.dmg
Windows (installer) MDHero_0.2.1_x64-setup.exe
Windows (MSI) MDHero_0.2.1_x64_en-US.msi

Requires macOS 12+ or Windows 10+.

Existing v0.2.0 users: the update banner will appear automatically the next time the app checks (within 24h of opening). Or trigger it now via MDHero → Check for Updates… once you upgrade.