Six more schemes by hand and 89 generated from a hue and an accent
(npm run themes), with a readability test over all of them and a search
box in the picker. The README describes the software plainly and covers
text channels, the Rooms interface and the new settings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An open microphone puts a Bluetooth headset into its telephone mode. With
this setting (on by default on phones) the microphone is released while
muted and taken again on unmute.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A second shell on the same state, chosen in Settings, Appearance.
Rooms as a list with the people inside, a voice dock, a voice screen,
people and a You screen. Dialogs and menus are shared with the standard
interface. Moving channels and people by dragging is not in it yet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Text channels are real Mumble channels with a marker in the description.
Their messages travel as plugin data to everyone on the server, are kept
by the clients and handed to people who connect later.
Channels can be dropped in front of or behind another channel, with a
line where they land. A description preview no longer sticks after a drop.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The picture is swapped on the running stream, so viewers stay connected. The
new camera is opened first where the device allows two at once; phones close
the old one first.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- libopus in WebAssembly takes over voice where WebCodecs audio is missing
(Firefox on Android); tested for tone, timing and bitrate, and in a browser
forced onto it
- Cameras in the channel show by themselves once the IP note was confirmed;
a person's camera can be hidden from the right-click menu, all of them with
one button; an enlarged camera leaves its tile
- CSP allows wasm-unsafe-eval for the codec
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A viewer holds one screen and any number of cameras; cameras play in the
tiles (own one mirrored), a click enlarges one
- "Watch all cameras" joins the round: cameras in the channel are watched as
they come on. Turning your own camera on joins it too
- Sound, statistics and stop work per stream
- Relay quotas and port range raised: a round uses a route per pair of people
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A camera is a second source in the share dialog; streams carry their kind,
so icons and wording follow. Browsers without screen capture (phones) start
on the camera.
- Settings, Voice: the address of a mumh5 web version as relay; its STUN and
relay are then offered with every stream and take over when no direct
connection comes up.
- The proxy hands out relay credentials at GET /api/relay, readable from any
origin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vanadium forbids direct UDP for WebRTC, and mobile and company networks often
block direct connections; the only route then is a relay reached over TCP.
- server/turn.ts: STUN and TURN on one port, over UDP and TCP, with
short-lived credentials from /api/turn, quotas and a peer filter
- The browser build fetches credentials and offers the relay automatically
- Stats for nerds says when a stream is relayed and how the relay is reached
- Tests: a TURN client over UDP and TCP, and a browser limited to the relay
over TCP in the web E2E
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rows of equal tiles with the column count chosen for the best 16:9 fit; a
shorter last row stretches. In the meeting view the strip shares the width.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 stage above the chat is as tall as the user drags it; tiles are sized to
fill it, with a meeting-style look
- Tiles with a stream come first, at the top left
- The large picture can be moved to a separate window
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>