It’s been about a month since the move to MLS for voice. That post went deep on one topic. This one is the opposite: a quick tour of what we shipped between then and now, written for the people who’ll actually use Voidcom.
Quite a lot, as it turns out.
One password instead of two
If you used Voidcom before this month, you had two passwords. One to log in. A second one to unlock your private messages. We had reasons for that (the technical short version is “the server is not allowed to see the one that unlocks your messages, so it has to be separate”), but in practice it confused everyone, ourselves included.
So we collapsed it into one.
A single password now does both jobs. The server still never sees the one that unlocks your messages; that’s the whole point of end-to-end encryption. But you no longer have to remember which password does what. If you forget it, a recovery phrase (twelve words, the same kind crypto wallets use) restores your account. We can’t do it for you, since that would mean we held a copy, which we don’t. The phrase gives you a way back in that doesn’t require trusting us.
For people who want extra paranoia, there’s an optional second password you can layer on top of your login: a separate gate that has to be entered before any of your encrypted messages decrypt, even if someone has your login credentials. Most people won’t need it. The people who do, really do.
Existing users will see a one-time prompt at their next login that walks them through generating a recovery phrase. Write it down somewhere safe.
Voidcom on your phone and your Mac
When we wrote the MLS post a month ago, Voidcom ran on Windows and Linux. macOS technically built but didn’t really work. iOS didn’t exist. That’s no longer true.
- macOS now runs properly, past the splash screen (yes, that was a real bug for a while), with native Apple Silicon and Intel support and full screen sharing. On an M-series Mac, the new hardware-accelerated video means screen sharing costs your CPU almost nothing.
- iOS is built and running. The interface is native: proper iOS layouts, not a desktop UI shrunk down. Incoming voice calls ring through the system call screen the same way a phone call would.
- Android is close behind. We had the foundations from before; this month was about polishing the mobile experience.
These aren’t in the beta channel yet. Apple’s TestFlight loop and Google’s Play Store review take time, and we’d rather spend a couple of weeks getting those right than ship something half-broken. They’re imminent, not shipped.
Push notifications
A messaging app where messages don’t reach your phone isn’t really a messaging app. We knew. We hadn’t solved it. Now we have.
Push notifications work on iPhone, iPad, Android, and Mac. Incoming voice calls ring through your phone’s normal call screen. You can answer them from the lock screen, decline them like any other call, and they show up in your recent calls list.
For end-to-end encrypted DMs, the notification carries no message text. Your phone decrypts the content locally when you open the app, so those previews look intentionally sparse. For non-encrypted DMs and channel mentions (where our server already holds the text to route it), the push includes a short preview plus who sent it and where. That’s the privacy property doing its job where it applies.
Chat got a lot better
This is where most people will notice the difference.
Threads. Use “Create Thread” on any message to pull a side conversation out of the main channel. Long tangents stop drowning the feed. Works the way you’d expect from any other modern chat app.
Pinned messages. Pin the important stuff to a channel and jump straight to it from a popover. The server pins by ID and never sees the content, so this works in your end-to-end encrypted DMs too.
Server folders and favorites. Group your servers into folders in the sidebar. Star the ones you use every day. Drag servers between folders.
Real send status. Messages show whether they’re sending, sent, or failed, and the retry path won’t double-send if your network blips at the wrong moment.
Paste-to-attach. Copy an image or a file, paste it into the message box. It works now.
Reactions that stick. Reactions used to briefly disappear and pop back in when you opened a conversation. They no longer do.
Outgoing friend requests. You can finally see, and cancel, the friend requests you sent. This was an embarrassing omission and it’s fixed.
Bios. A short personal description on your profile, showing under your name. Simple, and people had been asking.
There’s also a long tail of small fixes: channel collapse, thread send, the dialog box that used to grow as you typed, the message toolbar that wouldn’t light up on hover. None deserves its own paragraph. Together they’re why the app feels noticeably tighter than four weeks ago.
Voice got better too
Last month’s headline was end-to-end encrypted voice. This month we built on top of it.
Multi-stream pop-out. In a voice call, you can grab a specific person’s screen share or video and pop it out into its own window. Useful if you want their share on a second monitor while the call UI stays on the first.
Stage channels. Large voice rooms (above 99 participants) are a different type of channel called “Stage”. We built the backend last month but they weren’t creatable from the app. Now they are, clearly marked as a different security tier than normal voice channels, as described in the MLS post.
Unmuting actually unmutes. If you’d muted yourself and then muted the whole room, hitting unmute on the room used to silently leave your mic muted. It now does what you’d expect.
Calls survive idle home Wi-Fi. Long voice sessions on residential connections used to silently disconnect after a few minutes when the network decided the connection had gone idle. They don’t anymore.
Settings, theming, and small joys
The settings menu had grown organically and looked it. We rebuilt it. Categories make sense now and transitions are unified. The appearance section gained custom accent-color sliders, so you can pick a color that isn’t one of our six presets: slide hue, saturation, and lightness until it’s the exact shade you want.
We also added “trust this device” for two-factor authentication. If you’ve done 2FA on this device recently, we won’t ask again for 30 days. Industry standard; somehow we’d missed it.
What we’re not pretending
A few caveats:
- iOS, macOS, and Android aren’t in the beta channel yet. They build, they run, they look right. Store distribution is the last step. If you’re on Apple platforms or Android, hang on a bit longer.
- Push notifications need real-world testing. They work in our testing. “Our testing” is a much smaller sample than thousands of people in airports with bad LTE. We’ll find edge cases.
- The single-password change touches everyone. We’ve tested the migration heavily, but a change that touches every existing user’s keys is the kind of thing where the rare edge cases show up after shipping. Keep your recovery phrase somewhere safe.
What’s next
Roughly in the order we expect them to land:
- iOS beta via TestFlight, Android via Play Store closed testing.
- More server regions. Everything currently runs from a single primary region in Europe. A second region is on the roadmap to bring latency down for people who aren’t near the first one.
- Voice fingerprint UX. Now that voice has per-person identity built in (the bit we explained in the MLS post), we want a way for you to verify it’s really your friend on the other end, the way Signal lets you verify a contact.
- A bot and app SDK. People keep asking. It’s coming, just not next.
If you’ve been waiting for the iOS or Mac build, sign up for the beta; that’s where they’ll appear first. If you’ve been waiting for the bot SDK, sit tight a little longer.
Thanks to everyone in the closed beta giving us feedback. The “this thing crashes when I do X” reports are what turn a working prototype into something people use every day. Keep them coming.