Memry v2026-08-06
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