ZenNotes 2.76.0 is a Tasks release. Any task can take any due date from its right-click menu, a task without a due date waits under its own No due date group instead of in Today, and the Tasks list can put high priority first while staying grouped by date. It also fixes Cloud conflicts that a phone could not settle, one of which could delete a note it kept, and names a note's folder the same way in note search, the buffer switcher and the [[ picker.
Released from 61628218 through #994 on 2026-10-23.
Features
- Choose any due date from the task menu (#991, thanks to @davi-jorge-art). The menu every task surface shares stopped at Due next week, so a day further out meant finding it on a calendar and typing
due:2026-11-04on the line, which is the most work on a phone. Choose a date… now follows the presets in the Tasks list, on the board, in both calendars, and on the phones a long-press on a task. It opens the month calendar that typing@dateopens in a note, on the task's due date (today without one), and a click on a day sets it. In Vim mode,@opens it on the selected task in the list, on the board and in the Tasks calendar. A daily-note task picked for its own note's date gets that date written out, so it stays when the task moves. - No due date has its own place (#990, thanks to @davi-jorge-art). An open task without a due date sat in Today, so Today mixed what is due with everything undated. It now waits under No due date, after Upcoming, in the Tasks list; the Status board gains a No due date column between Upcoming and In progress, and dropping a card there (or
Shift+L/Shift+Hinto it) clears itsdue:. Home's Today keeps only what is due today or overdue. A task written in a daily note still counts as due on that note's date while "Tasks are due on the note's date" is on, so it stays in Today, and the No due date column refuses it, since its date is its note's. - Order the Tasks list by priority (#989, thanks to @davi-jorge-art). The list kept each group in its notes' line order, so a high-priority task could sit under five low ones. A new Order menu above the list switches each group between Note order and Priority: high, then medium, low and none, ties by due date, still grouped by Today, Upcoming and the rest.
sswitches it in Vim mode,:order priorityand:order noteon the ex line, and the command palette, Settings → Tasks andtasks_list_orderunder[view]in config.toml set the same thing. Shift+J/K and dragging reorder only in Note order; in Priority order they say how to switch back. zn 0.11.0 reads the same key (Oin its task list).
Fixes
- Cloud conflicts settle cleanly, and none deletes a note (reported by Dave on Discord). A phone whose sync had been stuck came back to two conflicts on one Untitled.md: keeping the other device's version said the file already existed, the second conflict then refused both choices as "changed again", and taking the other device's version of a note this phone never had could delete the note it kept, on both devices. Three causes, reproduced with two devices against a local Cloud server. A note met at a file this device had edited was queued as a conflict against it; such a conflict now settles after each pull once Cloud has moved that note on, landing where Cloud keeps it and leaving this device's file alone. The other device's version could not take its place while any file of this device held the path; that file now moves beside it to the next free name (Untitled 2.md and on). And a Cloud path taken by another file now says so instead of "changed again".
- One folder label for a note everywhere. 2.75.0's note search showed the whole vault path (
inbox/Projects/Atlas), the[[picker showedProjects/Atlas/, and the buffer switcher the raw parent folder, while the picker made an archived2025/Atlaslook like an inbox folder. All three now name a note's folder the same way: inside the main notes area, the folder within it; anywhere else, the path from the vault root, area first (archive/2025/Atlas). - Move asset takes a folder like
v1..2. The Move asset prompt refused any path with two dots in a row, and promised that an empty answer moves the asset to the vault root while every host files it inassets/. It now refuses only a whole..segment, says an empty answer goes toassets/, and does that: an asset loose at the vault root moves there. - zn 0.11.0 is bundled. On macOS and Linux, the zn that ZenNotes installs is now 0.11.0, the terminal side of No due date and the priority order (ZenNotes/tui#16).
For contributors
- Due date picker (
1bf79403):chooseTaskDueDateinlib/task-context-menu.tsopens the@dateDatePickerModaland writes through the same due-date mutation as the presets; the@key is Vim-gated likex,i,cand>inTasksView,TasksKanbanandTasksCalendar. Tests intask-context-menu.test.ts. - No due date (
032e5da2):VaultTaskGroups.undatedin shared-domaintasks.ts; the Status board'sundatedcolumn anddropMutationsFor('undated')(refused fordueInferredtasks) intask-column-mutations.ts; Home andgetTodayTasksnow applyinferDailyTaskDueDatesas the Tasks view does. Drag-reorder inside the No due date group came with712a0e7a. - List order (
712a0e7a):applyPriorityOrderand theorderparameter ofcomputeTasksRenderinlib/tasks-filter.ts;tasksListOrderin the store,PORTABLE_PREF_KEYSand the desktop's TOML map ([view] tasks_list_order). - Cloud (
5a34aea7):settleMovedArrivalsin shared-domain'scloud-sync-coordinator.tsruns after each pull and on resolve;cloudSyncFreePathanddisplace_existingmake room for the other device's version;PATH_CONFLICThas its own message. - Folder label (
d825b149):noteFolderLabelinvault-layout.ts, used bySearchPalette,BufferPaletteand the[[picker. Move asset (0b3c8ce9): one prompt inlib/move-asset.ts. zod4.6.6 (61628218), the first release fixing the advisory that failednpm audit --omit=dev --audit-level=high; only that package moves in the lockfile. What's New 2.76.0 (efe5592f); bundled CLI 0.11.0 (36b8edbf); version bump (49304a02).
Demos
Screenshots of this release on the release build, attached to this release:
Choose a date… from a task's right-click menu opens the month calendar on its due date; a click on a day sets it.
No due date waits after Upcoming instead of in Today.
Priority order: high first inside each group, still grouped by date.
Verification
How to test locally. Build once with npm run build --workspace @zennotes/desktop and launch with isolated stores: ZENNOTES_USER_DATA_PATH=$(mktemp -d) ZENNOTES_CONFIG_DIR=$(mktemp -d) npx electron apps/desktop/out/main/index.js. Put a note with these lines in the vault (use today's date for the first):
- [ ] Call the bank !med due:2026-10-23
- [ ] Renew passport !high due:2026-10-20
- [ ] Book museum tickets due:2026-11-04
- [ ] Read the manual
- [ ] Review contract !high due:2026-10-23
- No due date. Open Tasks (Cmd+Shift+P, "Open Tasks"): Read the manual sits under No due date after Upcoming. Before: it was in Today. Switch to Kanban: the Status board has a No due date column; drag Book museum tickets there and its
due:is gone from the line. - Choose a date. Right-click Call the bank and pick Choose a date…: a month calendar opens on its due date; click a day and the line's
due:changes. With Vim mode on, select a task and press@for the same calendar. - Priority order. Set the Order menu above the list to Priority (or press
sin Vim mode): Today reads Renew passport, Review contract, Call the bank. Press Shift+J: a message says reordering works in Note order.:order notebrings the line order back, andtasks_list_order = "note"is under[view]in config.toml. - Cloud conflicts. Needs two devices on one Cloud vault. Close the first and edit a note there by hand (say
Daily Notes/Untitled.md). On the second, move that note to the trash, make a new note with the same name in the same folder, and trash that one too. Open the first again and let it sync: the new note lands in its trash on its own, and Review sync changes (Space r) asks only about the note you edited. Either choice goes through; with the other device's version, a file of this device already at its path moves to Untitled 2.md instead of refusing. Before: a second conflict claimed the edited file and refused both choices, and taking the other device's version on it could delete the edited note on both devices.


