Repository navigation
Releases: StrafeChat/desktop
Release list
Strafe Desktop v1.4.0
Linux: voice and video finally work
The Linux app now runs on Chromium instead of WebKitGTK. WebKitGTK has no WebRTC engine that can carry an end-to-end encrypted call, and the one we built ourselves fell short: you could not hear anyone, people who joined after you were silent with a black tile, the camera stopped after a frame, and screen sharing could not start. On Chromium all of that works, still end-to-end encrypted and never sent in the clear. Details: docs/linux-voice.md.
If you use Strafe on Linux:
- Installed copies update themselves as usual. The
.deband.rpmask for your password to install. - Your accounts and settings come along, and you stay signed in.
- Once, after the update, enter your recovery code to unlock your encrypted message history again: the new engine cannot read the old one's storage. Without a recovery code, older encrypted messages stay unreadable on this device; new ones are fine.
- Screen sharing on X11 now has its own picker of screens and windows. On Wayland your desktop asks, as before.
For everyone:
- Starting Strafe without a network (at login, before the Wi-Fi connects) no longer signs you out.
- "Waiting for encryption keys" no longer sticks around when the keys already arrived.
- The app no longer loads twice when it starts.
Windows and macOS keep their native app; only the fixes above change there.
Strafe Desktop v1.3.2
Reload during a call and you can still hear everyone
Calls hand out an encryption key whenever the people in the room change, and "the people in
the room" was counted by account. Refresh the page or restart the app mid-call and you came
back as the same account on a new session, so nobody sent you a key: you sat on "waiting for
encryption keys", unable to hear anyone already in the call, until somebody else happened to
join or leave. Membership is now counted per session, so a key reaches you as soon as you are
back.
Also in 1.3.x, for Linux: calls carry audio at last. The bundled web engine needed six
fixes before a call could send anything — the largest being WebRTC encoded transforms, which
WebKitGTK has never implemented, so the end-to-end encryption calls rely on silently did
nothing and desktop and browser threw each other's audio away — and the app now carries the
crypto modules SRTP loads at runtime, without which it could not encrypt a single packet. The
microphone, speaker and camera pickers are populated too, and the microphone goes through the
same echo cancellation, noise suppression and gain control a browser applies.
Calls stay end-to-end encrypted, as on the web.
Strafe Desktop v1.3.1
Voice on Linux now carries audio
Calls on the Linux app connected, showed everyone in the channel, and then carried nothing.
That is fixed, along with the empty device pickers.
Calls work. Six separate faults in the bundled web engine had to be fixed, each hiding the
next. The biggest: WebKitGTK never implemented WebRTC encoded transforms — they are empty stubs
in the current release too — so the end-to-end encryption the call relies on silently did
nothing, and desktop and browser each threw the other's audio away. They are implemented in the
engine this app ships. On top of that a sender now sends with the stream id it announced (the
server was dropping every packet it received), a codec keeps one payload type for the whole
call, a published track is matched to the right media section and sent through that section's
own transceiver, and a source no longer starts before it is connected. The app also carries the
crypto modules SRTP loads at runtime, without which it could not encrypt a single packet.
Microphone, speakers and camera. The engine was hiding speakers behind a preference only
Apple's ports turn on, and the stack had no camera plugin at all, so the pickers in Voice &
Video came up empty. All devices are listed now, a camera plugged in later shows up, and the
microphone goes through the same processing a browser applies: echo cancellation, noise
suppression and automatic gain control.
Calls stay end-to-end encrypted, as on the web.
Nothing changes on Windows or macOS.
Strafe Desktop v1.2.0
Installers for Windows, macOS and Linux are below; installed copies update themselves.
Voice and video now work on Linux
Calls used to fail before they began in the Linux app, because no distribution builds its web engine with WebRTC and the AppImage carries whatever the build machine had. This release bundles an engine built for the job: WebKitGTK with WebRTC, a current GStreamer, and two source patches of our own. Nothing changes for Windows and macOS, where calls already worked.
Verified on this build against a live server: the app joins a voice room, publishes its microphone, hears and is heard by a second participant, and stays up when people come and go.
Also in this release
- The app answers the web engine's microphone and camera requests, so a call can actually open the microphone on Linux.
- "Playing Strafe" on your Discord profile now reads "Securely chatting with other Strafers!" with the instance you are signed in to beneath it, and "in a voice call" during calls.
- Encrypted messages: when this device's encryption store cannot be opened, the app says so and offers a reset instead of leaving a blank safety number and a backup stuck on "checking". That happened after switching between builds with different web engines.
Files
- Windows:
Strafe_1.2.0_x64-setup.exe(installer) orStrafe_1.2.0_x64_en-US.msi - macOS:
Strafe_1.2.0_aarch64.dmg(Apple Silicon) orStrafe_1.2.0_x64.dmg(Intel) - Linux:
Strafe_1.2.0_amd64.AppImage,Strafe_1.2.0_amd64.deborStrafe-1.2.0-1.x86_64.rpm
The .sig files and latest.json are what the in-app updater reads.
Strafe Desktop v1.1.1
Installers for Windows, macOS and Linux are below; installed copies update themselves.
Fixed
- Encrypted messages unusable after switching builds on Linux. A profile last used by a build with a newer WebKitGTK (for example a locally built AppImage) could not be opened by this build's bundled engine: the safety number stayed blank, the backup status never finished "checking", the restore prompt never came and private messages could not be read. The app now says what happened and offers Reset encryption: it restarts, clears the unusable store, gives this device a fresh encryption identity and asks for your recovery code to bring your history back. Every account signed in on that device goes through the same restore.
Changed
- The Discord activity now reads "Securely chatting with other Strafers!" with the instance you are signed in to beneath it (and "in a voice call" during calls).
Files
- Windows:
Strafe_1.1.1_x64-setup.exe(installer) orStrafe_1.1.1_x64_en-US.msi - macOS:
Strafe_1.1.1_aarch64.dmg(Apple Silicon) orStrafe_1.1.1_x64.dmg(Intel) - Linux:
Strafe_1.1.1_amd64.AppImage,Strafe_1.1.1_amd64.deborStrafe-1.1.1-1.x86_64.rpm(voice and video calls are not available in the Linux app yet; use the web app for calls)
The .sig files and latest.json are what the in-app updater reads.
Strafe Desktop v1.1.0
Installers for Windows, macOS and Linux are below; installed copies update themselves.
What's new
- "Playing Strafe" on Discord. While the app is open, your Discord profile shows Strafe as your activity, with "In a voice call" and a timer during calls. Discord never learns which instance, space or room you are in, and a Strafe hidden in the tray is not shown as playing. Turn it off under Settings → Desktop → Discord.
- The download page at strafe.chat/download now lists every installer from the newest release.
Files
- Windows:
Strafe_1.1.0_x64-setup.exe(installer) orStrafe_1.1.0_x64_en-US.msi - macOS:
Strafe_1.1.0_aarch64.dmg(Apple Silicon) orStrafe_1.1.0_x64.dmg(Intel) - Linux:
Strafe_1.1.0_amd64.AppImage,Strafe_1.1.0_amd64.deborStrafe-1.1.0-1.x86_64.rpm(voice and video calls are not available in the Linux app yet; use the web app for calls)
The .sig files and latest.json are what the in-app updater reads.
Strafe Desktop v1.0.0
Installers for Windows, macOS and Linux are below. Installed copies update themselves.