What's new in 2.9.0
A release about windows and tabs: Markpad now remembers every window, keeps what you have not saved, and can show your tabs and a folder down the side.
Changed
- Quitting no longer asks about unsaved changes. Unsaved tabs are kept and come back the next time Markpad opens, text and all. The same copy saves your text after a crash. Closing a single tab, or one of several windows, still asks. To get the old question back, turn off Settings → Files → Restore unsaved changes on launch.
- Auto-Reload starts on. When another program changes a file you have open and have not edited, Markpad shows the new text. A tab with unsaved edits is never reloaded; it shows a bar asking what to do. Turn it off per window with the Auto-Reload button in the title bar or, on macOS, View → Auto-Reload.
- PDF export margins are 1 cm, down from 0.75 in.
New
- Every window comes back. Quit with three windows open and all three reopen, each with its own tabs, position and size. This also works after a crash. Turn it off in Settings → Files → Restore windows on launch.
- New empty window: ⇧⌘N (Ctrl+Shift+N on Windows and Linux).
- Full macOS menu bar. File, Edit (with Format), View and Window, in the app's language. View toggles show a checkmark when they are on.
- Tabs down the side. Settings → Appearance → Tab Position: Top, Left Column or Right Column. A column shows each file's full name and can be resized by dragging its edge.
- Open a folder in a sidebar. ≡ → Open Folder… shows the folder as a tree. With tabs in a column, the two stack, with a divider between them.
- Newlines as spaces, if you want. Turn off Settings → Preview → Every Newline Breaks the Line and a newline inside a paragraph shows as a space, as on GitHub. Hard-wrapped files then read as normal paragraphs. On by default, which is how Markpad always worked.
- Resize table columns. In the preview, drag a border between two columns. Double-click a border to go back to automatic widths.
- Choose which window opens a file. Settings → Files → Open external files in: Last window (as before) or Ask me, which lists the open windows when you open a file from Finder or Explorer.
- Undo, Redo and Select All in the editor's right-click menu.
- PDF export shows progress. On Windows it then offers to open the file, as HTML export does.
- Windows: Markdown files get their own icon in Explorer.
.mdownand.mkdfiles now list Markpad under Open With.- Every language is complete. About 3,000 texts that showed in English in other languages are now translated.
Faster
- Large files no longer freeze while you type. In split view the preview only redraws the part you changed. On a 5 MB file it used to stall for over two seconds after each word.
- Starting with many tabs is quick. Only the tab on screen is loaded at startup. The others load when you click them.
Fixed
- When a file changes on disk while you have unsaved edits, the bar now appears right away, not only when you save. It no longer covers the editor toolbar.
- Opening a file that is already open in another window switches to that window, instead of opening it twice.
- The same file no longer opens in two tabs when it arrives under two spellings (
readme.mdandReadme.md, a symlink, orC:\andC:/paths). The two tabs used to overwrite each other. - Several cases where text could land in the wrong tab or be lost: switching tabs while a file was reloading, typing while a tab moved to another window, renaming a tab while it was saving, and the "file changed on disk" bar acting on the wrong tab.
- Cmd/Ctrl+S on a file with no changes no longer rewrites it. This stops sync apps from uploading a file nothing changed in.
- Find in the preview matches text across formatting, such as a phrase that is half bold.
- Images in folders whose name starts with a dot (
.res/pic.png) now show on macOS and Linux. - A new, unsaved document now shows its outline.
- Heading links and wikilinks agree on a heading's id everywhere: preview, outline, completion and Copy Reference.
- Scrollbars are wider and easier to grab.
- Printing an exported HTML file gave a blank page. It now prints, with the same 1 cm margins as the PDF export.
- Turning Sticky Headings on or off now applies to the open editor, not only the next one.
- The edit and preview buttons in the title bar now sit on the same side as their panes.
- Windows: selecting several files in Explorer and opening them at once no longer drops some of them.
- Linux (Snap): opening several files puts them in one window as tabs, instead of one window each.
- Some settings texts said something different from what the control does. They now match. The reset buttons in Editor and Preview settings are now called Reset fonts and width, which is what they do.
Download
| System | Chip | Download | |
|---|---|---|---|
| Windows | Intel / AMD | Markpad_2.9.0_x64-setup.exe
| installer |
| Intel / AMD | Markpad_2.9.0_x64.exe
| portable | |
| ARM64 | Markpad_2.9.0_arm64-setup.exe
| installer | |
| ARM64 | Markpad_2.9.0_arm64.exe
| portable | |
| macOS | Intel and Apple Silicon | Markpad_2.9.0_universal.dmg
| one file for both |
| Linux | x86-64 | Markpad_2.9.0_amd64.AppImage
| portable |
| x86-64 | Markpad_2.9.0_amd64.deb
| Debian, Ubuntu | |
| x86-64 | Markpad-2.9.0-1.x86_64.rpm
| Fedora, RHEL, openSUSE |
Note
Windows SmartScreen Notice: Windows executables are not signed with an Authenticode certificate, so SmartScreen shows them as an unrecognized app. Click "More info" → "Run anyway". The antivirus heuristic that used to flag the portable .exe no longer does.
The two Windows files differ only in that one installs and one does not.
Package managers: choco install markpad-app (Windows), brew install --cask markpad (macOS), sudo snap install markpad (Linux).
What Markpad renders
Every syntax Markpad renders is in one document — download markdown-syntax.md (简体中文) and open it in Markpad: the preview shows each feature working, the editor beside it shows how each one is written. Give the same file to an AI and it knows exactly what Markpad can render: ask it to reformat a document you already have, or to write a new one that uses the whole range — callouts, tables, footnotes, maths, diagrams — and open the result here. Read it on GitHub.
What's Changed
- fix(toc): show the outline for an untitled document by @PathGao in #965
- docs(readme): drop the memory figure from the Chinese README too by @PathGao in #972
- feat(windows): give Markdown files their own icon (#975) by @PathGao in #977
- feat(export): show PDF export progress and offer to open the file (#968) by @PathGao in #971
- fix(ui): make scrollbars easier to see and grab by @PathGao in #978
- feat(preview): setting to render a newline in a paragraph as a space (#967) by @PathGao in #970
- test: make the suites run on Windows by @PathGao in #983
- fix(preview): load images from hidden folders on Linux and macOS by @PathGao in #985
- fix(find): match the preview's text as drawn, across inline elements (#982) by @PathGao in #984
- fix(conflict): report an outside edit without Live Mode, below the editor toolbar by @PathGao in #986
- feat(watch): reload a clean tab from disk by default by @PathGao in #987
- feat(tabs): Tab Position setting with left, right and bottom docks by @ryanhoggpm in #963
- feat(folder): open a folder in a sidebar that stacks with the tab column by @ryanhoggpm in #964
- fix(ui): widen scrollbar thumbs, drop the line beside the editor's by @PathGao in #989
- test(find): pin where a mark lands when whitespace collapses by @PathGao in #988
- feat(editor): keep unsaved changes when quitting by @pablousx in #962
- feat(windows): reopen every window of the last session by @PathGao in #990
- feat(windows): open a new empty window with Cmd+Shift+N by @PathGao in #991
- feat(macos): full native menu bar by @PathGao in #993
- feat(windows): record every window's session as it changes; treat windows the same by @PathGao in #994
- feat(macos): show View toggles as checkmarks named after their state by @PathGao in #995
- chore: bring comments in line with today's window work; drop two dead bits by @PathGao in #996
- feat: add Undo and Redo to the editor's right-click menu by @PathGao in #998
- feat: add Select All to the editor's right-click menu by @PathGao in #999
- chore(deps): bump vite and vitest for npm audit by @PathGao in #1000
- fix: retain Windows multi-file opens during startup by @AlonResearch in #1001
- chore(deps): bump dompurify to 3.4.17 for audit by @PathGao in #1002
- fix(snap): declare the single-instance D-Bus name by @PathGao in #1003
- perf(recovery): build the unsaved snapshot when it is written, not per keystroke by @PathGao in #1004
- fix(conflict): bind the external-change conflict to its tab and file by @PathGao in #1005
- fix: editor chords share the app's command path; removing a recent file keeps its tab by @PathGao in #1006
- fix(tabs): claim a file by identity on every route that opens it by @PathGao in #1007
- fix: make UI text match what the controls do by @PathGao in #1008
- fix(session): only land a disk read in the tab it was taken for by @PathGao in #1009
- fix(ui): drop async results that a newer action has replaced by @PathGao in #1010
- fix: agree on what a document is across drop, editor, save and export by @PathGao in #1011
- fix(transfer): keep edits made while a tab moves and reclaim dead claims by @PathGao in #1012
- fix: let the newest request win in file watch, Save As and folder reads by @PathGao in #1013
- fix: route tab rename through the write queue and keep pinned groups apart by @PathGao in #1014
- fix(markdown): answer heading ids and wikilinks with one rule each by @PathGao in #1015
- chore(comments): bring comments in line with the #1004-#1013 fixes by @PathGao in #1016
- perf(preview): drop the second whole-article enrichment after a large file's full load by @PathGao in #1017
- fix(links): keep the source tab's in-page history when a link opens in a new tab by @PathGao in #1018
- chore: drop tabManager.renameTab; bring comments in line with #1014 and #1015 by @PathGao in #1020
- test: drop the renderRichContent option #1017 removed from two newer specs by @PathGao in #1021
- feat(bundle): associate .mdown and .mkd with Markpad by @PathGao in #1019
- perf(restore): read only the active tab at startup, the rest on first activation by @PathGao in #1022
- perf(preview): let render_markdown split its output into top-level blocks by @PathGao in #1023
- perf(preview): process and sanitize only the blocks that changed by @PathGao in #1024
- perf(preview): batch a first render and regroup only the sections an edit touched by @PathGao in #1025
- fix(bundle): list Markpad in Finder's Open With for .mdown and .mkd by @PathGao in #1027
- chore(deps): migrate to SvelteKit 3 and bump undici for audit by @PathGao in #1028
- test: group test files by feature by @PathGao in #1030
- fix(editor): re-apply Sticky Headings to an open editor by @PathGao in #1031
- test: run the code instead of reading it by @PathGao in #1032
- fix(export): print an exported HTML file, with 1cm margins by @PathGao in #1033
- fix(export): give an exported file the page margin on screen too by @PathGao in #1034
- test: replace the text checks with bindings, lint and parsed config by @PathGao in #1035
- fix(windows): switch to the window that already has a file instead of opening it twice by @HellfireXD in #1038
- feat(preview): drag a column border to resize table columns by @PathGao in #1039
- feat(windows): add an "Ask me" option for which window a file opened from outside goes to by @HellfireXD in #1040
- i18n: translate every key the other locales were missing by @PathGao in #1042
- fix(titlebar): order the view switcher by the split editor side by @PathGao in #1043
- ci: fail npm audit only on moderate or worse by @PathGao in #1044
- chore: bump version to 2.9.0 by @PathGao in #1045
New Contributors
- @ryanhoggpm made their first contribution in #963
- @pablousx made their first contribution in #962
- @AlonResearch made their first contribution in #1001
- @HellfireXD made their first contribution in #1038
Full Changelog: v2.8.4...v2.9.0