Skip to content

ZenNotes v2.17.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 16:45

ZenNotes 2.17.0

Installers for macOS, Windows, and Linux (x64 + arm64) are attached below.

✨ Features

  • Non-image attachments are denoted with a chip. Embedding a non-previewable file with image syntax — ![](diagram.tldraw) or the Obsidian ![[diagram.tldraw]] — used to render as a broken/empty image: nothing at all in the reading preview and a completely blank line in the editor, so there was no sign an attachment was even there. Those now render as a compact attachment chip (a paperclip, the filename, and an open arrow), identical in the editor's live preview and the reading pane. Clicking it opens the file in your system's default app (a .tldraw in its editor, a .zip in the archiver), after a quick confirm. Images keep their inline previews, and PDF / audio / video embeds keep their rich in-app players — only genuinely non-previewable files (.tldraw, .zip, and other unknown types) become chips. (#463, reported by @rrpolanco)

  • Faster keyboard folder-picking. The "pick a folder" dialog behind Move Note, New Note, and New Note from Template now preselects the first matching folder as you type, so you can type part of a folder name and press Enter to go straight there — no arrow key first. It also navigates with Ctrl+J / Ctrl+K (and Ctrl+N / Ctrl+P, and the arrows), reusing the same navigation the command palette uses. You can still type a brand-new folder path and create it: ArrowUp / Ctrl+K from the top reselects your typed text. (#467, requested by @uNyanda)

  • zn open opens a folder, not just files. The CLI's zn open accepted only markdown files. Point it at a folderzn open ~/code/project/docs, zn open ~/notes — and it opens a focused, non-persisted session scoped to that folder: a window that shows only that folder's notes, without registering a vault. It's the quick way to read a repo's docs/ folder or zoom into one folder of a big vault (say plans/) without the noise of everything else. Files still open as notes as before. (#466, requested by @radiorambo)

  • Sort the Assets view, and jump to what uses each asset. Every column in the Assets view is now sortable — click Name, Used, Type, Size, or Modified to sort by it, click again to reverse (a ▲/▼ shows the active column). Sorting by Used groups the unused assets together (handy for a cleanup pass) or surfaces the most-referenced ones. And the "used in N" cell is now clickable: it opens the note that references the asset, or shows a short list to pick from when several notes use it. (#460, requested by @rrpolanco)

🐛 Fixes

  • Images resolve correctly in notes kept in subfolders (pasted images and imported Obsidian vaults). An image link whose path is written relative to the vault root — a pasted ![[assets/image.png]], or an Obsidian-style Markdown embed like ![](ProjectA/attachments/imageA1.png) — was being looked up relative to the note's own folder first. So from a note in a subfolder (a daily note under Daily Notes/, or ProjectA/fileA1.md in an imported vault) the path never matched, and it fell back to a fuzzy filename search that gave up — rendering nothing — as soon as two files anywhere in the vault shared a name. That name collision is the common case in a multi-project Obsidian vault with per-folder attachments/ directories, so imported vaults could show broken images throughout. Vault-root-relative paths now resolve from the vault root (matching how wikilinks and Obsidian both behave), so these images render from a note in any subfolder — no leading-slash workaround needed — and it repairs links that were already broken, not just new pastes. A genuine note-relative link (a sibling file) still resolves the same as before. (#459 and #462, both reported by @rrpolanco)

  • Backspace clears an empty formatting snippet in one press. Using a formatting shortcut with nothing selected inserts an empty pair with the cursor between the markers — Ctrl+B gives **|**, Ctrl+E gives `|`, and so on. Pressing Backspace right away used to delete a single marker character, leaving broken Markdown like *|**. Backspace now removes the whole snippet in one press, for every formatting shortcut (bold, italic, strikethrough, highlight, inline code, math). It only triggers when the pair is genuinely empty — a snippet with text in it (**text|**) still backspaces normally — and it stays out of the way of Backspace-as-motion in Vim normal mode. (#468, reported by @uNyanda)


Keyboard-first and local-first, as always.