Memo v4.5.0 — Release Notes
September 2026 · Download Memo now has a face — a small animated desktop character that shows what Memo is actually doing, in two selectable looks. Code Mode also grows a gear shift — Plan, Auto, and Build — plus a couple of security fixes and a round of reliability work.
Big Feature: The Desktop Mascot
Memo now has a face — a small animated character that lives on your desktop, separate from the chat window, and shows what Memo is actually doing: thinking, writing, running a tool, or just idling and waiting for you.
A real second window, not a second app
Turn it on from Settings or the tray and a small, always-on-top character appears, free to drag anywhere on screen. It went through a real architectural journey to get here: the first version launched as a genuinely separate process (a second Memo binary) — it worked, but doubled memory and felt bolted on. It's a true second window inside the same running app now, sharing the same process, same state, same lifecycle.
It knows what Memo is doing, in real time
Every agent tool call, every plain chat reply, every task-loop turn — whatever channel it comes through (chat, WhatsApp, Telegram, a task list) — feeds one app-wide activity signal the mascot polls. Thinking, writing, running a specific tool, generating a reply: its pose changes with it, live.
A plain-language status bubble
Below the character, a small bubble now spells out what's happening — "Thinking…", "Writing…", "Running search_web…" — never the model's actual reply text, just a plain status. And when a turn finishes, the mascot throws its arms up and the bubble says "Completed!" for a couple of seconds before settling back to idle — a moment that used to not exist at all (a finished turn either went straight back to idle with zero acknowledgment, or an agent turn lingered in "generating" for up to 12 seconds after it was actually done).
Idle doesn't mean frozen
Left alone, the character isn't just standing there — it blinks, breathes, and now throws in an occasional random wave, hop, or little sway at unpredictable intervals, so it reads as alive instead of paused.
Actually always-on-top, and click-through everywhere else
Getting the character to genuinely stay above every other window took solving a real Wayland limitation — Wayland compositors deliberately refuse to let an app force itself on top (the same security reasoning that blocks focus-stealing), so this needed forcing the whole app onto XWayland to get a mechanism that actually works. The character's click/drag zone is also shaped to match its real silhouette now instead of the square bounding box around it — the transparent margin around the character no longer swallows clicks meant for whatever's behind it.
Two looks — pick the one you like
The mascot now comes in two skins, chosen from Settings > General with a live preview of each: the original warm, hand-drawn creature, or a brand-new blue-navy pixel-art robot. Both run on the exact same animation system — same moods, same idle flourishes — just a different look.
It talks back in Live Mode too
When Memo is speaking to you in a Live Mode conversation, the mascot's mouth genuinely opens and closes in time, with a small sound-wave flourish and a "Speaking…" bubble — instead of just sitting in its normal pose while you're mid-conversation with it by voice. Scoped deliberately to speaking only: neither Google Live's nor OpenAI Realtime's client currently surfaces a real "listening" signal from the provider, so none was invented for it.
New Feature: Code Mode gets three gears — Plan, Auto, Build
Code Mode used to be a single on/off switch. It's now three distinct presets, cycled with Ctrl+Tab in the message box (or a tap on the chip in the status bar):
- Plan investigates the codebase and writes a concrete, step-by-step plan — it doesn't touch a single file. The plan is saved to disk, not lost in the chat scroll, and once it's ready Memo asks in plain chat whether to move on to Build or Auto.
- Auto is today's familiar Code Mode — file edits still go through a quick confirm.
- Build is the fast lane: file edits and commands run without waiting, for when you've already reviewed the plan and just want it done.
If the global auto-permission toggle is already on when a plan finishes, Memo skips the question and moves straight into Build, continuing the work in the same reply instead of waiting for you to answer.
Each mode has its own system prompt, and — like Memo's main system prompt — you can rewrite any of the three from Settings if the defaults don't fit how you work.
Security fixes
The local developer API's OpenAI-compatible endpoints now require a key too
v4.4.0 closed this gap for the Anthropic-compatible endpoint; this release closes the same gap for its two OpenAI-compatible siblings (GET /v1/models, POST /v1/chat/completions). With "Require API Key" left off (its default) and remote access on, either endpoint could be reached by anything else able to reach the port — no credential at all, using your configured provider for free. Both now enforce the key for any caller that isn't genuinely on this machine.
Imported skills no longer turn themselves on
Memo still automatically picks up skills from other tools' skill folders (Claude Code's, for instance) — that part hasn't changed. What has: a newly-discovered skill used to activate itself the instant it was found, handing it full system-prompt authority over whatever it says to do, sight unseen. It's still discovered and copied in the same way, but now waits for you to turn it on — same as a skill you install by hand already required.
Live Mode: clearer errors when something's wrong
- A Live Mode session that couldn't start a real voice engine used to fall back to hearing your own voice echoed back, with zero explanation. It now tells you why — no engine selected, the engine's config incomplete, or the background chat session failing to open.
- Live Mode now refreshes its memory context mid-session, not just once at the start — so a long voice conversation can still recall something you mentioned partway through, the same way text chat already does.
- Fetching an engine's model list ("Fetch Models" in Settings > Live Mode) used to show a useless generic error on any real failure — a bad API key, a rate limit, a network hiccup — instead of what actually went wrong. It now shows the real reason.
Reliability pass: friendlier errors, quieter failures made visible
- Roughly twenty screens across Settings and the Developer tab used to show a dead error message with no way to recover short of closing and reopening — they all get a real retry button now.
- Raw technical exception text that used to leak into chat and task views has been routed through Memo's friendly-error translation across more than a dozen files.
- Ten previously-silent empty catch blocks in the frontend now at least log what they swallowed, instead of failing invisibly.
- A real end-to-end test layer now drives the actual app — real HTTP server, real SSE streaming, real permission round-trips — against a scripted fake provider, closing the "unit tests use fakes everywhere" gap for the streaming, agent, and task-loop paths that mattered most.
- A wall of avatar-lookup 404s in the Model Store's Discover tab (harmless — it always fell back to a letter avatar — but noisy) turned out to be a stale HuggingFace API path; fixed, and a plain "this author isn't an org" 404 no longer gets logged as if it were a real failure.
Thank you for using Memo — github.com/BugraAkdemir/memo