-
PeerSpeak 0.6.6 — screen shares catch back up
StableCI / check (push) Failing after 5m35sreleased this
2026-07-19 19:57:06 +00:00 | 0 commits to main since this releaseScreen shares that fall behind now catch back up.
Fixed
A screen share that falls behind now catches back up. On a lossy connection —
satellite links being the worst case — a share could settle several seconds
behind the host and simply stay there for the rest of the call. The viewer now
notices a deep buffer and plays imperceptibly fast until it is back at the live
edge; the audio stays in tune and in sync while it does.This replaces the
--untimedapproach from 0.6.5, which measurement showed did
not help: it only removed pacing at presentation, while audio kept draining at
1× the sound-card rate, so an accumulated backlog never shrank.Changed
Low latency keeps a tighter viewer buffer. The screen-share cache setting is
a size in megabytes, which at a given bitrate quietly decides how many seconds
behind a viewer can drift — 2 MB turned out to hold about six seconds of a
typical share. Low latency now caps that buffer at 1 MB regardless of the
setting. Smooth still honors the value you choose, since a deep buffer is the
point of that mode.How this was measured
On a
tc netemrig simulating a satellite link (40 ms ±20 ms jitter, 0.5% loss,
a 250 ms/30%-loss handover burst every 15 s), against the same HTTP stream
PixelPass actually serves:standing buffer recovery before ~6 s, permanent none (media/wall 0.9988) buffer cap alone ~2.8 s none cap + catch-up ~2.8 s 11.6% faster than realtime while behind That is roughly 9 s of backlog cleared in 80 s, where previously a viewer that
fell behind stayed behind for the whole call.Not yet confirmed on a real two-machine call — that is the outstanding test.
Compatibility
No wire-protocol change (all planes unchanged), so 0.6.6 interoperates with
0.6.x peers. Existing configs load unchanged.Install
The AppImage needs a Vulkan-capable GPU driver and PipeWire. For screen sharing
it also uses host GStreamer + mpv; on Arch/Artix:sudo pacman -S gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad \ gst-plugins-ugly gst-libav gst-plugin-pipewire mpv xorg-xwininfo libpulseThe
pixelpassscreen-share helper is bundled inside the AppImage.Downloads
-
PeerSpeak 0.6.4 — honest chat sending + hardening
StableCI / check (push) Failing after 3m17sreleased this
2026-07-18 23:16:46 +00:00 | 7 commits to main since this release[0.6.4] — 2026-07-18
Added
- Chat now tells you when a message didn't send. A message that couldn't go
out — because you weren't in a room, or the broadcast failed — is marked
"⚠ Not sent" with a Retry button, instead of sitting in the transcript
looking delivered. A successful send shows nothing (PeerSpeak has no
delivery/read receipts, so anything else would be a false promise). - Fast typing no longer loses messages. When you fire off a quick burst,
messages past the first few are held as "queued…" and sent a moment apart,
matching the rate other people's clients accept. Previously a fast burst could
look sent on your end while some messages silently never reached the room.
Changed
- Tidier music playlist drawer. The slide-out playlist no longer repeats the
play/skip controls already on the player bar, and the track list now grows to
fill the drawer instead of being boxed into a short scroll area, so you can see
more of your playlist at once. - Safer chat under the hood. A round of chat hardening tightened how incoming
messages, display names, links, and file/image attachments are validated and
bounded, so a malformed or hostile message from a peer can't spoof a name,
replay, flood, or run the app out of memory. No change to how normal chat looks
or works.
Fixed
- Burst packet loss no longer splices the wrong audio into the gap. Loss
concealment used Opus in-band FEC even when the next packet to arrive wasn't
the one immediately after the gap, so losing several packets in a row could
briefly play a later frame's audio in the wrong position. FEC now only
reconstructs a gap from its immediate successor packet; larger gaps are
concealed normally. - A failed network restart no longer silently kills the app. Changing the
network mode (or regenerating your identity) rebuilds the connection stack;
if that rebuild failed — rare, but possible when the local socket can't
bind — PeerSpeak kept its window open but silently stopped responding to
every command. It now falls back to your previous network settings and says
so, and only gives up (with a clear error telling you to restart) if even
the fallback fails.
Downloads
- AppImage —
peerspeak-0.6.4-x86_64.AppImage(glibc 2.39; includes the PixelPass screen-sharing helper).
SHA-256:
ecd213710271e69ff337e5e97d36288e9c9549bba26b07e63731cabce84dafaaDownloads
- Chat now tells you when a message didn't send. A message that couldn't go
-
released this
2026-07-06 21:22:52 +00:00 | 25 commits to main since this releaseAdded
- In-app screen-sharing controls. A new Screen sharing section in Settings, plus a per-call quality picker on the Share control. Encode side: quality preset, bitrate, framerate, maximum resolution, maximum viewers, force-software-encode, and extra pixelpass arguments. Playback side: choose mpv or VLC, toggle hardware decoding, pick a buffering posture (low-latency vs. smooth), set the demuxer cache, and pass extra mpv arguments. Stored locally; defaults unchanged, so existing setups keep working.
Fixed
- Shared video no longer freezes on the first frame while audio keeps playing. Hardware decoding now defaults off; forcing
--hwdec=autostalled some viewers' hardware decoder on frame 1. Re-enable it from the new Screen sharing settings if your machine handles it well. - The per-call quality picker is now honored. The inline quality dropdown was being reset to the saved default before a share started, so every share silently used the default quality.
- VLC now respects your playback settings. VLC hardware-decodes by default, so a VLC viewer previously ignored the hardware-decode toggle (and could hit the same frame-1 freeze) and the buffering posture. VLC viewers now map both onto VLC's own options.
All changes are local-only — no wire-protocol change, old configs load unchanged.
Downloads
- AppImage —
peerspeak-0.6.3-x86_64.AppImage(glibc 2.39; bundles the pixelpass helper). Portable, no install. - Arch Linux —
peerspeak-git-0.6.3.r327.g99a4a33-1-x86_64.pkg.tar.zst(sudo pacman -U). Installpixelpass+mpvfor screen sharing. - Debian / Ubuntu —
peerspeak_0.6.3-1_amd64.deb(needs libc6 ≥ 2.39 → Ubuntu 24.04+/Debian 13+). For screen sharing also install the companionpixelpass_0.1.0-1_amd64.deb. - Windows —
peerspeak-0.6.3-setup.exe(Inno Setup installer; single self-contained binary, unsigned → SmartScreen “More info → Run anyway”).
Downloads
-
PeerSpeak 0.6.2
Stablereleased this
2026-07-03 20:07:41 +00:00 | 33 commits to main since this releasePeerSpeak 0.6.2 — wire-compatible with 0.6.0/0.6.1 (gossip v5).
Fixed
- Friends list now reflects status changes without a restart. A presence probe that fails now actively marks the friend offline, so a friend who goes offline, leaves a room, or turns invisible no longer lingers showing a stale "online" / "in a room" status. The auto-refresh interval was also shortened from 60s to 15s.
Added
- Manual "⟳ Rescan" button on the Friends panel that refreshes everyone's presence immediately.
Licensing
- PeerSpeak is now released under the MIT License. Added
LICENSEandTHIRD_PARTY_LICENSES(full dependency manifest plus every referenced license, with notices for the statically bundled Opus codec and the embedded fonts).
Downloads
peerspeak-0.6.2-x86_64.AppImage— Linux, glibc ≥ 2.39 (Debian 13+, Fedora 40+, Arch/Artix and other rolling distros). Bundles thepixelpassscreen-share helper. For screen-share, install the host GStreamer + mpv stack (the app prints the exact package names for your distro if anything is missing).
Downloads
-
PeerSpeak 0.6.0
Stablereleased this
2026-06-28 10:06:30 +00:00 | 78 commits to main since this release0.6.0 — 2026-06-28
Added
- Shared music listening (W22). A new Playlist panel lets you build a personal queue of local audio files and play them on a dedicated music player — Browse to add tracks, play/pause, previous/next, seek, per-track reorder, remove, and a local volume slider, all persisted across sessions.
.plsand.m3uplaylists can be imported (remote and non-audio entries are skipped). - Tune in to a friend's music. Flip "Let others tune in" and peers see your current track under the Public tab; one click on Listen streams it to them. Playback is timeline-synced — play, pause, skip, and seek mirror across everyone with no drift — and the next track is prefetched for gapless transitions. Each listener gets an independent per-source volume, so music sits under voice at whatever level they like; voice chat stays fully audible throughout.
- Standalone Playlist card in the 3-Column layout. The playlist now lives in its own card stacked under the chat, with a draggable divider to resize it and its own scrollbar when space is tight. The other layouts keep the playlist in the Controls panel.
Security
- Shared-music metadata is treated as untrusted: the broadcast track name is sanitized and its size is cap-checked at gossip ingest, fetched bytes are confirmed to be audio before decoding, and only a small descriptor ever rides gossip — track bytes move point-to-point over the existing files plane, one fetch in flight at a time.
Changed
- Wire protocol bump (gossip v5). Shared listening adds presence fields, so 0.6.0 peers cannot share a swarm with 0.5.x peers — everyone in a room must update together.
Downloads
- Shared music listening (W22). A new Playlist panel lets you build a personal queue of local audio files and play them on a dedicated music player — Browse to add tracks, play/pause, previous/next, seek, per-track reorder, remove, and a local volume slider, all persisted across sessions.
-
PeerSpeak 0.5.1
Stablereleased this
2026-06-28 02:57:19 +00:00 | 80 commits to main since this release0.5.1 — 2026-06-27
Added
- Volume control for inline chat audio clips. A master volume slider plus a Universal volume toggle now sit in the Chat panel header, and every audio attachment gets its own 🔊 slider on its play row. With Universal volume on (the default), one level applies to all clips and persists across sessions; turn it off to give each clip its own independent level.
Downloads
-
PeerSpeak 0.5.0
Stablereleased this
2026-06-27 21:18:36 +00:00 | 84 commits to main since this release0.5.0 — 2026-06-27
Added
- Right-click context menu (Cut / Copy / Paste / Select All) on every text-entry field. (A9)
- Selectable, copyable text for values that used to be read-only: your full node ID and the room ticket can now be click-selected and copied, and chat messages are drag-selectable (highlight + Ctrl+C / Ctrl+A) while clickable links keep working. (W21 Phase 1 + 2)
- Clock-skew warning: when a peer can't be seen because the two systems' clocks differ by more than the replay-protection window, PeerSpeak now shows a "your clocks are out of sync" banner instead of failing silently. (A25)
- Per-application audio capture for screen-share, removing the call-audio loopback echo when sharing a window, plus surfacing of pixelpass startup errors. (A23)
Changed / Fixed
- Critical commands are now delivered reliably under load — muting, releasing push-to-talk, and leaving a room can no longer be silently dropped while a slider is being dragged (prevents a hot-mic state mismatch). (A15)
- Screen-share now passes
--strict-audioand surfaces app-audio drop warnings; the source picker state machine and pactl handling were hardened. (A23) - Per-peer volume control path verified and covered by regression tests. (A24)
Security
- Hardened against insider resource-exhaustion: bounded + author-keyed chat attachment cache, capped recovery-identity state, and other Tier-C caps (F-01 / F-02 / F-03 / F-12).
Packaging
- Added Debian/Ubuntu
.debpackaging (cargo-deb metadata); the official.debis now built on Debian 12 (bookworm) for wide compatibility. - Arch
PKGBUILDclones over anonymous HTTPS.
Earlier releases: see git tags
v0.4.0,v0.3.0,v0.2.0.Downloads
-
released this
2026-06-22 20:28:56 +00:00 | 107 commits to main since this releasePeerSpeak v0.4.0 — Game Presence, inline audio & a bug-sweep hardening pass.
⚠️ BREAKING (network): the gossip protocol bumps to v3. v0.4.0 peers cannot
see or hear v0.3.x peers — everyone in a room must update together.✨ Features
- Game presence — opt-in (default off). Detects the game you're playing
(Steam + running-process scan), shows a "Playing …" line on your roster card
for friends in the room, and sets a per-game call background. Broadcast over
the gossip presence plane; clears when you quit the game. - Inline chat audio player — play voice/audio attachments inline, with
duration, right in the chat. - Redesigned app icon.
🐛 Fixes
- Empty roster on join — a peer that announced before the room-joined event
could be wiped from the roster (worse with echo cancellation on). Room state
is now reset at join initiation, so early peers survive. - Bug-sweep hardening (adversarial review): PipeWire capture-chunk clamp
(no realtime-callback abort); reserve-before-publish on PipeWire playout (no
fill-gauge wedge); game-detector spawn no longer busy-loops on a closed
channel; collision-free recording paths; bounded Windows registry reads. - Rejoin from Recents now keys retained peers by room topic, so a
member-issued ticket rejoins correctly. - Echo-cancel isolation — virtual nodes are per-process, so enabling AEC in
one instance can't tear down another instance's call. - Recording disk-full — a failed write stops recording cleanly once, with a
UI error, instead of looping silently. - File-transfer serve connection stays alive until the fetcher has the bytes;
chat attachment saves use an async dialog.
Tests: 407 lib tests pass · clippy --all-targets clean · release build green.
Downloads
- Game presence — opt-in (default off). Detects the game you're playing
-
PeerSpeak 0.3.0
Stablereleased this
2026-06-21 03:43:26 +00:00 | 129 commits to main since this releasePeerSpeak 0.3.0
⚠️ Breaking wire change — all peers must run 0.3.0. A 0.2.x peer can no longer connect (it fails fast at the handshake by design).
Highlights
- In-chat file & photo sharing: attach files/photos to the room chat. Photos render inline; other files appear as a download chip. Bytes travel on a dedicated, room-member-gated file-transfer plane (not gossip), with a 25 MB cap and defensive image decoding. Session-only — shared files aren't persisted.
- Per-peer listener-side noise gate: suppress an individual peer's background noise on your end (slider in each participant card, next to Volume/Pan/EQ).
- Per-peer volume slider is now continuous and persistent across sessions (was snap-only before).
Windows
- Installer attached: peerspeak-0.3.0-setup.exe (single self-contained exe; adds Start-menu/desktop shortcuts and an optional firewall rule). Unsigned, so SmartScreen shows "unknown publisher" — More info → Run anyway. See packaging/windows/INSTALL.md.
- Note: this Windows build is not yet runtime-verified; two known cosmetic caveats (emoji glyphs on the attach button; GIF/WebP fall back to error rather than a file chip).
Update 2026-06-21: the installer was rebuilt to fix a bug where chat file/photo transfers always failed with "connection lost." If you installed an earlier copy of this file, re-download and reinstall. (Version is unchanged at 0.3.0; the fix is wire-compatible.)
Downloads
-
v0.2.0
Stablereleased this
2026-06-20 22:37:04 +00:00 | 136 commits to main since this releaseRelease v0.2.0
Downloads