Calls: an incoming call that ended without the in-app /call screen ever mounting (iOS shows the native CallKit banner, not our screen) left the call store stuck in 'ended' forever — the ended→idle reset only lived in the /call screen. A stuck 'ended' then blocked every subsequent incoming call (RING + VoIP push were received but dropped by the status!=='idle' guard), so accepting from the banner produced a phantom CallKit call that ticked as active with no connection, and the caller saw a missed call. - store self-heals back to 'idle' after a call ends (teardown fallback) - receiveIncoming + ring handler tolerate a stale 'ended' state - onAnswer ends the native CallKit call when store has no incoming call - RNCallKeep.endAllCalls() on launch clears leftover CallKit zombies DM online dot: the green avatar dot used follow-gated presence while the "online" text used raw presence → dot hidden for non-followed partners even when online. DM header avatar now uses raw presence (rawPresence prop) → consistent with the text on both platforms. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.6 KiB
1.6 KiB
Next Release
Fixes
- Calls: fixed phantom/zombie incoming calls (iOS). After an incoming call ended without the in-app call screen ever mounting (iOS shows the native CallKit banner, not our
/callscreen), the call store stayed stuck in theendedstate forever. Theended → idlereset only lived in the/callscreen, which never mounts for banner-only incoming calls. A stuckendedstate then silently blocked every subsequent incoming call (RING + VoIP push were received but ignored by thestatus !== 'idle'guard), so accepting from the banner produced a phantom CallKit call that ticked as "active" with no real connection, and the caller saw a missed call.- Store now self-heals back to
idleafter a call ends, decoupled from the call screen (fallback timer inteardown). receiveIncomingand the realtime ring handler now treat a staleendedstate as acceptable (clear + proceed) instead of dropping the new call.onAnswernow ends the native CallKit call when the store has noincomingcall, preventing a phantom "active" call.RNCallKeep.endAllCalls()on app launch clears leftover CallKit zombies from a previous session.
- Store now self-heals back to
- DM header: online dot now matches the online text. The green online dot on the partner avatar used the follow-gated presence (
isOnline= online AND you follow them), while the "online" text next to it used raw presence. In a DM the dot now uses raw presence too, so it shows whenever the partner is online — consistent with the text, regardless of follow relationship. (Looked like an Android-only bug but was the follow gate + asymmetric follow between the test accounts.)