a1f8817fce
The state collector in CallController was blocking on showIncomingCallNotification() which downloads the caller's profile picture over the network. Because StateFlow is conflated, if the call ended (peer hangup, reject, timeout) while the collector was suspended, the Ended→Idle transition would cause the Ended emission to be lost. Since cleanup/stopRinging only ran in the Ended handler, the ringtone and vibration would continue indefinitely. Two fixes: 1. Launch showIncomingCallNotification in a separate coroutine so the collector is never blocked by network I/O. 2. Add a safety-net Idle handler that stops ringing, ringback tone, and cancels the call notification. https://claude.ai/code/session_01NfyLNgR4d8yjnxaQJ6FUt5