mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 08:27:04 +00:00
The branch already covers the Nostr-side of audio rooms (drawer listing, 30312-event parsing, 10312 presence publishing, chat, hand- raise). The audio-transport pieces (WebTransport + MoQ + Opus play- back) are blocked on Phase 3b-2 (pure-Kotlin QUIC — see the plan in `docs/plans/2026-04-22-pure-kotlin-quic-webtransport-plan.md`). The problem: the in-progress AudioRoomConnectionViewModel was auto-calling connectNestsListener() on stage enter, and the stub `KwikWebTransportFactory` throws `NotImplemented`. That surfaced as a persistent red "Audio failed: WebTransport NotImplemented" chip every time a user opened any audio room — scary, confusing, and misleading. Hiding the broken UI until the transport lands: - Deleted `AudioRoomConnectionViewModel.kt`. The AudioRoomConnectionViewModel + ConnectionChip code is recoverable from git (commit `64b33674`) when Phase 3b-2 makes the underlying transport real. - Removed the auto-connect LaunchedEffect + ConnectionChip render from AudioRoomStage. - Removed the mute button. Pressing mute when we're not producing a mic stream would publish `["muted","0"|"1"]` on 10312 presence with no corresponding audio signal — misleading to peers. The builder-side support for the muted tag stays in MeetingRoomPresenceEvent (Quartz) for future use; the UI will re-add the button when audio capture actually runs. - `publishPresence(..., muted = null)` so the muted tag is elided from the broadcast event entirely while the feature is hidden. - Dropped the unused strings (audio_room_mute, audio_room_unmute, audio_room_conn_*) from strings.xml. What still works on the branch (verified): - Audio Rooms drawer entry lists kind 30312 rooms. - Tap a room → live-activity channel screen with the audio-room stage overlay showing title, summary, host+speaker avatars, audience avatars. - Kind 1311 chat (read + send) via the existing channel infra. - Kind 10312 presence published on enter + every 30 s with the correct `a`-tag and `["hand","1"|"0"]` reflecting local state. - Hand-raise button toggles the `hand` tag — browser clients + other NIP-53 peers can see the signal and hosts can promote. What's hidden until Phase 3b-2 lands: - WebTransport connection attempt, connection chip, mute button. Re-enabling them is additive: resurrect AudioRoomConnectionViewModel from git, paste three LaunchedEffect / DisposableEffect / ConnectionChip blocks back into AudioRoomStage, restore the five string resources, restore the mute button + the two-arg muted presence call. Zero protocol impact on anything else. https://claude.ai/code/session_013nVLALALKaHVgHm9u5Cg8D