**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`.
25 lines
1.0 KiB
Plaintext
25 lines
1.0 KiB
Plaintext
# /var/home/kiosk/.config/mirror/kiosk.conf
|
|
#
|
|
# The single source of truth for what this kiosk displays.
|
|
# Sourced with `.` from ~/.local/bin/gnome-kiosk-script, so: plain sh syntax,
|
|
# no bashisms, no spaces around `=`, and no side effects in this file.
|
|
#
|
|
# After editing: `sudo systemctl restart gdm` (or log the kiosk user out) to
|
|
# re-read it. The browser is restarted by the kiosk script's own loop.
|
|
|
|
# The wall of every live mirror. `/` is the Share/Watch chooser and needs a
|
|
# tap to get anywhere, which is wrong for a display nobody is standing at.
|
|
MIRROR_KIOSK_URL="https://mirror.reeseapps.com/watch"
|
|
|
|
# Optional overrides (uncomment to change):
|
|
|
|
# Dedicated profile, kept out of ~/.mozilla so a wipe is one rm -rf.
|
|
#MIRROR_KIOSK_PROFILE="$HOME/.mirror-kiosk"
|
|
|
|
# Where firefox's stderr goes; this is the first place to look when the kiosk
|
|
# shows the wrong thing. Kept under 1 MiB by the script itself.
|
|
#MIRROR_KIOSK_LOG="$HOME/.local/state/mirror-kiosk.log"
|
|
|
|
# Seconds between "is the browser still up?" polls.
|
|
#MIRROR_KIOSK_POLL=5
|