MurMur is a young project, and it behaves like one: sometimes things break, we notice, and we fix them. This post is a plain devlog about a batch of recent fixes — what the problem was and what we changed. No version numbers, no roadmap promises, just what shipped.
The most annoying bug we had: if you sent a message while offline or while the connection was flaky, that message could sit in the outbox and never leave. It looked sent on your side. The other person never saw it. For a messenger, that's about the worst failure mode there is, because both sides think the conversation is fine.
We rebuilt the outbox path. Now anything you send while offline is kept locally and automatically re-sent the moment you're back online. The delivery logic no longer assumes you had a stable connection when you hit "send" — because on phones, you often don't. This also covers the common case of writing messages in the metro or on a train and forgetting about them until later.
MurMur has end-to-end encrypted calls, but there was a gap: if you weren't in the app when someone called, the call simply evaporated. No trace, no notification. You'd find out about the attempt only if the person texted you afterwards.
Now a missed call triggers a push notification. You see who tried to reach you and can call back from the notification itself. This works through the same encrypted-notification pipeline as regular messages — the relay that delivers pushes doesn't get to read your conversations, and it doesn't learn anything new about calls either beyond what's needed to route the notification.
Small thing, big quality-of-life difference: you can now switch between front and back camera mid-call without hanging up. Before, showing something with the rear camera meant ending the call and starting a new one. That's fixed.
Another bug from the unstable-connection family: after a reconnect, some photos and text messages could appear twice — or more. The sender's client wasn't always sure whether a previous attempt went through, so it retried, and the receiving side didn't recognize the retry as the same message.
We added deduplication on reconnect. The client now tracks what it has already received, and repeated deliveries of the same photo or text are collapsed into one. Your chat history stays the way it should: one message is one message, even if the network dropped three times in the middle.
MurMur is a PWA — it installs on iPhone and Android straight from the browser, without the App Store or Google Play. That has a nice side effect for updates: there's nothing to reinstall. When we ship a fix, the app picks it up from the web on its own, like a regular website. Next time you open MurMur, you're on the current version.
For a small team, this matters a lot. We can fix a bug and have it reach everyone within a day, instead of waiting days for store review on two platforms. It also means we can be honest about the trade-off: the app depends on your browser. If the browser is outdated or the vendor breaks something in PWA support, that affects us too. That's a limitation we accept and keep an eye on.
MurMur is open source, young, and has a small audience. There has been no independent security audit. Identity in MurMur is a cryptographic key (an npub) — there's no phone number or email to register with, which also means: lose the key, lose the account. There's no SMS recovery, by design, because there's nothing to send an SMS to. These are real limitations, not fine print.
Why do we write changelogs like this one? Partly because a small project earns trust by being specific about what changed — and about what can go wrong. If we ship a fix for a delivery bug, that means the delivery bug existed. We'd rather say so.
It stays in the outbox and is delivered automatically once you're back online. You don't need to resend it or keep the chat open.
They show who called you. Calls and messages are end-to-end encrypted, and the relay can't read your conversations.
You don't have to do anything. As a PWA installed from the browser, MurMur updates itself from the web — no App Store, no Google Play, no reinstalling.
You lose access to the account. There is no SMS or email recovery, because registration doesn't involve a phone number or email. Back up your key carefully.
MurMur is free and open source — try it at murmurchat.org or read the code on GitHub.