New Features
- π¨ Spatial canvas β arrange notes, tasks, and calendar events on an infinite Excalidraw board, now on by default for everyone.
- ποΈ Canvases live in your vault β boards are saved as plain .excalidraw files you can open with any compatible app.
- π±οΈ Drag onto the canvas β drop notes, tasks, and events straight onto a board, including several at once.
- π Add card picker β search your notes, tasks, and events or create a note in place, with results rendered the way the rest of the app shows them.
- βοΈ Live canvas cards β cards show fully rendered content with images, checkboxes, and formatting, and you can double-click to edit in place.
- π€ Agents can draw β the assistant can add shapes, text, bound arrows, and frames to your canvases.
- π·οΈ Tag categories and tag hub β organize tags into categories and browse everything on a dedicated tag page.
- π Relation properties β link a note to other notes, files, tasks, and events through a property.
- π Project property for notes β assign a note to a project from its properties, and see it as a clickable project pill in folder views.
- π Project on events β pick a project for a calendar event directly in the event form.
- π Template authoring β build and edit templates on the full note surface.
- βοΈ Templates sync β your custom templates now follow you across devices.
- π Bookmarks and reminders sync β dismissing or snoozing a reminder on one device stops it firing on the others.
- ποΈ Chrome-style tab bar β tabs compress to icons and then scroll instead of shrinking away.
- πΌοΈ Obsidian image embeds β wiki-style image embeds work in both import and the editor.
- π F1 for docs β press F1 or use Help β Documentation to open the online docs.
Improvements
- π Calendar privacy controls β agent access to your Google Calendar events is now gated on your explicit consent and kept out of AI surfaces.
- β¬οΈ Smarter updates β updates are checked more often, can download silently if you opt in, and show release notes in their own tab.
- π Complete translations β all 32 languages are now fully translated, with long-standing wording defects fixed.
- π¬ Better feedback flow β the in-app feedback form shows exactly what it sends before you send it.
- π Faster vault opening β embeddings are built in the background so opening a vault no longer hangs.
- π More tolerant indexing β notes with broken YAML frontmatter or no content are still indexed and searchable.
- π§Ή Cleaner uninstall β
brew uninstall --zapnow removes app data, settings, caches, and logs while leaving your vault untouched. - π¦ Tidier app data β settings, logs, and stored data moved to a
memrynotefolder and migrate automatically on first launch. - π― Consistent icon pickers β note, folder, and project icon pickers now use the same picker and stay on screen.
Fixes
- βοΈ Notes no longer sync as "Untitled" β note titles, embedded images, and PDFs now reach your other devices after an edit.
- π Attachments survive sync β note attachments now transfer correctly between devices, even when sync is starting up.
- π Sync recovers on its own β hung requests, retry budgets, and dropped updates no longer leave sync stale until you restart the app.
- β Tasks reappear after project deletion β tasks created or edited elsewhere no longer go missing or re-download endlessly.
- π New-device setup β the vault download step no longer gets stuck when linking a new device.
- π₯ Inbox conversion β turning an inbox item into a task no longer fails when sync is unavailable, and filed files open in the viewer with their tags intact.
- πΌοΈ Images render again β note-relative and Obsidian-style image paths resolve against your vault instead of showing as broken, and stay portable when you save.
- π PDF page navigation β multi-page PDFs embedded in a note can be paged through again.
- π Import brings media along β markdown import now carries images and attachments from shared media folders.
- π¬ Comment fixes β comments stay put through a resync, the review flyout stays open while editing, the @-mention picker is no longer clipped, and image and PDF attachments open in-app.
- π Calendar popover β the quick-create popover stays inside the window, and promoting an event asks for confirmation when agent access is off.
- π·οΈ Live tag sidebar β the sidebar updates immediately when a task's tags change.
- βοΈ Renaming a note β renaming no longer briefly shows the note as deleted in canvas cards and other views.
- π― Card placement β cards from the Add card picker tile out from the centre of your view instead of stacking, and the picker dims the canvas behind it.
- π Add card search β the picker finds every calendar event regardless of date, matches accented titles, and no longer hides notes when files share the search term.
- π Shape library β the Excalidraw shape library persists in your vault and file import works again.
- π Sign-in stability β a dead session no longer triggers a storm of refresh attempts, and sync connections renew in place instead of reconnecting.
- πͺ Cleaner quit β background embedding work now stops on quit so updates can install.
Changelog
Full Changelog: v2026-07-19.2...v2026-08-06
#889 ci(vercel): deploy landing and docs from main only, via GitHub Actions @h4yfans
#974 feat(telemetry): full-app PostHog coverage β crash detection, silent-error capture, new events @h4yfans
#949 feat(mcp): agents can draw on canvases β shapes, text, bound arrows, frames @h4yfans
#950 feat(landing): announce page changes to IndexNow @h4yfans
#948 feat(tabs): Chrome-style tab bar β compress to icon-only, then scroll @h4yfans
#946 feat(canvas): canvases are plain .excalidraw files in the vault @h4yfans
#942 feat(properties): relation property type β link notes, files, tasks and events @h4yfans
#943 feat(projects): assign notes to projects through a project property @h4yfans
#941 feat(templates): author templates on the note surface @h4yfans
#939 feat(calendar): assign a project to an event from the event form @h4yfans
#938 feat(sync): sync custom templates across devices @h4yfans
#934 feat(canvas): default the spatialCanvas flag on @h4yfans
#923 feat(agent-mcp): expose tag categories to MCP @h4yfans
#928 test(mcp): cover canvas handles and the features flag reader @h4yfans
#927 feat(mcp): canvas coverage β read tools, item add/remove, write safety (#916) @h4yfans
#925 feat(agent-mcp): expose the project hub link layer @h4yfans
#926 feat(calendar): gate agent access to Google Calendar events on user consent @h4yfans
#922 feat(mcp): close pre-existing agent allowlist gaps @h4yfans
#914 feat(sync): sync bookmarks and reminders across devices @h4yfans
#901 feat(tags): tag categories, tag hub, and single-tag page @h4yfans
#906 feat(markdown): support obsidian image embeds in import and the editor @h4yfans
#899 feat(canvas): render cards as live content, remove preview mode @h4yfans
#894 feat(canvas): drag notes, tasks and events onto a canvas @h4yfans
#892 feat(canvas): render add-card results the way the app renders its entities @h4yfans
#890 feat(canvas): reach every calendar event from the Add card picker (#869) @h4yfans
#866 feat(telemetry): make PostHog the single observability sink @h4yfans
#868 feat(canvas): Add card picker for task and calendar-event cards @h4yfans
#855 feat(canvas): M7 rollout β opt-in hardening, telemetry, and docs @h4yfans
#849 feat(startup): log a single launch phase timeline per launch (#843) @h4yfans
#834 feat(feedback): MemryNote branding, verified plan in the email, in-app disclosure @h4yfans
#833 feat(canvas): M6 β in-place live editing @h4yfans
#831 feat(menu): F1 opens online docs; fix HelpβDocumentation URL @h4yfans
#818 feat(updater): short-interval polling, silent opt-in download, read-only release-notes tab @h4yfans
#815 feat(canvas): M5 β asset externalization (memry-file:// + R2, dedup, GC) @h4yfans
#811 feat(canvas): M4 β E2E-encrypted cross-device sync of the canvas record type @h4yfans
#785 feat(canvas): spatial canvas (Excalidraw) M0βM3 β local-only, default-OFF @h4yfans
#973 fix(inbox): don't fail task conversion when sync enqueue throws @h4yfans
#971 fix(calendar): keep the quick-create popover inside the window @h4yfans
#969 fix(sync): spend the push retry budget across cycles, not inside one push() @h4yfans
#970 fix(sync): recover journal metadata updates raised while the sync runtime is down @h4yfans
#962 fix(sync): stop shipping the journal date in delete tombstones @h4yfans
#963 fix(sync): keep the attachment note push when the sync runtime is down @h4yfans
#947 fix(sync): stop notes:updated from throwing once per pulled note @h4yfans
#945 fix(folder-view): project property is a read-only pill that opens the project @h4yfans
#940 fix(linking): unblock the vault download step on a new device @h4yfans
#936 i18n: complete all 32 locales and fix the defects shipping in every language @h4yfans
#935 fix(main): route window fan-out sends through guarded broadcastToAllWindows @h4yfans
#932 fix(sync): skip destroyed windows in renderer emit fan-out @h4yfans
#933 fix(agent-mcp): drop duplicated canvas tool schemas @h4yfans
#931 fix(sync): recover from hung sync requests instead of staying stale until restart @h4yfans
#930 fix(calendar): confirm promotion while agent access to Google events is off @h4yfans
#924 fix(agent-mcp): expose note file type to MCP search and read @h4yfans
#903 fix(import): resolve markdown assets against the selected folder @h4yfans
#912 fix(notes): keep obsidian image embeds portable when a note is saved @h4yfans
#910 fix(editor): await the vault path instead of racing the hook that loads it @h4yfans
#908 fix(editor): treat backslashes as separators when resolving image paths @h4yfans
#907 fix(editor): render note-relative image paths against the vault @h4yfans
#902 fix(notes): restore page navigation on inline PDF embeds @h4yfans
#904 fix(sync): stop losing note metadata pushes that made notes sync as "Untitled" @h4yfans
#898 fix(cask): zap real @Memry userData and updater caches @h4yfans
#895 fix(agent): isolate Google Calendar data from AI surfaces (Limited Use) @h4yfans
#896 fix(sync): make note attachments survive cross-device sync @h4yfans
#897 feat(app): rename the runtime identity to memrynote (logs, userData, Safe Storage) with legacy migration @h4yfans
#891 fix(canvas): persist the Excalidraw shape library in the vault and unblock file import @h4yfans
#888 fix(canvas): tile added cards instead of stacking them on the viewport centre (#871) @h4yfans
#887 fix(canvas): filter note file types inside quick search so the Add card cap counts placeable rows @h4yfans
#885 fix(canvas): give the Add card picker a backdrop scrim (#872) @h4yfans
#884 fix(projections): give each projector its own queue (#877) @h4yfans
#867 fix(e2e): purge the keychain items each e2e run mints @h4yfans
#881 fix(build): stop failing builds on unactivated certificate pins (#876) @h4yfans
#880 fix(husky): resolve @{u} with --verify so the pre-push origin/main fallback is reachable @h4yfans
#857 fix(tests): stub listTasks in the PROJECT_DELETE handler test @h4yfans
#856 fix(logging): drop CertPin/CryptoMemLock/embeddings noise from the warn stream @h4yfans
#835 fix(release): inject GOOGLE_CALENDAR_CLIENT_SECRET in all publish build jobs @h4yfans
#847 fix(updater): log the phase, code and message behind update failures (#842) @h4yfans
#850 fix(auth): stop refresh storm on a dead refresh token @h4yfans
#848 fix(telemetry): harden error normalization; recover window_error class + location @h4yfans
#851 fix(sync): renew WS token in place instead of expiry-driven reconnect churn @h4yfans
#852 fix(crdt): stop blaming the store when the preflight child never starts @h4yfans
#853 fix(indexer): tolerate broken YAML frontmatter, log errno for unreadable files (#844) @h4yfans
#854 fix(sync): tombstone cascade-deleted tasks, repair FK orphans on pull (#837) @h4yfans
#832 fix(tasks): refresh tag sidebar live when a task tag changes @h4yfans
#828 fix(icon-picker): keep note/folder emoji picker on-screen via Radix Popover @h4yfans
#820 fix(updater): stop embeddings utility process on quit (#805) @h4yfans
#829 fix(comments): open image/PDF attachments in-app instead of trapping the app @h4yfans
#827 fix(extension): request Firefox host permission before first clip @h4yfans
#821 fix(vault): defer embeddings out of the index pass so vault-open never hangs (#803) @h4yfans
#830 fix(tasks): migrate project icon picker to shared emoji/icon picker (#802) @h4yfans
#826 fix(inbox): open filed binaries in the file viewer + preserve tags (#800) @h4yfans
#825 fix(comments): unclip @-mention picker and open it from the "@" button @h4yfans
#823 fix(comments): keep just-added comment through stale resync during save debounce @h4yfans
#822 fix(comments): keep review flyout open when editing a comment @h4yfans
#816 fix(devex): un-gate contracts vitest suite from root test pipeline @h4yfans
#968 sync: latch the crypto worker bridge off after repeated failures @h4yfans
#967 sync: keep the newest queue row when coalescing a push batch @h4yfans
#966 sync: honour shouldSkip on delete so local-only rows are never tombstoned @h4yfans
#961 sync: unify sync server URL resolution and cover two untested branches @h4yfans
#960 sync: degrade to main-thread crypto when the worker rejects a batch @h4yfans
#955 Sync: backfill coverage and close the data-loss and privacy defects it exposed @h4yfans
#929 docs(mcp): design for canvas MCP coverage (#916) @h4yfans
#915 test(e2e): match the quick-add task field now that it is a textarea @h4yfans
#905 Project page hub redesign @h4yfans
#911 test(editor): cover the vault-path race the image resolver hit @h4yfans
#893 test(canvas): stub useHandleLibrary in the CanvasEditor Excalidraw mock @h4yfans
#812 Projects all-in-one hub β Phase 1: link notes to projects @h4yfans
#886 refactor(canvas): single entityKey derivation (#873) @h4yfans
#793 test(desktop): e2e diagnostic report consent + opted-out no-send @h4yfans