The sidebar used voiceStore.voiceUsers (WebSocket-driven, 5s delay) while voice panels used LiveKit's real-time participants. Now ParticipantDisconnected also removes the user from voiceUsers for immediate sidebar updates.
The sidebar used voiceStore.voiceUsers (WebSocket-driven, 5s delay) while voice panels used LiveKit's real-time participants. Now ParticipantDisconnected also removes the user from voiceUsers for immediate sidebar updates.