April 20, 2026
🔄 Changed
- Added optional leave reasons to
Call.leaveandCallViewModel.hangUp, and propagated them through the WebRTC leave flow so SFU leave requests include explicit end-of-call context. #1100 - Added an optional join interception hook so apps can delay or abort call entry after the join response is applied locally. #1108
- Exposed
participantAutoLeavePolicyonCallKitAdapterandCallKitServiceso CallKit flows can share the same auto-leave rules asCallViewModel.
🐞 Fixed
- Prevent abrupt call endings caused by audio-session readiness timing. #1098
- Prevent repeated screen-sharing permission prompts on reconnection after screen capture is denied. #1102
- Prevent hanging up while a call is still joining from briefly showing the in-call UI after the join finishes in the background. #1101
- Delay microphone and camera permission prompts until the app is in the foreground and the WebRTC join has completed. #1103
- Prevent outgoing ringing time from being counted toward call duration. #1106
- Replay buffered subscriber ICE trickles during join so remote audio does not wait for a later subscriber ICE restart before becoming audible. #1111
- Fix join-call timeout caused by a
PassthroughSubjectrace where the response was emitted before the subscription was established. #1113 - CallKit-managed calls now respect the configured
participantAutoLeavePolicy. #1112 - Prevent
CallViewModelfrom entering.inCallfrom participant updates before the call is ready, while preserving the CallKit join handoff to.inCall. #1109 - Handle CallKit ringing edge cases by ending already-handled incoming calls with explicit leave reasons when they were answered, rejected, missed, or ended elsewhere. #1115