Skip to content

ZenNotes v2.85.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Nov 22:02
· 3 commits to main since this release

ZenNotes 2.85.0 takes notes from the new ZenNotes Web Clipper: clip a page, a selection or your highlights in Chrome, Edge, Firefox or Safari, and it arrives in ZenNotes as a clean Markdown note. No account, and nothing passes through a server.

Released from 612e7b7b418980545a51ba085cb26a10b997c8eb through #1071 on 2026-11-11.

Features

  • The ZenNotes Web Clipper (#620). A browser extension, open source at ZenNotes/web-clipper, turns the page you are reading into a note: the title, a link back, the author and date when the page has them, and the text without the menus and ads. Open it with Alt+Shift+Z (Option+Shift+Z on a Mac), pick the folder (Clippings unless you change it) and where the clip goes, and press Mod+Enter. It has templates chosen by site, a highlighter, a reader view, and an optional Interpreter that fills parts of a template with an AI model you choose, using your own key. Get it for Chrome, Edge, Brave and Arc from the Chrome Web Store, and Safari on iPhone and iPad from the App Store. Safari on the Mac and Firefox are in review and follow soon.
  • Clip into the note you choose. A clip starts a new note in any folder, or goes to the top or bottom of a note you already have, or of today's daily note (made from your daily note settings and template when it does not exist yet). A taken name gets the next free one, so a clip never overwrites a note. Clipping into a note that is open goes through the editor: typing you have not saved stays, and undo takes the clip back out. With ZenNotes closed, it opens and files the clip once it has started.
  • Safe by design. Any web page can open a zennotes:// link, so ZenNotes files the clipboard only when it holds exactly the note the link vouches for (its SHA-256). A page cannot make it save something else you copied, such as a password. Clips also stay inside your notes area and never touch hidden folders.

Fixes

  • A clip from a browser on Windows arrives. Windows can store the clipboard with CRLF line endings, which the extension never hashed; ZenNotes now accepts that form and files the note exactly as the extension wrote it.
  • On iPhone, iPad and Android, a new or edited TikZ figure draws right away (iPhone 1.39.0, Android 1.1.58). Before: it waited 30 seconds and then showed an error.

For contributors

  • The clip links are a documented contract. docs/web-clipper-link.md and docs/web-clipper-link.fixtures.json define zennotes://new and zennotes://daily; the desktop parser, the extension and (later) the phones test against the same cases. Raycast, Shortcuts or any script can hand ZenNotes a note the same way.
  • A dev build on macOS no longer takes zennotes:// away from ZenNotes. Every unpackaged run used to make the bare Electron.app the link handler, so links opened an empty Electron window until ZenNotes was launched again. Only a packaged app registers now.
  • The phones' vault layer is one package, @zennotes/portable-vault, instead of a copy in each phone repo (since core 2.84.1). This release also carries the first pieces of ZenNotes in your browser, built and tested but not served anywhere yet.

Demos

Captioned 1080p clips recorded on the release build, with made-up data.

Clip a page: an article in the browser, the clipper opened over it with the page's name, the folder Clippings and New note, then Cmd+Enter, and ZenNotes files the note in Clippings and opens it with its link back, author, date and the article as clean Markdown. Watch the clip (22 seconds, captioned).

Clip into today's daily note: a line typed into today's daily note and not saved yet, a quote selected in the browser and clipped with Add as "Daily note, bottom". The typed line stays, the clip lands below it, and Cmd+Z takes the clip back out. Watch the clip (28 seconds, captioned).

Verification

How to test locally:

  1. Build the extension from ZenNotes/web-clipper (npm ci && npm run build) and load dist/chrome as an unpacked extension in Chrome, or install it from a store.
  2. Install this release (a dev build does not register zennotes:// on macOS, so use the packaged app), open a vault, then open any article in the browser, press Alt+Shift+Z and Mod+Enter. Before: nothing handled the link. After: the note opens in Clippings with the page's title, link and text.
  3. Clip the same page again. The second note is named <title> 2; the first is untouched.
  4. Open today's daily note, type a line without saving, then clip with Add as "Daily note, bottom". Your line stays and the clip appears below it; undo removes the clip.
  5. Copy something else between pressing Mod+Enter and ZenNotes coming forward (or fire a clip link by hand with a wrong clipboard= hash). ZenNotes says the clip did not arrive and writes nothing.

Distribution channels

  • GitHub: this release, latest, with all five update feeds. Every file they name was checked, and the app in both macOS DMGs is Notarized Developer ID and stapled.
  • AUR: zennotes-bin 2.85.0-1, pinned to the Linux tarball's SHA-256 cd279a34…16ff84f.
  • Homebrew: the zennotes cask in ZenNotes/homebrew-tap (3f5ab36).
  • Nix: packaging/nix/release-data.json (be7b6c1b), built on main (run 43111692041).
  • nixpkgs: NixOS/nixpkgs#585604, zennotes-desktop: 2.83.0 -> 2.85.0, waiting for nixpkgs review.
  • Self-hosted server and Docker: unchanged; 2.84.0 still serves the current web app.
  • zn: this app still bundles 0.17.1, the latest.
  • Phones: iPhone 1.39.0 (build 61) is waiting for App Review, and Android 1.1.58 is in Play review, with its signed universal APK on the Android GitHub release. Both run core core-2.85.0-core.h34304526f14f966c from this commit.
  • Web Clipper: Chrome Web Store and the App Store for iPhone and iPad today; Safari on the Mac and Firefox in review.
  • Website: the release page, the Web Clipper docs and the clips on zennotes.org.

Release validation

  • In a clean npm ci checkout at 612e7b7b: typecheck, every test suite uncached (shared-domain 2687, portable-vault 398, app-core 4913, quicklook 18, web 76, desktop 1941), build:prod, npm run pack and the packaged launch check (page target, rendered, 2.85.0), and the three smoke suites. No hazards, no high audit findings, no long dashes.
  • CI on the release PR passed on every platform at 612e7b7b. GitHub Actions had an outage right after the fast-forward, and the run on main for that commit never started; the tag went on the PR's green run of the same commit, and CI on main then passed at be7b6c1b (the same code plus packaging).
  • Earlier failures on the release branch, each fixed before the cut: a Windows-only clip-links test that used POSIX paths (0360feb7), three CodeQL findings in the not-yet-served browser app (803d9b5b), and a Windows-only flaky ordered-list test whose 50 ms parse budget ran out on a slow runner (612e7b7b).
  • The candidate core was walked on iPhone and Android, and the iPhone Cloud UI tests passed on a clean run (7 passed, 1 iPad-only skip) after a test-harness fix for blank first launches on a loaded Mac. The phone release builds were walked again on a simulator and an emulator.
  • Not tested before release: a clip from a browser on Windows itself (the CRLF clipboard path has unit tests only), a bare Linux AppImage's link handling, packaged Windows and Linux builds beyond CI, and the phones on real devices.