Changelog
What's new in NoteLace, newest first.
- 2026-05-28v0.1.21
Published notes render properly, plus a raw-Markdown option
Publishing a note to the web got an upgrade on both ends. Shared pages now render the way the desktop preview does: tables, syntax-highlighted code, and math all come out formatted instead of as a wall of plain text. The web fix went live earlier; this build adds the desktop side.
New in the Publish modal: a Rendered / Raw Markdown toggle. Rendered is the default and what you want for a finished note. Raw Markdown shows the source verbatim in a code block, for when the source itself is the point, like a snippet someone will copy, a template, or a config example. You can flip a published note between the two and hit Update; the URL stays the same.
A few publish papercuts went with it: right-click any note in the list to publish it, the modal isn't cramped against its edges anymore, publishing always targets the note you're actually looking at (no more "can't publish a trashed note" when a preview tab was open), and right-click menus now close when you click away.
- Published pages render tables, syntax-highlighted code, and LaTeX math, matching the desktop preview (Mermaid diagrams still show as a code block).
- Publish modal: Rendered / Raw Markdown toggle (default Rendered), switchable on a live note without changing its URL.
- Right-click → "Publish to web…" on any note in the list.
- Fixes: Publish modal padding, publishing the visible note instead of a stale active one, and context menus closing on outside click.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- 38ed076a4000c6bd737d25abe1902bbbd62d9797b5577e9e1b030d5c2ca8a992NoteLace-mac-arm64.dmg
- 25606db0bfefccf58a84378e30af86562dc09712aabf9fd7a73345dd802ddea5NoteLace-mac-x64.dmg
- a1f48fe0c8f036f0a4d3128d7a03e1cc49f61a35069a5b44e763799f3da4f6b4NoteLace-windows-x64.exe
- 30997bb7a32073e380bfc1c53de53f57d9d47e78004f44e07d193b0847da581aNoteLace-linux-x86_64.AppImage
- 2026-05-28v0.1.20
The update banner button works now
A focused fix for an embarrassing one: the "Restart and update" button on the auto-update banner has been unclickable since v0.1.16, and two earlier attempts to fix it didn't stick.
The earlier fixes treated it as a drag-region problem and added CSS to opt the buttons out of window-dragging. That was the wrong layer. The real cause was the banner's position: it was pinned to the very bottom edge of the window, which on macOS is the OS's window-resize zone: the system swallows the mouse click there before the app ever sees it, and no amount of CSS can change that. Moving it up into normal content space, below the title bar, puts it back in clickable territory.
If you're reading this in an older build whose Restart button still doesn't respond, the dismiss × on the same banner is also dead in those versions; grab v0.1.20 directly from the download page that one time, and the in-app updater works normally from here on.
- Auto-update "Restart and update" + dismiss buttons are clickable again: the banner moved out of the macOS window-resize / title-bar drag zones into normal content space.
- The renewal, lock, and telemetry notices moved with it (they shared the latent bug) and now sit just below the title bar.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- 6c11c15b01b29d40bfc4def38479b29adc4c38e5e5720a415e56977368e86447NoteLace-mac-arm64.dmg
- 15da75f6bb0e7fd84d2b24f4b146fd3dac9ceeac1409694c27d2e49ddf5de5a5NoteLace-mac-x64.dmg
- e93ab3c307ad9606fb6fb39c322aace998c964c7164217fee0f8c930d4dbfcb5NoteLace-windows-x64.exe
- 4df23e2753d032cd2d0e6e559de2d754b4a590f0817da513ab1e8a1d5da10ee9NoteLace-linux-x86_64.AppImage
- 2026-05-27v0.1.19
App lock, publish to web, search inside images, saved searches
Four user-facing features land together, plus a stack of internal cleanups. Each one extends an existing surface rather than adding a new one: the app shape is unchanged; the things you already do gain new affordances.
**App lock.** Optional 4–6 digit PIN that gates the window on launch and after a configurable idle period. Set it up in Settings → Security. It's the macOS / iOS "Screen Lock" equivalent for the times you walk away from your laptop in a café: not encryption, but the right answer for a worry that a cloud-side account password doesn't cover. A one-time recovery code unlocks the app if you forget your PIN; the Settings modal blocks closing until you tick "I've saved it" so an accidental keystroke can't lose it. Lock now from the command palette (⌘P → "Lock NoteLace now"). Idle auto-lock defaults to 15 minutes.
**Publish to web.** Share a single note at notelace.app/p/<slug> with one click: ⌘P → "Publish active note to web…". The slug is unguessable (132 bits of entropy); only people you give the URL to can read the note. The reader page renders your Markdown server-side through the same remark + rehype-sanitize pipeline the desktop uses. Re-publish keeps the same slug, so a URL you shared yesterday still works after you fix today's typo. Unpublish wipes it server-side; the URL 404s immediately. Only this note is shared; everything else in your vault stays private.
**Search inside images.** Drop a screenshot into a note and within a few seconds the text inside it becomes findable through the regular search bar. A deadline written on a meeting whiteboard photo surfaces when you search for that word. Nothing to enable; runs automatically on every image you attach. The recognised text lives on a separate field that only the search index reads; it never pollutes the rendered preview.
**Saved searches.** Save the current search-bar text + sidebar filter combination as a named entry that shows up in a sidebar section above Notebooks. One click later restores the same view exactly. The "+" button appears in the section header the moment there's something worth saving (a query, a tag, a status filter, or pinned-only). Tag references are stored by name so renaming a tag doesn't break the saved entry.
Smaller things that ride along: renaming a note now rewrites every `[[reference]]` to its old title across the whole vault: aliased forms (`[[Old|short]]`) and `#heading` suffixes are preserved, wiki-links inside code blocks are left alone. The note-list search ranks results with title-prefix and word-boundary bonuses so "Kanban setup" beats "some kanban mention" when you type `kanban`, and the match positions are highlighted in both the title and the body snippet. Main-process Electron errors now route through the same Sentry sink the renderer uses, closing the one observability gap that was making head-scratching crashes feel mysterious. And we set Vitest's max workers to 4 with retry: 2, so the heaviest App-suite integration tests stop flaking under parallel load on busy machines.
- App lock: optional 4–6 digit PIN + idle auto-lock + recovery code. Settings → Security.
- Publish to web: ⌘P → "Publish active note to web…". One click, unguessable slug, stable on re-publish, instant unpublish.
- Search inside images: every attached image gets OCR'd in the background; the words inside become regular search hits.
- Saved searches: sidebar section above Notebooks; one-click recall of any query + filter combination.
- Rename-safe wiki-links: renaming a note now updates every `[[reference]]` across the vault; code blocks untouched.
- Ranked search results: title-prefix and word-boundary bonuses, plus inline highlight ranges on title and snippet.
- Main-process error capture: every uncaughtException / unhandledRejection in the Electron main process now lands in Sentry.
- Stable test suite: Vitest cap of 4 workers + retry: 2 + memoized entitlement selector eliminate the long-standing AppWorkflow flakes.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- 0d23818d116904ff7c5345c60e648b55d7a035ab4fcf1e75565afcd6d5aaa44eNoteLace-mac-arm64.dmg
- 3135a8e8188fb3ab70de9f4a8def59d9d1eb6517d33f94259f031f5a5601b03bNoteLace-mac-x64.dmg
- a136308dc74ec6f780ab36eddec997987df8bc59bd01911e027b9692f025939eNoteLace-windows-x64.exe
- 866aa82b1b1b1a57a7da7d3db9312ed3f637d4431489ee5eadf5877748a7c961NoteLace-linux-x86_64.AppImage
- 2026-05-27v0.1.18
Web clipper, AI diff preview, fixes
Two real features land in this release plus a stack of quality-of-life fixes from the v0.1.16 + v0.1.17 batch.
The big one: NoteLace can now receive saves from a browser extension. There's a small Chromium MV3 extension in Chrome Web Store review that lets you click the toolbar icon on any page and drop a Markdown version of it into a NoteLace notebook called Inbox. Everything happens on your machine: the extension reads the page in your browser, converts to Markdown locally (Mozilla's Readability + Turndown), and hands the result to NoteLace via the new notelace:// URL scheme. No NoteLace server is in the loop. While the store listing is in review you can build + load it unpacked from the source; instructions on /clipper.
The other one: the in-editor AI assistant no longer applies its result blind. After you click Improve / Summarize / Continue, NoteLace now shows you a side-by-side diff (original on top, proposed below, +N/-N summary chip) before anything touches the note. Apply to commit, Reject to keep your text, Esc and ⌘↵ as shortcuts. Closes the "did it just rewrite that?" pause that made the old flow feel risky.
Smaller fixes that ride along: the "Restart and update" button at the bottom of the auto-update banner now actually responds to clicks (a CSS regression in v0.1.16 was turning the area into a window-drag region); there's a redundant "Update ready — restart" pill at the top of the sidebar so even a worst-case banner regression can't lock anyone out again. The Delete-all → Everywhere flow now explicitly pushes deletes to your CouchDB and asks the server to compact, so the storage bar drops within a few minutes instead of hours. The Insights → Help us improve panel sends reports straight to us through the API instead of opening a mailto. The in-editor AI bar shows a small Local / Remote chip so you always know whether your selection is staying on your machine. And there's a quiet security pass on the IPC layer the renderer talks to the main process through: every privileged IPC handler now asserts the calling frame is our own renderer.
- Browser clipper extension: save the page you're reading into NoteLace as Markdown, in one click. Source: web/apps/clipper/. In Chrome Web Store review; developer-install instructions on notelace.app/clipper.
- AI assistant shows a diff preview before applying. Apply / Reject / Esc / ⌘↵.
- Auto-update Restart button works again on macOS; new top-of-sidebar "Update ready — restart" pill as belt-and-braces fallback.
- Delete-all → Everywhere now pushes tombstones + asks CouchDB to compact, so storage actually reclaims within a few minutes.
- In-editor AI bar shows a Local / Remote privacy chip; bug/request reports send via the in-app form instead of mailto.
- P2 hardening pass: bulkPurge no longer silently no-ops on sync conflicts; OAuth window refuses popups + embedded webviews; every privileged IPC handler validates the calling frame is our own renderer.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- bcb8332261ff63fe937be61fc7198a1159da32153b2ae20a310d5751f241c14dNoteLace-mac-arm64.dmg
- 1bed5ea0de80b9234d1c023d16603a29d5030e7c51b9e6e20932fc4633e41bb6NoteLace-mac-x64.dmg
- 64f5d0aeeeac9c670c8691ae1af486592ae6288760588a4e7e6d824ebc76ac61NoteLace-windows-x64.exe
- 8077bee986e6ed97844c2e1653ef0fe95bf348a07488a069d09162bc3c163ba0NoteLace-linux-x86_64.AppImage
- 2026-05-27v0.1.17
Fixes from v0.1.16 + security hardening
A small, mostly-invisible release that closes the bugs reported against v0.1.16 and tightens a few internals that needed attention.
On the bug-fix side: the "Restart and update" button at the bottom of the auto-update banner was unclickable on macOS: Electron was treating clicks on it as a window-drag gesture. Fixed. The other "Delete all data → Everywhere" mode wasn't actually wiping the cloud copy reliably: the local deletes were made, but the desktop only trusted live sync to push the tombstones to the server eventually, which doesn't always happen before the modal closes (or at all if sync is paused). We now push the deletes explicitly and ask CouchDB to compact so the storage bar actually reclaims the bytes within a few minutes instead of staying inflated for hours.
On the hardening side: a handful of internals that the May review flagged. Permanent-delete now surfaces per-row failures from the sync database instead of silently no-op'ing on a stale-revision conflict (the symptom was: "I purged that note, why is it back?"). The sign-in window now refuses popups and embedded webviews; the OAuth providers don't need either, so a compromised provider page can't use them to escape the sandboxed window. And every privileged main-process IPC handler now asserts the caller is the app's own renderer frame, not something masquerading from a foreign origin.
You shouldn't notice any difference except the buttons that should respond, do, and the storage bar drops to where you'd expect after a wipe.
- Auto-update "Restart" button now responds to clicks on macOS.
- Delete-all → Everywhere actually wipes the cloud, then asks CouchDB to reclaim the bytes (storage bar drops within a few minutes instead of hours).
- Delete-all modal preview shows the accurate "Wipes N documents" count (excluding settings) so the post-delete count isn't a surprise.
- Permanent-delete throws on per-row failures instead of silently no-op'ing on a sync-conflict.
- Sign-in window: popups + embedded webviews blocked. Every privileged IPC handler asserts the calling frame is our own renderer.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- db3bcb16404908c0b9c013412748db779d5e16b82e1ceca6002cb18b70149a42NoteLace-mac-arm64.dmg
- 159dd993549bca9b2dabbdcb6791e3e5b1c1fab960344f27732f14970e0df215NoteLace-mac-x64.dmg
- fccb28ff5766c067156c483c30d19e6ce3325b9c57922a18b258f0dfa829aa98NoteLace-windows-x64.exe
- bbd97a5c9a0f934dcd88815e80736ec3c35f8728388bb1d29c6dcaad72bdc464NoteLace-linux-x86_64.AppImage
- 2026-05-26v0.1.16
Per-type breakdown, Delete all
Two small follow-ups to v0.1.15's storage pass. Settings → Account now shows a one-line accounting under the "cloud documents" number that adds up to it: notes, notebooks, tags, templates, views, history snapshots, settings. No more wondering why the count doesn't match your active notes; you can see exactly what the difference is (usually it's version-history snapshots).
And a "Delete all data" button in a new Danger zone at the bottom of Settings → Account. Two modes. "Everywhere" wipes this device and replicates the deletes to your other devices on next sync; your account, themes, fonts, and templates of choice stay intact. "This device only" stops sync, destroys this device's local store, and reloads; your cloud notes stay safe (handy if you want to start fresh on one machine without losing your vault elsewhere). Either mode requires typing DELETE first, since one mis-click would be a bad day.
- Per-doc-type breakdown under the storage bar: notes, notebooks, tags, templates, views, history snapshots, settings, totaled.
- "Delete all data…" button in a Danger zone, with two modes: Everywhere (replicates to cloud) or This device only (destroys local + reloads).
- Typed "DELETE" confirmation before either mode fires.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- a7159b4de09145b0f1aacf51e676712ce74b967593eccf4e6047f886c42f694aNoteLace-mac-arm64.dmg
- 5b08707ee382522b51678397ccc133e72eef21c38b3fe84eda1df81a8eec3c18NoteLace-mac-x64.dmg
- 61f56c3b7eca13fb98d56ce9936f5af7974dac73e5ab23aa59d998fc07403f4cNoteLace-windows-x64.exe
- 48cb571eac3c5a640d1e80c46be00eae77ed0d37df5206822d1a7aafdfb341cbNoteLace-linux-x86_64.AppImage
- 2026-05-26v0.1.15
Signed on macOS, real storage controls
Two things in one release. The macOS build is finally signed with a Developer ID certificate and notarized by Apple, so a fresh install no longer hits the "NoteLace is damaged and can't be opened" wall that hardened-runtime apps see without notarization. Auto-update on macOS now works end-to-end too. Linux already updated silently, and Windows downloads + installs fine but still triggers a SmartScreen "Unknown publisher" warning per update. A Windows code-signing cert is on the roadmap to make that silent as well.
Settings → Account got real storage controls. The old "X notes" label was actually counting every document in your sync database (notes, notebooks, tags, version history, the lot), which made the number feel mysterious. It now reads "X cloud documents" honestly, with a one-line breakdown showing how many notes are on this device. Two buttons next to it: "Empty trash" purges everything in your trash right now instead of waiting for the auto-empty, and "Compact storage" reclaims disk space after large deletes (runs in the background, can take a few minutes for big vaults).
Under the hood, bootstrap now sweeps orphan version-history docs from past deletes; if you had history snapshots left behind by an earlier bug, your cloud-doc count drops on first launch. Trashed notes also auto-empty after 30 days, matching Apple Notes / Inkdrop defaults.
- macOS signed + notarized: no more "damaged" Gatekeeper warning on install.
- macOS auto-update now works (Linux already did; Windows still shows a SmartScreen warning per update until a code-signing cert lands; it's on the roadmap).
- Account tab: "Empty trash" + "Compact storage" buttons.
- Auto-empty trash after 30 days; orphan version-history docs cleaned at every launch.
- Honest "cloud documents" label with a local active + trash breakdown so the number stops feeling mysterious.
SHA-256 · verify with
sha256sum <file>on macOS / Linux,Get-FileHash <file>on Windows.- 8b153ee9c21483dc54ef10a173d954916d2edff97f837d21e91a7caa2fcc728aNoteLace-mac-arm64.dmg
- 16654abeb250c788ccbb80a4599992c54105752850c05ec7d09c1dbff4f2a3a4NoteLace-mac-x64.dmg
- 88493837ad4bf063549649dab6b33fca6d09e33782b806341addfef35d93ed7aNoteLace-windows-x64.exe
- 8ae94d46a3f2c91c41217ce51ac1495413427915b732a410a8f7aa783d5f5b55NoteLace-linux-x86_64.AppImage
- 2026-05-26v0.1.14
Performance week
A week on speed. Five small PRs that share the same goal: fewer pauses, less work per keystroke, a lighter cold start. Nothing new to learn, just things you might notice running smoother than they did yesterday.
The biggest one underneath: the markdown cache used to invalidate itself on every save (a subtle React 19 thing). It now actually caches between keystrokes. The note list also switches to a windowed renderer once you cross 100 notes, so vaults in the thousands scroll and switch as fast as a small one.
- Cold start ~92 KB lighter: KaTeX and the export library load on demand.
- Note list virtualized past 100 notes (large vaults stay smooth).
- Sync receives changes incrementally now, not by re-reading the whole vault.
- Renaming a note linked from many others is one batched write instead of N sequential ones.
- Conflict resolution walks just the change-set since last time, not the whole database.
- 2026-05-26v0.1.13
Mermaid fixes
Two Mermaid bugs in the preview. Diagrams used to flip back to their raw code when you scrolled or resized the window; fixed. And the labels inside flowcharts, ER diagrams, class diagrams, state diagrams and quadrant charts could come out blank; also fixed.
Small visual cleanup on the diagram cards while I was in there: softer border, gentler hover.
- 2026-05-25v0.1.12
Daily-notes calendar
Added a calendar to the sidebar for daily notes. Days with an entry show a dot; click any day (past, today, or future) to open it or start a new one from your template. Off by default; flip it on in Settings → Templates → Daily notes.
You can also point daily notes at any notebook, pick a date format, and choose which template seeds a new day. ⌘⇧J still jumps to today.
Fixed: "today" was being worked out in UTC, so a note started just before midnight could land on the wrong date. Uses your local clock now.
- 2026-05-25v0.1.11
Optional AI
Added AI writing helpers: select text and ask to Improve, Summarize or Continue. They only ever talk to the model you pick. Point them at a local Ollama and nothing leaves your machine; or bring your own API key. NoteLace never proxies your notes through us.
Tools like Claude Desktop can also read your vault through a small MCP connector. Opt-in, read-only by default.
Plus two fixes: preview headings use the correct font on Windows, and sync recovers cleanly when a session needs refreshing mid-edit.
- 2026-05-25v0.1.10
Quieter history, steadier sync
Version history was saving a new snapshot on almost every keystroke. It now waits for a natural pause before saving, so your timeline reads like the edits you actually made.
Sync got two fixes. If your credentials expire mid-session, NoteLace refreshes them and carries on instead of going silent. And if it can't, there's a plain "Retry sync" button in the corner rather than a dead end.
- 2026-05-24v0.1.9
Better sync
Most of this release went into sync trust. If you edit the same note on two machines before they sync, no edit is lost: one stays as the live note, the other lands in that note's history, a click away.
Offline is calmer too. Losing connection used to flash a red "sync error"; it just says "Offline" now and picks back up once you're online. And a fresh device pulling down a large vault gets a real download progress bar instead of an empty screen.
- 2026-05-24v0.1.8
Packaged builds open on every OS
The packaged app could open to a blank or unstyled window: it was loading its assets from the wrong path once installed. Fixed on Windows and Linux. Nothing to do on your end; the app updates itself.
- 2026-05-20v0.1.x
Sync across your devices
NoteLace runs on more than one machine now. Turn on sync and your notes, notebooks, tags and images stay in step across devices, each account in its own private database.
14-day trial, no card. Subscription lapses don't lock you out: editing pauses until you renew but you keep reading and exporting everything.