Adds audible notifications for the basic membership events: a bright ascending triad when you join a room, a soft two-note rise when another participant joins, and a two-note fall when one leaves. Hooked into the app's UiEvent handling (RoomJoined / PeerJoined / PeerLeft) so each is played locally by whoever observes the event. The chimes are short mono 16-bit WAVs generated by a committed stdlib-only Python script (assets/sounds/generate_chimes.py) and embedded in the binary with include_bytes!, so a deployed single binary is self-contained. The new notify module materializes each to a temp file once, then plays it fire-and-forget via pw-play (PipeWire-native; falls back to paplay/aplay) on a detached thread that waits on the child -- never blocks the UI, never leaves a zombie, and silently no-ops if no player is available. Phase 1 of a larger plan; always-on for now. Later phases: reconnect-attempt / reconnected sounds, a settings enable/disable toggle, per-event custom sounds, and extra events (self-leave, mute/unmute, connection-lost). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 KiB
38 KiB