ZenNotes 2.10.0 — Transclusion, Markdown-link backlinks, and reorderable database columns
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.
✨ Improvements
- Transclusion — embed notes with
![[Note]]: prefix a wikilink with!to inline the target note's rendered content in the reading view and PDF export, recursively and with cycle protection. A "master note" can pull in sub‑notes and export to PDF as a single document — frontmatter is stripped, code‑fenced embeds stay literal, and image/asset embeds work as before. (Requested on YouTube by @Hisky.) - Backlinks for Markdown links: the connections panel now counts standard Markdown links
[text](Note.md)— incoming and outgoing — not just[[wikilinks]], so notes stay connected even if you never use wikilinks. (Next: the MCPbacklinkstool + rename‑rewriting follow.) (Requested on YouTube by @70dark.) - Excalidraw + the Space leader key play nice: inside an Excalidraw tab, tap Space for ZenNotes' leader menu and hold Space to pan the canvas with Excalidraw's Hand tool. The leader no longer swallows Space, so panning big boards works again — a quick tap still opens the leader. (#309, thanks @junereycasuga)
- Quick Note editor matches the main editor: in the Quick Note window,
j/know move by visual line through soft‑wrapped text (the #290 behavior), and the inline‑format shortcuts work —⌘B/⌘I/⌘E(bold/italic/code),⇧⌘S/⇧⌘H/⇧⌘M(strike/highlight/math),⌘K(link) — so⌘Iitalicizes the selection instead of selecting the line. (#312, thanks @nianiam) - Reorder database columns: in a CSV/database table you can now reorder fields — drag a column header, press
H/Lon the focused column (vim‑style; the cursor follows), or use Move left / Move right in the column's field menu. Previously a new field could only be appended to the end. (#317, thanks @bahaospanov) - CLI renamed
zen→zn: the opt‑in command‑line tool now installs asznso it stops colliding with Zen Browser'szenon your PATH (Linux, and macOS via Homebrew). Installing migrates an old ZenNoteszenfor you — and it never removes azenthat isn't ours — while the Raycast extension andzn mcpfollow along. Update any scripts or aliases fromzen …tozn …. (#126)
🐛 Fixes
- Calendar counts
@waitingtasks consistently: a task with a due date and@waitingnow appears in the sidebar calendar too, not just the Tasks calendar — so the two views' per‑day counts match again. (#311, thanks @npodoscope) - Relative‑number jumps respect wrapped lines: with relative line numbers on, a counted
{count}j/{count}k(e.g.3j) now jumps to the logical line the gutter shows — counting logical lines, not wrapped display rows — while a barej/kstill steps one visual row. (#314, thanks @npodoscope) - Sidebar keyboard nav works in Daily/Weekly Notes:
h/land←/→now expand/collapse the Daily Notes and Weekly Notes date groups (and their year/month subgroups) like any other folder, instead of doing nothing or snapping the selection back to the parent. (#301, thanks @uNyanda)
🔒 Security & maintenance
- Docker image — updated Go runtime: the self-hosted server image now builds on Go 1.26.4 (was 1.22.12), clearing a critical plus 40+ high/medium stdlib CVEs that image scanners flagged, and bumps the
go-chi/chirouter to v5.2.5 (from v5.2.0). No behavior change — just a patched runtime. (#303, thanks @wedgen) - Docker — clearer
ZENNOTES_AUTH_TOKEN_FILEfailures: when the auth‑token file is set but missing, unreadable, or empty (wrong path, unmounted secret, permissions), the server now logs a precise reason —ZENNOTES_AUTH_TOKEN_FILE "…" could not be read: …— instead of the misleading "ZENNOTES_AUTH_TOKENmissing", and the startup message lists the_FILEoption. The self‑hosting docs gained a Docker‑secrets example and the common gotchas. (#304, thanks @wedgen) - Linux arm64 packages are back: the release build again produces the arm64
.deb/.pacman/.AppImage/.tar.gz— v2.9.0 shipped without them because electron‑builder's bundledfpmis x86‑only and errored on the native aarch64 runner (the AppImage/tar.gz built, then thedebstep killed the run). The arm64 release leg now installs a nativefpmand points electron‑builder at it, scoped so x64 keeps the bundled binary. (#307 / #308, thanks @robwilkerson) - Persist self‑hosted sessions across restarts (opt‑in): browser logins were kept in memory, so restarting the Docker container made you re‑enter the auth token every time. Set
ZENNOTES_PERSIST_SESSIONS=1to save sessions tosessions.jsonon the/datavolume (mode0600) and reload them on startup, so you stay logged in. Off by default since it writes session tokens to disk. (Asked on Discord by Dave.)
Keyboard‑first and local‑first, as always.