A stream counted as live as soon as its track was announced, before any route
existed, so a viewer whose connection never came up saw a black picture.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecs, picture size and frame rate, bitrate, loss, jitter and the network
path, per viewer for the sharer.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The browser build uses it automatically, so no outside server is contacted.
Covered by unit tests and a two-browser step in the web E2E.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Start dialog with source list, live preview, sound and quality choices
- Sound on Linux through PipeWire: one program or everything except this
app, fed into a virtual microphone and kept linked as programs come and go;
system loopback on Windows; stereo Opus
- A sharer's tile shows the picture; clicking it opens a large view with the
other tiles as a strip. Own stream is previewed in the own tile
- Stream volume for viewers, watch and stop from the profile panel
- Unit tests for the PipeWire link planner; the proxy test no longer writes to
the root channel other tests listen in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Signals travel as Mumble plugin data (compressed, chunked under Murmur's
1000 byte limit); the picture goes directly to each viewer over WebRTC
- Toolbar button with a source picker in the desktop app, an indicator next to
people who share, click to watch, a view above the chat with full screen
- Late joiners learn about running streams; moving, stopping or disconnecting
ends them for viewers
- A note about IP addresses before the first use, optional STUN server setting
- Unit tests for the signal codec and an E2E with two app instances
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>