NoteLace

Changelog

What's new in NoteLace, newest first.

  1. 2026-06-02v0.2.1

    A launch fix and a redesigned Settings

    First, a fix. After the Workspaces update, some people found that deleting a note or notebook did nothing, and the sync dot never showed its colour. The cause was a launch-order bug: if your vault is encrypted and locked when the app starts, it could fail to restore your account session — which quietly dropped the app into a read-only state (so edits, including delete, were ignored) and stopped sync from starting. The app now always restores your session on launch, independent of the vault, so editing and sync work normally again. Your notes were never at risk — this was a UI state problem, not data loss.

    Second, Settings has a new look. The old row of tabs across the top is now a grouped sidebar on the left — General, Tools, Account & Security, and Advanced — and the section you pick opens in a panel on the right. It's easier to scan, and leaves room for settings to grow into.

    • Fixed: deleting notes/notebooks and the sync indicator could stop working on launch (most likely with encryption turned on) — the app now always restores your account session at startup.
    • Settings redesigned: a grouped left sidebar (General / Tools / Account & Security / Advanced) with the active section shown in a detail panel on the right.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 2a035aa1ee5e910550d1927d525472098d482df340978495e61c1ca424bb57a6NoteLace-mac-arm64.dmg
    • bc394346abb0dfbe37a94d174576a47a9eb545e80251fc69f4976b27b62b5271NoteLace-mac-x64.dmg
    • 2e8051850f49e2acf557be257fe72b6ef061477013fe422393651ac4ee27f321NoteLace-windows-x64.exe
    • 0852b471488bdaf12f3964188f2767bfa71292de6047a0cde7d5dd76c99722b5NoteLace-linux-x86_64.AppImage
  2. 2026-06-02v0.2.0

    Workspaces

    You can now keep separate workspaces — say Personal, Work, and Research — each with its own notebooks, notes, tags, views, and saved searches. Switching workspaces swaps the whole sidebar to that context, and nothing from one leaks into another. Your existing notes all live in a default "Personal" workspace that's created for you automatically, so there's nothing to migrate and nothing to set up before you start.

    There's a thin new rail down the left edge for switching: click a workspace, or press ⌘⌥1 through ⌘⌥9 (Ctrl+Alt+1–9 on Windows and Linux) to jump by position, and ⌘⇧W to cycle to the next one. The "+" at the bottom of the rail creates a workspace and drops you straight into naming it. Settings moved into that rail too, and a new Settings → Workspaces tab lets you rename, re-icon, reorder, and delete workspaces — deleting first shows exactly how many notes and notebooks go with it.

    Settings, templates, keyboard shortcuts, and your encryption keyring stay global, so they work the same in every workspace. Encryption remains opt-in, and for now a single passphrase unlocks all of your workspaces — per-workspace vaults are a later step.

    • Multiple workspaces, each with its own notebooks, notes, tags, views, and saved searches.
    • Thin switcher rail on the left; ⌘⌥1–9 (Ctrl+Alt+1–9 on Windows/Linux) to switch by position, ⌘⇧W for the next, “+” to create.
    • Settings → Workspaces: rename, change icon, reorder, and delete with a count of what will be removed.
    • A default “Personal” workspace is created automatically — no migration, all your existing notes are there.
    • Settings, templates, shortcuts, and the encryption keyring stay global across every workspace.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • a09673fd744ddee396018c8228e14b3f873c3241e8216f7c9cafda8c3b8c5585NoteLace-mac-arm64.dmg
    • 7d06d2211c9e271365c7f29a618c67d3f4899db3b1a62424feb661cbe9113fadNoteLace-mac-x64.dmg
    • f4300ec5ee89f5a760ee8e6c8b69e2d3ebb882d6b7fc7e95337b7b3e842955ffNoteLace-windows-x64.exe
    • 2464c80bcd6ad1055351961d5f513f29a0d3b2d0d0e91950ffb2e6c4c4b1d3c1NoteLace-linux-x86_64.AppImage
  3. 2026-06-01v0.1.27

    Encryption works in the installed app

    The honest version: end-to-end encryption never actually worked in the installed app — only in our development build. Turning it on threw a low-level error ("WebAssembly.compile … not an allowed source") and your notes stayed unencrypted. The cause was a security rule in the packaged app (a Content-Security-Policy) that blocked the WebAssembly module our key-derivation uses. Our development build skips that rule, so the feature passed every test we ran by hand and shipped broken anyway. That's on us.

    This release adds the one narrowly-scoped permission the key-derivation module needs — nothing more (it permits WebAssembly specifically, not arbitrary code). Encryption now runs end-to-end in the installed app: turn it on, save your recovery phrase, and your note titles, bodies, and image attachments are encrypted at rest and over sync.

    Paired with the v0.1.26 fix that stopped the setup screen from bouncing to the unlock prompt, the encryption flow is finally whole. If you tried to enable encryption on an earlier build and it didn't take, just turn it on again here.

    • Encryption: enabling it in the installed app now works end-to-end. The packaged build was blocking the WebAssembly module behind Argon2id key derivation; the CSP now permits it via the narrow `wasm-unsafe-eval` directive (WebAssembly only — not JS eval).
    • If an earlier attempt left encryption half-enabled, re-opening Settings → Security and turning it on completes the job.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 80361cde1bbdd6202a93ae7a268deb42572d7d595dbdf25811bd7e4f2e29de22NoteLace-mac-arm64.dmg
    • 691f5cc2fdfb2d91434777e57f07ef157d1324ef366a760732025c9ea18459e1NoteLace-mac-x64.dmg
    • bfbd7573e52aa27e1f3c38d75815e47ce415abf3140ec18bcbba39c14d8724f8NoteLace-windows-x64.exe
    • 5e2ebb842148677b4d4707d347aee648935bf57a31a87ebff610ae90142aa52cNoteLace-linux-x86_64.AppImage
  4. 2026-06-01v0.1.26

    Turning on encryption no longer bounces you to the unlock screen — and a faster cold start

    A follow-up encryption fix. Turning on encryption could immediately pop the "enter your passphrase to unlock" screen the moment you clicked through setup — and your notes never actually got encrypted. The cause: setup briefly put the vault into an "unlocking" state, which the app treats the same as "locked", so it swapped the setup screen (the one that shows your recovery phrase and runs the encryption) for the unlock prompt. Setup now goes straight from off to on with no detour, so encryption runs as soon as your recovery phrase appears.

    If you hit this, your notes were never at risk — they stayed as plaintext on your own device, and relaunching the app finishes encrypting automatically. This is a different root cause from the v0.1.24 fix; both are now closed.

    Under the hood, the app starts faster: the encryption building blocks (the Argon2 key-derivation library and the recovery-phrase wordlist) no longer load during cold start unless you actually use encryption. And a rendering change keeps editing smooth in large vaults — the sidebar no longer re-renders on every keystroke.

    • Encryption: turning it on no longer bounces you to the unlock screen with your notes left unencrypted. Setup runs the migration directly, and relaunching auto-finishes any vault the old bug left half-enabled.
    • Startup: the encryption libraries (Argon2id + the recovery wordlist) are deferred off the cold-start path, so launch is quicker — especially for anyone who hasn't turned encryption on.
    • Editing: handler identity is stabilized so the sidebar bails out of re-rendering on every keystroke, keeping typing smooth in large vaults.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 34cb18f0ea052d766df6947b3858fbe687dd5edee88ab9109bb6a7dc6f54dff0NoteLace-mac-arm64.dmg
    • c1b69ccf32e60515a2f76ce712c85a24ef6f6e31d34180e29b482ebaefcaadd8NoteLace-mac-x64.dmg
    • 8feac46f7b2927a3dbac033a55c41b21101adc811b9856385d962d85d57d56c9NoteLace-windows-x64.exe
    • 416e249fc919237be6517be09fb3d784659e64a624346261c468166109562645NoteLace-linux-x86_64.AppImage
  5. 2026-05-31v0.1.25

    Name your notebooks on creation — plus faster search and tougher sync

    Two visible bits. **Naming a new notebook now happens up front.** Click "New notebook" and the row drops straight into rename mode with a placeholder selected — type the name, hit Enter, done. The old flow created a fixed-name "Inbox" every time and made you rename it after, which felt off if you wanted the notebook to be anything else.

    **Root notebooks now show how many notes live underneath them**, including everything in their sub-notebooks. A collapsed root tells you at a glance how much is there; sub-notebooks still show their direct count so each level is still individually readable.

    Plus a wave of behind-the-scenes work: search-index updates are now incremental on every save (invisible at small vault sizes, noticeably less work at 10K+ notes), "Empty trash" surfaces a clear error if a sync conflict prevents some notes from being purged (it used to fail silently), and the sync subsystem cleans up pending background work properly when you sign out, disable sync, or wipe a device.

    • Notebooks: clicking "New notebook" drops the row into rename mode with the placeholder selected — type the real name and press Enter. No more renaming a default-named "Inbox" after the fact.
    • Notebooks: each root notebook shows its direct + descendant note count, so a collapsed root tells you how much lives underneath it. Sub-notebooks keep their direct count.
    • Search: full-text index updates incrementally on each save instead of rebuilding the entire index every time — noticeable as faster typing in large vaults.
    • Trash: "Empty trash" now surfaces a clear "couldn't delete N notes — sync conflicts, try again" message when a per-note conflict blocks the purge, instead of silently leaving items behind.
    • Sync: pull-reload, conflict-resolution, and trash-purge teardown paths are now cancellation-safe when you sign out or disable sync mid-pull. Keyring writes retry on a stale-rev conflict instead of bubbling an unhandled rejection.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • a577bb8d6cedcc0e9301d99233c5d91cc699a436d8936560a36beb37e3108c81NoteLace-mac-arm64.dmg
    • c3a22c46313e3965a54bf590b7088d1c0cbea9efd140d4ea3e8029b90312996aNoteLace-mac-x64.dmg
    • 4c68b64fd29b219052e2b8626584e84e21ae66ab2113999e7372eeeca298b788NoteLace-windows-x64.exe
    • 7bb7b9e9b202cefc977f69f99b44670e38ed5d27dbf907ff00db0898f5730fd5NoteLace-linux-x86_64.AppImage
  6. 2026-05-30v0.1.24

    Encryption actually runs when you turn it on

    Important fix for the v0.1.22 encryption flow. There was a quiet hole where closing the encryption setup modal at the recovery-phrase step — by clicking the X, hitting Esc, or accepting the close-anyway prompt — finished setup without ever actually encrypting your notes. The vault thought it was on; the notes stayed plaintext on disk. Encryption now starts the moment your recovery phrase appears, so it's done by the time you've saved the phrase (or sooner — the modal shows progress).

    Sync's conflict resolution is also sturdier: an unusual empty-payload response from the local database used to abort the whole pull. It now treats it as "no conflicts this pass" and the next pull picks up cleanly.

    • Encryption: enabling encryption now reliably encrypts your notes — the setup modal no longer needs a separate Finish click. The migration starts the moment the recovery phrase appears, so closing the modal after saving the phrase finishes the job rather than stranding it.
    • Sync: conflict resolution tolerates an empty changes payload instead of aborting the pull.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 0881ede29bf30099ff4bdb70f897365a3d2f5977fe91404866f83b530d91c776NoteLace-mac-arm64.dmg
    • a303a1dff9ed8fea8a139cf5f88c30524b4e1a6104bc04f4815f99914a361233NoteLace-mac-x64.dmg
    • ed0d1a4b8975ad66da258cbe7269f472fae8d03c34225f5af3b7a5148ef26460NoteLace-windows-x64.exe
    • 941879961f188c3cd5eb6f2db815b33acc5f03cf4b3d52654bf26c2615212ae6NoteLace-linux-x86_64.AppImage
  7. 2026-05-29v0.1.23

    Fixes: broken images, lost keystrokes, and a sturdier search

    A maintenance release that squashes three bugs. **Images display again** — dragging or pasting an image into a note showed a broken-image icon in the installed app (a content-security rule was blocking the inline preview). Images now render as they should.

    **Your typing is safe.** Pinning, moving, tagging, reordering, or dropping an image into a note while you were still typing could snap the cursor back and delete your last few words — a background autosave was overwriting your in-progress text with the older version on disk. Those background saves now keep whatever you're currently typing.

    **Search is sturdier.** A single malformed note — for example an old imported one missing a title — could throw an error that broke search across your whole vault. Search now skips the bad note and keeps working.

    • Images: drag-dropped and pasted images render again in the installed app.
    • Editor: pinning / moving / tagging / reordering / image OCR while typing no longer reverts your most recent words.
    • Search: a note missing a title or body no longer breaks search for the whole vault.

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 333cd52e71eb70ebe346da7aadf9b8084374f08f74d31053c80524cd2c9491c8NoteLace-mac-arm64.dmg
    • 53818a0dec86dc11d561d56dbf3b43cb78b598694b4686cdf66015781f99fa55NoteLace-mac-x64.dmg
    • 4aa1a79e3b99a95c045ed99ad88601ffb1939c9dd300fb2f6384f66c21b6a01bNoteLace-windows-x64.exe
    • f1e7dbb3c87b8e87602150ce32fd0fda1d692b6215e91d620f9b583a7ff12019NoteLace-linux-x86_64.AppImage
  8. 2026-05-29v0.1.22

    Opt-in end-to-end encryption — and images on published notes

    The big one: opt-in end-to-end encryption for your notes. Turn it on in Settings → Security and NoteLace encrypts every note — text and images alike — on your device before it's written to disk or synced. Your sync server only ever stores ciphertext, and the keys never leave your machine, so nobody who can read the server — me included — can read your notes. It's off by default and entirely your call: nothing changes unless you switch it on, and turning it back off decrypts everything to normal.

    You choose a passphrase when you enable it, and NoteLace hands you a 24-word recovery phrase as your backup — the only way back in if you forget the passphrase, so write it down (you can view it again any time under Settings → Security). On a device you've already unlocked, your notes open silently the next time you launch; the passphrase prompt only shows up on a new device or after you sign out.

    Also in this release: when you publish a note to the web, its images now come with it. Before, a shared page showed everything except the pictures — images live in your local store, which the public page can't reach, so they came out blank. Now each image is bundled into the page when you publish, so the link you share looks like your note. Add or swap an image and hit Update to refresh the public copy; if a note's images push it over the publish size limit you get a clear message instead of a silent failure.

    • Opt-in end-to-end encryption (Settings → Security): notes and their images are encrypted on your device before they are stored or synced — the sync server only ever sees ciphertext.
    • Unlock with a passphrase; a 24-word recovery phrase is your backup, viewable again later in Settings. A device you have already unlocked opens silently after the first time.
    • Encryption is off by default and reversible — switch it off to decrypt everything back.
    • Published notes now include their images, embedded into the page when you publish (re-publish to refresh; a clear message if a note exceeds the publish size limit).

    SHA-256 — verify with sha256sum <file> on macOS / Linux, Get-FileHash <file> on Windows.

    • 7047be657daa17a5d29ac58a1c9fc2f4e0727cd4d53f71690b5c37a762b2c74bNoteLace-mac-arm64.dmg
    • 48e2bf63a16865eb49f29508a525a0b4a1a0a6215b5cbb132ea864b74546c2b5NoteLace-mac-x64.dmg
    • 2ca5010d0aa997aeaa82b426b6401017003089aad0f1cd36b0fee3760ca671c7NoteLace-windows-x64.exe
    • a984cf21a9888415ac26add95d25e919a1d325466374cf117969511d84c6fd68NoteLace-linux-x86_64.AppImage
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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 — 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
Changelog — NoteLace