ZenNotes v2.13.2
ZenNotes 2.13.2: Callout type picker, completed-task styling, temporary folder sessions, a sticky editor view mode, PDF page and search links, live math in the editor, plus Vim, Excalidraw, and split-view fixes
A small release: six features (a callout insert menu, completed-task styling, temporary folder sessions, a sticky editor view mode, deep links into PDFs, and live math rendering in the editor) and sixteen fixes. Installers for macOS, Windows, and Linux (x64 + arm64) are attached below.
✨ Improvements
-
Obsidian-style callout admonitions, with an insert menu. Turn a blockquote into a colored callout by starting its first line with
> [!type](optionally with a title:> [!warning] Heads up). Type[!inside a blockquote to open a type picker with an icon and description for each type — filter by name (aliases match too, sowarnfinds Warning andtldrfinds Abstract), move with the arrow keys or the Vim/Emacs completion chords (Ctrl+J/Ctrl+K,Ctrl+N/Ctrl+P), and accept with Enter, Tab,Ctrl+Y, or a mouse click. Callouts now render in six color groups: note / info / abstract (blue), tip / success (green), the new question / example (purple), warning (yellow), danger / bug / failure (red), and quote (gray); types are case-insensitive and an unrecognized one still renders as a neutral note, so callouts pasted from Obsidian keep working. The picker leads with the most common types, and Enter now accepts an open completion even inside a blockquote or list (previously the "continue the quote" key won). The/slash menu's Callout entry still works too. (requested by Philipp) -
Open a folder temporarily, without making it a vault. Drag a folder of markdown onto the ZenNotes window (or, once installed, the dock icon) to read and edit it in place as a temporary session. Its notes show recursively, edits save straight to the files, but ZenNotes writes nothing else into the folder (no
inbox/, no.zennotes/, noWelcome.md), never remembers it as a vault, and returns to your normal vault as soon as you close the window. Handy for skimming a docs or specs directory without committing to it. (Move to Trash and comments are disabled in a temporary session since both would write into the folder; on macOS the dock-icon drop needs a fresh install so Launch Services registers the folder type, while dropping on the window works right away.) -
Style completed tasks. By default, checking a task (
- [x]) just fills its checkbox. A new Settings → Editor → Completed task style can also strike the text through, gray it out, or both, so finished items visually recede in the editor and the reading view while the checkbox stays checked. There are matching command-palette entries (Completed Tasks: Strikethrough / Gray / Strikethrough + Gray / No Style). Nested sub-tasks keep their own state — a completed parent never strikes an unchecked child — and formatting like bold or[[wikilinks]]inside a done task is styled along with the rest. Defaults to off, so existing notes look unchanged until you opt in; the choice travels with your other portable prefs inconfig.toml. (requested by Philipp) -
Keep the editor view mode when switching notes. Normally each note remembers whether you last had it in Edit, Split, or Preview and reopens that way, so clicking from a note you were reading in Preview into another one drops you back into Edit. A new Settings → Editor → Writing → Keep view mode when switching notes makes the current mode stick instead: switch to Preview once and every note you open stays in Preview (likewise for Split or Edit) until you change it. Off by default, so the per-note behavior is unchanged unless you opt in; the mode is tracked per pane, and the toggle travels with your other portable prefs in
config.toml. Handy if you mostly read rather than edit. -
Link straight to a page or search term inside a PDF. PDF links and embeds can now carry a URL fragment that passes through to the built-in PDF viewer, so
[Spec](spec.pdf#page=12)opens the PDF at page 12 and[Install](guide.pdf#search=installation)opens it with "installation" highlighted. Combine them (guide.pdf#page=5&search=term) or set#zoom=. It works everywhere a PDF appears: inline embeds, the standalone PDF card's inline and pinned reference views, and Cmd/Ctrl+click in the editor. Point a note at the exact page of a spec instead of copying the context into the note. (closes #295, requested by @Lejhin) -
Math renders live in the editor, not just the reading view. Inline
$…$and block$$…$$LaTeX now render as formatted KaTeX directly in the Edit and Split views, matching what the Preview already showed. Put the cursor on a formula and it reveals the raw source so you can edit it, then re-renders once you move away. Everyday dollar signs are left alone in both the editor and the reading view: currency like$5 and got $10and math inside inline code stay literal (the reading view used to render that as a formula), so only real formulas render. (reported by Julie on Discord)
🐛 Fixes
-
Dropped files now land in
assets/instead of the vault root. Dragging a file into a note copied it to the vault root, while pasting an image put it in the unifiedassets/folder — so in Vault Root mode a dropped image was dumped right next to your notes, inconsistent with paste. Drag-drop now usesassets/too, matching paste in both Inbox and Vault Root mode. Existing links are untouched. (#377, reported by @Orcolom) -
Drag images, PDFs, and other attachments between folders in the sidebar. Notes, folders, and drawings could be dragged to a different folder, but assets were silently ignored on drop — you could only move them via the row's "Move…" menu. Dropping an asset on a folder now moves the file into it, so attachments drag just like notes (context menu still works too). (#378, reported by @Orcolom)
-
Remote/web vaults: recoloring folders and moving or renaming attachments now work. On a server-backed vault, three things the desktop app supports were quietly missing: recoloring a folder didn't stick, and images couldn't be moved or renamed. Folder colors now persist (the server was dropping them on every save, including through folder rename, delete, and duplicate), and new server endpoints let the web app move assets between folders and rename them, matching desktop. Duplicating, deleting, and pasting clipboard images for assets remain desktop-only for now. (#379, reported by @Orcolom)
-
Table editor: the add-row / add-column buttons no longer sit on top of the table. In the live-preview table widget, the hover + rails for adding a row or column were pinned to the grid's exact edge, so each one overlapped the last row and column. They now sit just outside the table in the surrounding margin, so nothing is obscured (add-row / add-column still work, and a stray vertical scrollbar the reposition briefly introduced is gone too). (#382, reported by @cyperion)
-
Moving a note to Trash no longer risks closing all your open tabs. A background note-list refresh pruned any open tab whose note wasn't in the freshly-listed notes, so if that list ever came back incomplete for a moment (seen when trashing a note on Linux) every tab could close and drop you on the home screen. The refresh now refuses to close every open note tab at once; genuine deletions still close their own tab. (#384, reported by @simotare)
-
Vim: pane navigation now works from the Calendar panel. With focus in the Calendar panel, the Vim pane-focus shortcuts (
Ctrl+W h/j/k/l) did nothing, so you had to use the mouse to move to another pane — the panel's ownh/j/k/lday navigation was swallowing the keys. The panel now hands the pane prefix (and its follow-up direction) off to pane navigation, exactly like the other keyboard-driven surfaces, while bareh/j/k/lstill move between days. (#374, reported by @uNyanda) -
Vim:
Ctrl+Iin normal mode now moves forward in the note-history jumplist again, instead of inserting**. On Linux and Windows the editor's italic shortcut (Mod+I, whereModisCtrl) collided with theCtrl+Ijumplist binding, and the formatting handler was winning, soCtrl+Ityped the italic markers rather than navigating. The jumplist (Ctrl+Oback /Ctrl+Iforward) now takes priority in normal and visual mode, while insert mode still toggles italic. macOS was never affected, since thereCtrl+IandCmd+Iare distinct. (#373) -
Excalidraw: changing a text element's font now works in the web version. In the self-hosted web build, picking a hand-drawn font (Excalifont, Comic Shanns, and so on) had no visible effect. Excalidraw pulls those fonts from the esm.sh CDN by default, which the server's content-security policy (
font-src 'self') blocks, so the woff2 files never loaded and the selection did nothing. The fonts are now bundled and served from a same-origin/excalidraw-assets/path that the existing policy already allows, and the server sends the correct web-font MIME types. This is the web counterpart of the desktop #324 fix (desktop already self-hosts the fonts). (#324) -
Kanban columns: renaming is clearer, and you can reorder columns. On a field board (Custom status or any
@key), renaming a column only ever changed its display label, with nothing to show the label wasn't the stored value, so moving a card into a renamed column looked like it should change the value but didn't. A renamed column now shows its underlying@field:valuebeneath the name, so the label can't be mistaken for the value. You can also reorder the columns themselves now, by dragging a column header or pressing</>with a column focused (saved per board; the "No value" bucket stays last), instead of renaming columns to fake an order. And renaming that "No value" bucket finally sticks across a restart. (#389, reported by @uNyanda) -
Vim: the block cursor no longer looks broken while waiting for input. In a pending Vim state (an
f/tcharacter search, an operator likedwaiting for a motion, or the:command line) the cursor shrinks to a half-height block as a "waiting" indicator. A leftover in our block-cursor styling was forcing the character's glyph back on top of that half-height box, squished, with the real character peeking above it. The glyph is now hidden as the editor intends, so the pending cursor is a clean half-block. The half-height indicator and every Vim motion are unchanged. (#390, reported by @cyperion) -
Database: deleting a row no longer leaves a stale page entry behind. A database row can have a linked "page" note; its row-to-note mapping lives in the
.base/schema.jsonsidecar. Deleting the row only rewrote the CSV, so the mapping (and the orphaned note) lingered, and creating a new row with the same name left two entries pointing at the same file. Deleting a row now purges its mapping from the sidecar, and when the row has a linked note it asks whether to move that note to Trash too or keep it as a standalone note (the mapping is cleaned up either way). (#391, reported by @naingyeminn) -
Reading view:
[[wikilinks]]read as links, not code chips. In the rendered view, wikilinks were drawn as a filled, padded, rounded box that looked like an inline-code chip or a quote rather than a link. They now render as an underlined accent-colored link, matching the editor, and an unresolved link uses a dashed underline instead of a dashed box. (reported by Julie on Discord) -
Split view: code blocks share one syntax theme across the editor and the reading view. The reading view highlighted fenced code with a fixed light theme, so in Split the same block looked different on each side and clashed with dark themes. It now uses the editor's own theme-adaptive palette, so a block's keywords, strings, comments, and the rest are identical in both panes on every theme. (reported by Julie on Discord)
-
Split view: the editor and reading pane scroll in sync. The two panes were aligned by a rough scroll-percentage match that drifted on notes with tall blocks (a big code block or a display formula), sometimes leaving the bottom of the preview blank while you typed near the end. Scrolling is now line-based: the preview follows the editor's top line, so the same content stays side by side from top to bottom. (reported by Julie on Discord)
-
Switching to and from Excalidraw drawings keeps its place, and Vim tab keys work from a drawing. Returning to a drawing now restores its pan and zoom instead of resetting the view, and a note's scroll position is snapshotted before you switch away so it comes back where you left it. In Vim mode,
gt/gTnow cycle tabs even while a drawing is focused (the canvas used to swallow the keys), and after jumping to a note the editor takes focus so you can type right away. (#392, thanks @junereycasuga) -
Vim:
Ctrl+D/Ctrl+Uhalf-page scroll works in the editor on Linux again. In Vim mode the editor's search and history keymaps were consumingCtrl+DandCtrl+U(which Linux delivers as theModchord) before CodeMirror-Vim saw them, so half-page scrolling worked in the reading view but not in Edit or Split. The half-page bindings now take precedence and dispatch through Vim; insert, visual, and non-Vim editing are unchanged. (#395, addresses theCtrl+D/Ctrl+Upart of #272, thanks @scottames)
Keyboard-first and local-first, as always.