Screen sharing: start dialog, sound, video tiles and a meeting view

- 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>
This commit is contained in:
2026-10-01 21:19:29 +02:00
co-authored by Claude Opus 5.5
parent 0cce3c97c2
commit 3b23f69a5f
20 changed files with 744 additions and 185 deletions
+2 -1
View File
@@ -181,7 +181,8 @@ test('two clients talk through the proxy', { skip: !target }, async () => {
const a = await connect(`proxy-a-${Date.now() % 100000}`);
const b = await connect(`proxy-b-${Date.now() % 100000}`);
const got = new Promise<string>(resolve => b.on('text', m => resolve(m.html)));
a.sendText({ channels: [0] }, 'hello through the proxy');
// A direct message, so other test files listening in the root channel are not disturbed
a.sendText({ users: [b.session!] }, 'hello through the proxy');
assert.equal(await got, 'hello through the proxy');
// No UDP in a browser: voice stays on the TCP tunnel
assert.equal(a.udpOk, false);