• v0.4.0 a6a88d15c0

    v0.4.0 — Game Presence, Inline Audio & Hardening
    windows-build / windows-build (push) Has been cancelled
    cargo-deny / cargo-deny (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