• v0.6.6 0588d92537

    PeerSpeak 0.6.6 — screen shares catch back up
    CI / check (push) Failing after 5m35s
    Stable

    mollusk released this 2026-07-19 19:57:06 +00:00 | 0 commits to main since this release

    Screen 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 --untimed approach 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 netem rig 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 libpulse
    

    The pixelpass screen-share helper is bundled inside the AppImage.

    Downloads
  • v0.6.4 3d7b01c8a2

    PeerSpeak 0.6.4 — honest chat sending + hardening
    CI / check (push) Failing after 3m17s
    Stable

    mollusk released 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

    • AppImagepeerspeak-0.6.4-x86_64.AppImage (glibc 2.39; includes the PixelPass screen-sharing helper).

    SHA-256: ecd213710271e69ff337e5e97d36288e9c9549bba26b07e63731cabce84dafaa

    Downloads
  • v0.6.3 99a4a336ad

    PeerSpeak 0.6.3 — screen-sharing controls + hwdec fixes
    CI / check (push) Failing after 4s
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-07-06 21:22:52 +00:00 | 25 commits to main since this release

    Added

    • 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=auto stalled 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

    • AppImagepeerspeak-0.6.3-x86_64.AppImage (glibc 2.39; bundles the pixelpass helper). Portable, no install.
    • Arch Linuxpeerspeak-git-0.6.3.r327.g99a4a33-1-x86_64.pkg.tar.zst (sudo pacman -U). Install pixelpass + mpv for screen sharing.
    • Debian / Ubuntupeerspeak_0.6.3-1_amd64.deb (needs libc6 ≥ 2.39 → Ubuntu 24.04+/Debian 13+). For screen sharing also install the companion pixelpass_0.1.0-1_amd64.deb.
    • Windowspeerspeak-0.6.3-setup.exe (Inno Setup installer; single self-contained binary, unsigned → SmartScreen “More info → Run anyway”).
    Downloads
  • v0.6.2 8014edf91c

    PeerSpeak 0.6.2
    CI / check (push) Failing after 3m41s
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-07-03 20:07:41 +00:00 | 33 commits to main since this release

    PeerSpeak 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 LICENSE and THIRD_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 the pixelpass screen-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
  • v0.6.0 f293181626

    PeerSpeak 0.6.0
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-28 10:06:30 +00:00 | 78 commits to main since this release

    0.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. .pls and .m3u playlists 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
  • v0.5.1 c2e27c3367

    PeerSpeak 0.5.1
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-28 02:57:19 +00:00 | 80 commits to main since this release

    0.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
  • v0.5.0 663956deaa

    PeerSpeak 0.5.0
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-27 21:18:36 +00:00 | 84 commits to main since this release

    0.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-audio and 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 .deb packaging (cargo-deb metadata); the official .deb is now built on Debian 12 (bookworm) for wide compatibility.
    • Arch PKGBUILD clones over anonymous HTTPS.

    Earlier releases: see git tags v0.4.0, v0.3.0, v0.2.0.

    Downloads
  • v0.4.0 a6a88d15c0

    v0.4.0 — Game Presence, Inline Audio & Hardening
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-22 20:28:56 +00:00 | 107 commits to main since this release

    PeerSpeak 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
  • v0.3.0 2d067a2e41

    PeerSpeak 0.3.0
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-21 03:43:26 +00:00 | 129 commits to main since this release

    PeerSpeak 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 06e97b9f50

    v0.2.0
    cargo-deny / cargo-deny (push) Has been cancelled
    windows-build / windows-build (push) Has been cancelled
    Stable

    mollusk released this 2026-06-20 22:37:04 +00:00 | 136 commits to main since this release

    Release v0.2.0

    Downloads