Skip to content

ZenNotes v2.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Jun 17:21
· 34 commits to main since this release

ZenNotes 2.5.0 brings real Markdown highlighting — ==text== now renders as a highlight in preview, PDF, and live-preview edit mode, with a right-click multi-color menu — and makes system-wide quick capture work on Wayland with a new zennotes://quick-capture deep link.

Installers for macOS, Windows, and Linux are attached below once the build finishes. On macOS, brew install --cask zennotes/tap/zennotes; on Arch, yay -S zennotes-bin.

✨ Highlights

Markdown highlights, in every color (#218)

==highlight== was insert-only — the toolbar and Shift+Mod+H wrote the syntax, but nothing ever rendered it, so it showed as literal ==text== in preview and PDF. Now it's a first-class highlight:

  • Renders everywhere. ==text== becomes a highlight in Preview, PDF export, and live-preview Edit mode — where the == markers hide as you write and reappear only when your cursor is inside, exactly like **bold** collapses.
  • Multiple colors. Select text → right-click → Highlight to pick from an 8-color palette — yellow, orange, red, pink, purple, blue, green, gray — or Remove highlight. Shift+Mod+H and the selection toolbar still apply the default.
  • Plain, portable Markdown. The default stays Obsidian-style ==text==; colors are stored as <mark class="hl-green">…</mark>, which still renders in Obsidian, GitHub, and other Markdown viewers. Works on desktop and web. (Reported by a user.)

System-wide quick capture on Wayland (#217)

Wayland deliberately doesn't let apps grab global hotkeys directly the way X11 and macOS do — so Electron's globalShortcut.register() could report success while the callback never fired (reproduced on Hyprland/Omarchy, and seen on Ubuntu Wayland). Quick capture now has a compositor-friendly fallback:

  • New zennotes://quick-capture deep link. Anything that can open a URL can now toggle the floating quick-capture window. Bind it in your compositor and let the layer that is allowed to grab keys do the grabbing. Hyprland example:

    bindd = CTRL SHIFT, F, ZenNotes quick capture, exec, xdg-open zennotes://quick-capture

    (Sway, niri, and others work the same way with xdg-open zennotes://quick-capture.)

  • Works from a cold start. Firing the link when ZenNotes isn't running launches it, loads your vault, and shows quick capture — without also popping an unrelated main window.

  • Portal path enabled for the built-in hotkey. Chromium's GlobalShortcutsPortal feature is now on for Linux, routing global shortcuts through xdg-desktop-portal, so the in-app hotkey works directly on Wayland setups where the portal supports it.

  • Clearer diagnostics. Registration now verifies the OS actually took the shortcut, and logs when it registers and fires.

The existing global-shortcut path is unchanged — macOS, Windows, and X11 keep working exactly as before.

Manual note ordering (#224)

You can now arrange notes by hand. Pick Manual (drag to reorder) from the sidebar sort menu, then drag a note up or down within its folder — a drop line shows where it'll land, and the order sticks across restarts. Notes you haven't moved keep their file order, so nothing jumps around, and cross-folder drags still move a note into the target folder as before. (The custom order is currently remembered per device; a portable in-vault file is a planned follow-up.) (Reported by a user — the previous docs described this before it existed.)

New theme: Kanagawa

A full Kanagawa family (from rebelot/kanagawa.nvim, inspired by Hokusai's Great Wave) joins the theme picker, with all three official variants — Wave (the warm default dark), Dragon (a darker, cooler dark), and Lotus (the light one). Pick it under Settings → Appearance → Theme; Auto mode resolves to Wave or Lotus and carries your variant across system light/dark flips.

🐛 Fixes

  • Tag filtering narrows again (#221) — selecting multiple tags matched notes carrying any of them (union), contradicting the "narrowing" wording. Multiple tags now combine with AND by default — a note must carry all the selected tags — so adding one narrows the results. A Match: All / Any toggle appears once two or more tags are selected (vim: m), so the union is still one click away. (Reported by a user.)
  • The vault-root notice can be dismissed (#216) — the "Notes at your vault root aren't shown" banner (added in 2.4.0) couldn't be dismissed, so vaults that intentionally keep material at the root — e.g. AI tooling like Claude Code under the vault — showed a permanent warning for a non-problem. It now has a Dismiss button (and ✕), remembered per vault, so it stays quiet where Inbox mode is right while still appearing where root content is genuinely a surprise. (Reported by a user.)
  • Rename the Tasks view (#225)Settings → System Folders now has a Tasks label field alongside the folder labels, so you can call it todos, goals, or anything you like. The new name shows in the sidebar, the tab, the title bar, and the command palette (still searchable as "tasks"). The System Folders input boxes were also evened up so they all line up. (Reported by a user.)
  • The Debian package installs across split filesystems (#223) — the .deb shipped its icons as hard links between /opt/ZenNotes/resources and /usr/share/icons, so dpkg failed with "Invalid cross-device link" on machines where /opt and /usr live on different filesystems. The duplicated icons are now packaged as independent files, so the .deb installs regardless of mount layout. (Reported by a user.)
  • Clearer Docker permission errors (#227) — the self-hosted server runs as a non-root user, so a bind-mounted vault owned by a different host user failed with a cryptic "mkdir /workspace/inbox: permission denied". The server now detects this and prints what to do — run the container as your user (--user "$(id -u):$(id -g)") or chown the folder — and the self-host docs (and website quickstart) now show the --user flag up front. (Reported by a user.)
  • Name a new note before writing it (#214) — creating a note is meant to focus the note-name field first (with "Untitled" selected) so you can name the file, then press Enter to drop into the body. The name field was being focused and then instantly losing focus to the body heading, so notes created from the sidebar or command palette landed straight in the body and stayed "Untitled". New notes now reliably keep focus on the name field — type a name, press Enter, and the cursor jumps into the body. (Reported by a user.)
  • Line numbers stay next to the text (#228) — with centered content and line numbers on, a wide editor pinned the number gutter to the far-left edge while the text stayed centered, leaving a large gap between them (most visible full-screen on Windows). The gutter now rides along with the centered text column by default, and a new Settings → Editor → Line number position option lets you choose Next to text or Editor edge if you prefer the numbers pinned far-left. (Reported by a user.)

Thanks to everyone filing issues — closes #214, #216, #217, #218, #221, #223, #224, #225, #227, #228. Wayland quick capture is community PR #219 by Konrad Krasowski (@Krasy8).