Releases: caaatto/rede
Release list
v2.20.27-beta
Notification toast: reliably anchored bottom-right above the taskbar; removed the accent bar.
v2.20.26-beta
Windows: notifications now show an in-app toast (bottom-right) and the taskbar button flashes until the window is focused. Notifications also fire when the window is unfocused, even with the conversation open.
v2.20.25-beta
Discord-style message wrapping: messages now wrap at the window width instead of a fixed 560px bubble cap (incoming and own messages).
v2.20.24-beta
Message display fix and notification-sound reliability.
Fixes
- Long incoming messages no longer overflow off the right edge: the incoming message row now constrains its width and wraps text properly (with a max bubble width), so you can read long messages without enlarging the window.
- Notification sound: broader set of audio backends is tried (PipeWire, PulseAudio, libcanberra, ALSA, ffplay, mpv, SoX), and a fresh install now pulls in a command-line player so the sound actually plays. Existing installs may need a player installed once (e.g.
alsa-utils/pulseaudio-utils). - Server: fixed a race that could reject the first request right after login with "Not authenticated".
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.23-beta
Notification sound fixes and an incoming-call ringtone.
Highlights
- Message notification sound now plays reliably: it previously only tried one audio backend (paplay) with no fallback, so on systems without it the sound was silent. It now tries several backends (PipeWire, PulseAudio, ALSA, ffplay, SoX) until one works.
- Incoming 1:1 calls now ring: a looping ringtone plays while a call is incoming and stops as soon as you accept, decline, connect, or the call ends. Respects the notification-sound setting.
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.22-beta
Security fixes from an internal review of the recent changes.
Fixes
- Attachments: a malicious sender could claim an arbitrarily large chunk count in a message, causing the receiver to issue a flood of download requests / run out of memory when displaying it. The receiver now rejects implausible chunk counts and bounds the reassembled size.
- Federation: messages fanned out to a node whose connection had just dropped could be lost instead of re-queued. The internal delivery helper now correctly forwards the re-queue information.
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.21-beta
Adds a group voice-call button.
Highlights
- Group voice calls can now be started from the UI: select a group and click the microphone icon in the top-right of the chat header (previously only reachable via the
/callcommand)
Includes everything from v2.20.20-beta (attachment chunking, place ownership transfer, auto metadata-rekey on kick/ban, hourly delivery-token epochs, federation delivery hardening, and terminal-client improvements).
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.20-beta
Follow-up release — closes all outstanding hardening and feature follow-ups.
Highlights
- Large attachments now work: files are split into chunks for upload and reassembled on download, raising the limit from 700 KB to 8 MB (single small attachments stay wire-compatible)
- Place ownership can be transferred to another member (
/ptransfer <place> <user>); the previous owner becomes an admin - Kicking or banning someone from a place you own now automatically rotates the place's encryption key, so the removed member immediately loses access to call keys, metadata, and future messages
- Terminal client gained
kick,rekey, andconfirmcommands, stores keys for newly linked devices, preserves the ratchet on failed sends, and no longer hangs on server errors - Sealed-sender delivery tokens now rotate hourly (down from a 24-hour window), shrinking the value of a stolen token
- Federation: queued messages are deleted only after delivery is confirmed, and a message routed to a node whose connection just dropped is re-queued instead of lost
- Hardening: voice-call control messages are checked to come from an actual call participant and capped in size; behind a reverse proxy the server now trusts the proxy-supplied client address rather than a client-spoofable header
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.19-beta
Functional repair release — group messaging, attachments, and first-contact sessions.
Highlights
- Group and Place messaging actually works between desktop clients now: sender keys are distributed automatically over the encrypted DM channel, and group member lists are kept in sync via signed member-list updates (wire-compatible with the terminal client)
- Attachments are decryptable again: the per-attachment encryption key was being wiped before the message went out, so recipients received an unusable key (regression from v2.18.4)
- First message from someone who hasn't added you back no longer breaks the conversation permanently — the session is established on first contact and the message is stored, with a hint to add the contact and verify the fingerprint
- No more duplicate message bubbles when a contact has a mix of established and new device sessions; messages to contacts with no known devices now trigger device discovery instead of vanishing
- Terminal client:
sendno longer hangs after the first message (sealed-delivery acknowledgements were not recognized), group invites survive session setup, and group key/member bookkeeping matches the desktop client - Server: concurrent first contacts to the same user now receive distinct one-time prekeys (classical and post-quantum); logging out one device no longer shows you offline while another device is still connected; group-call sessions are shared across federation nodes so call encryption keys match regardless of which node a participant lands on
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.
v2.20.18-beta
Security hardening release.
Highlights
- Server signing key is now enforced from the first frame of every session — a server that omits or swaps its key can no longer silently disable transport verification
- Place metadata updates (roles, bans, channels, keys) are authorization-checked: admin-gated, with key rotation and ownership changes restricted to the owner
- Voice calls negotiate SRTP v2: per-direction keys and fully authenticated packet indices (older clients keep working via the legacy mode)
- Post-quantum one-time prekeys are now signed and verified before use
- Attachment cache is bound to the decryption key; attachment size limits now match what the wire can actually deliver (max 700 KB)
- Terminal client: stricter device-key validation, deferred one-time-prekey consumption, certificate re-pin on CA-valid renewals (no more lockout after Let's Encrypt rotation)
Updating
Standalone installs update in-app (login screen shows the update banner). Source clones: git pull.