phase: 03_audio_share
**Phase 03 final verification pass — complete, 100% green.** - Verified all 4 tasks done in `complete/03_audio_share/`; confirmed implementation in `watch.js` (one composed `MediaStream` per tile, staged-only `setMuted()` policy, `data-audio` state), `share.js` (precise `NotAllowedError` rethrow, 3 honest `#stat-audio` states, mid-share audio republish), conftest flags, and the new `tests/e2e/test_audio_share.py` (11 tests, all **passed** — none skipped). - **Criteria:** (1) viewer inbound audio `bytesReceived` strictly increases + composed stream 1 video/1 audio track while frames still decode — **passed**; (2) staged-only audio via keyboard `m`, mouse button, and `unstage()` re-mute — **passed**; (3) `shared`/`silent`/`not offered` + mid-share audio loss updates panel, roster and tiles — **passed**; (4) cancelled picker reports cancellation, single attempt — **passed**; (5) SECURITY.md §4 Audio, README platform notes, kiosk doc all describe shipped behaviour incl. Linux/PipeWire reality — **verified**; (6) full gate — **passed** (below). - **Gates:** `uv run ruff check . && uv run ruff format --check .` → clean; `uv run pyright` → 0 errors; `uv run pytest` → 245 passed, 4 skipped (only the `MIRROR_REALDISPLAY`-gated X11 tests); `MIRROR_REALDISPLAY=1 uv run pytest -m realdisplay` → 3 passed, 1 skipped (real-capture audio: documented skip naming the exact host/flag reason, per task 04). - **Docs:** README.md reviewed in full against code (env table, CLI flags, routes, kiosk key table, quickstart, audio notes) — consistent, no changes needed. AGENTS.md — all commands/paths/coverage claims verified accurate, no stale statements, no changes needed. - **Defect fixed (pre-existing):** `docs/kiosk-silverblue.md` + `install-kiosk.sh`, `kiosk.conf`, `gnome-kiosk-script` used `mirror.reeselink.com` while README/SECURITY.md use `mirror.reeseapps.com` (the deployment domain, consistent with the fleet); corrected 7 occurrences in 4 files. - No live-infrastructure changes; realdisplay suite ran on private Xvfb only. - **Next pending phase:** `04_reachable_share_cta`.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Kiosk client — Fedora Silverblue
|
||||
|
||||
The target client for a wall display is **Fedora Silverblue running GNOME Kiosk,
|
||||
auto-logged in as `kiosk`, showing `https://mirror.reeselink.com/watch`
|
||||
auto-logged in as `kiosk`, showing `https://mirror.reeseapps.com/watch`
|
||||
fullscreen in Firefox.** One box takes about five minutes over SSH and needs no
|
||||
keyboard, no monitor access, and no console.
|
||||
|
||||
@@ -51,7 +51,7 @@ be skipped when the packages are already layered. To point a client somewhere
|
||||
other than the production wall, pass the URL:
|
||||
|
||||
```bash
|
||||
sudo KIOSK_URL=https://mirror.reeselink.com/watch sh install-kiosk.sh
|
||||
sudo KIOSK_URL=https://mirror.reeseapps.com/watch sh install-kiosk.sh
|
||||
```
|
||||
|
||||
Only `kiosk.conf` differs between clients; every other file stays byte-identical
|
||||
@@ -115,6 +115,13 @@ display-name field is text, not a command. `?` is the only key that needs
|
||||
Shift, and it is matched on the character itself, so on a layout where `?` is a
|
||||
dead key the list is not reachable — keep this table to hand.
|
||||
|
||||
**Sound.** The wall is silent until someone presses `m` (or clicks a tile's
|
||||
audio button): only the staged mirror can be audible, and leaving the stage
|
||||
re-mutes it. What that sound is depends on what the *sharer's* browser was
|
||||
given — Chrome on Linux picks up a tab's audio reliably, system audio only
|
||||
where PipeWire offers it, and Firefox's desktop capture does not offer system
|
||||
audio at all (SECURITY.md §4 "Audio").
|
||||
|
||||
---
|
||||
|
||||
## Why each piece is where it is
|
||||
@@ -367,8 +374,8 @@ decision, not an oversight.
|
||||
|
||||
| Name | Address | What it is |
|
||||
|---|---|---|
|
||||
| `mirror.reeselink.com` | 10.1.1.2 | the mirror service (nginx → container), valid TLS cert |
|
||||
| `mirror-client.reeselink.com` | 10.2.1.183 | the reference kiosk client |
|
||||
| `mirror.reeseapps.com` | 10.1.1.2 | the mirror service (nginx → container), valid TLS cert |
|
||||
| `mirror-client.reeseapps.com` | 10.2.1.183 | the reference kiosk client |
|
||||
| `mirror` | — | SSH alias for the kiosk client in `~/.ssh/config` |
|
||||
|
||||
The client's address is **DHCP**. A kiosk wants a reservation: the address is
|
||||
|
||||
Reference in New Issue
Block a user