a0b3936799
Calls only notified over the chat WebSocket (CHAT.pushToUser), so a CLOSED app (no live socket) never rang — unlike messages, which also call PUSH.sendToUser. Add PUSH.sendToUser for both DM (startDmCall -> callee) and group (startGroupCall -> other members) so APNs/FCM/WebPush alerts a closed device. To make the alert actionable, add CALLS.replayActiveCalls(userId, ws), invoked from the chat-hello handler: when a socket (re)connects, re-send any dm-call / group-call the user is currently being rung into (the original events fire once at call start and are missed by an app that was closed). Opening the app from the push then re-surfaces the invite so they can answer within the ring window. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>