Skip to content

ZenNotes 2.16.0

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Jul 19:09

ZenNotes 2.16.0

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

✨ Features

  • Cancelled tasks: - [-] for something you decided not to do. Alongside open [ ], done [x], and forwarded [>], task lines now recognize - [-] as a cancelled task (the Obsidian Tasks convention). In the editor it renders as a muted ✕ with the task text struck through, so a dropped task reads differently from a finished one at a glance. In the vault-wide Tasks view cancelled tasks collect into their own Cancelled group (kept out of Today/Done), and there's a one-key way to cancel the selected task: press c in the Tasks list, or run Cancel Task from the command palette. It round-trips as plain - [-] markdown, and the whole stack understands it: the editor, the Tasks view, the tasks CLI, the MCP server, and the self-hosted/web backend all parse and report the cancelled state. (#450, requested by @edwarsgts)

  • Open a file from inside ZenNotes (File → Open File…, ⌘O). You can now open a one-off .md file that isn't part of your vault without leaving the app: File → Open File… on macOS (⌘O), or the "Open File…" command in the command palette on any platform, pops a native file picker. Pick a file and it opens the same way the Finder "Open in ZenNotes" entry does — as a note if it lives inside a vault you have open, otherwise in its own standalone editor window. Great for quickly reading or proof-reading a stray markdown file. (#449, requested by @rrpolanco)

  • Auto-pair brackets and quotes as you type. A new Settings → Writing → "Auto-pair brackets and delimiters" toggle makes the editor insert the matching closer for [], (), and {} while you type: it wraps a selection when you have one, skips over a closer that's already there, and deletes both halves when you backspace an empty pair. Quotes ("" / '') pair too, but only inside inline code and fenced code blocks by default (so ordinary prose and contractions like don't are left alone); a second toggle turns on quote-pairing in prose if you want it. In Vim mode it only applies in insert mode. It's on by default and fully configurable, and the choice persists to config.toml. (#456, contributed by @AydenGarza in #457)

  • Task metadata is color-coded in the editor. Priority markers (!high / !med / !low), due dates (due:YYYY-MM-DD), and @fields (@waiting, @key:value) now get the same at-a-glance cues in your source notes that the Tasks view already shows, so the important bits pop instead of blending into the task text. Priorities are colored (red / amber / blue), due dates render as a small chip that turns red when overdue (past due and the task still open) and stays neutral-blue otherwise, and @fields get a muted chip. It updates live as you type and edit, and it's purely visual, the markdown you wrote is untouched. (#tags were already styled; this brings the rest of the metadata up to match.) (#454, requested by @uNyanda)

  • Forwarded tasks land under your ## Tasks heading. When you forward a task to a note that already has a ## Tasks section, the copy is now slotted at the end of that section (right after the existing tasks, before the next heading) instead of being dropped at the very bottom of the note. Notes without a ## Tasks heading keep the old behavior and append to the end. This applies both to forwarding a single task with Forward Task to Note… and to the automatic roll-over of unfinished tasks into today's daily note, so a sectioned daily note stays tidy without manual reshuffling. The heading match is exact ("Tasks", any level, and it ignores a ## Tasks line inside a code block). (#452, requested by @uNyanda)

  • Filter database rows by multiple fields, with AND or OR. Databases get a proper filter editor: a Filter button in the toolbar (with a count of active filters) opens a popover where you add field · condition · value rows and choose whether rows must match all of them (AND) or any of them (OR). Operators adapt to each field type (is / is not, contains, greater than, before/after, is empty, is checked, and so on), and the value input becomes a dropdown for select fields or a date/number/text box otherwise. It works in the Table and Board views, and your filters (including the AND/OR choice) are saved with the database. So you can ask for "Priority is High and Status is In Progress" to find urgent unstarted work, or "Status is In Progress or Priority is High" to see everything active alongside anything urgent. (#394, requested by @naingyeminn)

🐛 Fixes

  • The outline no longer invents a heading from your frontmatter. When a note's frontmatter had no blank line before its closing ---, the outline read that --- as a Setext-style H2 underline for the line above it, so a note like title: Test over type: Test showed a phantom type: Test heading in the outline panel. The parser now skips the whole leading frontmatter block before it looks for headings, so only your real headings appear. Because the same parser also powers the outline palette, [[#heading]] link resolution, and wikilink navigation, those stop matching the phantom heading too. This is the outline-side companion to the v2.15.0 fix that stopped the same frontmatter from rendering as a giant heading in the editor. (#442, reported by @stevecopley)

  • The "New Drawings, Databases & Tasks" location settings stick now. Setting a default location for new task files did nothing: on the self-hosted/web build the server dropped all three location settings on save, and on the desktop the tasks location specifically was dropped, so the control snapped back and every new task landed in the inbox regardless of your choice. The settings now round-trip on both the desktop and the server, so a new task (or drawing, or database) is created where you set it. Task detection itself was never affected: a note tagged tags: [task] shows up in the Tasks view either way. (#446, reported by @wedgen)

  • Links inside table cells follow in Edit mode. A [[wikilink]] or [text](Note.md) placed inside a table cell only revealed the cell's raw source when you clicked, Cmd/Ctrl-clicked, or pressed gd on it, while the same link outside a table (and in Preview) navigated fine. Table cells now follow links the same way the rest of the editor does: a plain click follows a rendered link, Cmd/Ctrl-click always follows, and gd follows the link under the cursor, for both wikilinks and Markdown links, in Vim and non-Vim mode. (#445, reported by @samaniegoluis)

  • A long tag list no longer overflows the Tags view or hides the sidebar's scroll. With a lot of tags (say 30+), the main Tags tab had no scroll region for its tag list, so the tags grew straight past the bottom of the window and pushed the matching notes off-screen entirely. The tag list is now capped and scrolls on its own, with the matching notes in their own scroll area below it. In the left sidebar the tag list already scrolled with the rest of the sidebar, but its scrollbar (a near-black thumb at low opacity) was effectively invisible on a dark sidebar, so the list looked cut off; the sidebar's scrollbar now uses the sidebar's own text color, so it's clearly visible in both light and dark themes and it's obvious the list scrolls. (#451, reported by @naingyeminn)


Keyboard-first and local-first, as always.