=== Eye Viewer Log Cleared at 2026-01-15 10:34:24 +0000 === [11:34:25] [FONT] Roboto fonts loaded successfully: Roboto-Regular [11:34:25] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [11:34:25] [GIPHY] SDK not available - using REST API fallback [11:34:25] [BACKGROUND] Background fetch enabled [11:34:25] [AUTH] Starting PIN authentication [11:34:25] [PUSH] Notification tapped - session_id: ILUIWU [11:34:25] [CLEANUP] βœ… Deleted 4 timer messages older than 24h [11:34:25] [PUSH] Max message_id before tap: 17740 [11:34:25] [PUSH] Stored pending session: ILUIWU [11:34:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17744, type=0, sender=Esra [11:34:25] [PUSH_EMBED] βœ… Saved message 17744 to local DB (sync) [11:34:25] [PUSH_EMBED] Created new cache with embedded message 17744 [11:34:25] [PUSH_EMBED] Fetching evolution data for message 17744 in background [11:34:25] [PUSH_EMBED] βœ… Fully processed message 17744 [11:34:25] [PUSH] Embedded message handled instantly on tap [11:34:25] [PUSH] Fetching server messages since_id=17740 to catch coalesced notifications on tap [11:34:25] [PUSH_PRELOAD] Fetching up to 50 messages since_id=17740 to catch coalesced notifications [11:34:25] [PUSH_PRELOAD] Fetching messages for instant display cache [11:34:25] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:34:25] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:25] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [11:34:25] [PUSH] Silent push received [11:34:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17744, type=0, sender=Esra [11:34:25] [PUSH_EMBED] βœ… Saved message 17744 to local DB (sync) [11:34:25] [PUSH_EMBED] Created new cache with embedded message 17744 [11:34:25] [PUSH_EMBED] Fetching evolution data for message 17744 in background [11:34:25] [PUSH_EMBED] βœ… Fully processed message 17744 [11:34:25] [PUSH] Embedded message handled instantly from silent push [11:34:25] [CLIENT_SIG] WebSocket opened [11:34:25] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:34:25] [CLIENT_SIG] Connected! clientId=r4DsLTdDr0vtk7Is [11:34:25] [PUSH_EMBED] Got evolution data for message 17744, saving to local DB [11:34:25] [PUSH_EMBED] Saved evolution data for message 17744 [11:34:25] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:34:25] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:25] [PRELOAD] Cache has only 1 messages (from push) - will load full history [11:34:25] [PUSH_EMBED] Got evolution data for message 17744, saving to local DB [11:34:25] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17744)... [11:34:25] [PUSH_EMBED] Saved evolution data for message 17744 [11:34:25] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [11:34:25] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:34:25] [PUSH_PRELOAD] Fetched 4 messages - caching for instant display [11:34:25] [PUSH_PRELOAD] ⚑ Pre-cached 4 messages for instant display (preserved 0 from push) [11:34:25] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:34:25] [PUSH] Server fetch on tap completed (success=true) [11:34:25] [PRELOAD] No messages or parse error [11:34:25] [USER] βœ… User registered successfully [11:34:25] [PUSH] User registration after token update: success [11:34:25] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [11:34:25] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [11:34:26] [PIN_AUTH] Correct PIN [11:34:26] [SECURITY] Restored real session: ILUIWU [11:34:26] [SECURITY] Restored real session: ILUIWU [11:34:27] [SECURITY] Saved real session: ILUIWU [11:34:27] [SCENE] Launched directly to chat view with sessionId: ILUIWU [11:34:27] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:34:27] Documents Directory: /var/mobile/Containers/Data/Application/8BF2D7BC-D987-4D5A-907F-5601C5665CBF/Documents [11:34:27] [UPLOAD_QUEUE] Found 0 pending uploads to resume [11:34:27] [THEME] Applying current theme [11:34:27] [CHAT] Applied day theme (mode: day) [11:34:27] [SECURITY] Saved real session: ILUIWU [11:34:27] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:34:27] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:34:27] [NETWORK] Network monitor started [11:34:27] [NETWORK] Status changed: connected [11:34:27] Did transition [11:34:27] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [11:34:27] [VIEWER] Screen lock enabled - normal idle behavior [11:34:27] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [11:34:27] [VCC] ========== VideoConnectionClass INIT ========== [11:34:27] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [11:34:27] [DATA AUDIO] ========== setupWebRTC() START ========== [11:34:27] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [11:34:27] [DATA AUDIO] Creating encoder/decoder factories... [11:34:27] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [11:34:27] [CODEC] Viewer selected encoder: AV1 (best quality) [11:34:27] [DATA AUDIO] Creating RTCPeerConnectionFactory... [11:34:27] [DATA AUDIO] βœ… Factory created [11:34:27] [DATA AUDIO] RTCAudioSession locked [11:34:27] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [11:34:27] [DATA AUDIO] RTCAudioSession unlocked [11:34:27] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [11:34:27] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [11:34:27] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [11:34:27] [WS] Opening session at ws://crivello.dyndns.org:8081/ [11:34:27] [QUERY] βœ… tempQueryConnection created for iosILUIWU [11:34:27] [VIEWER_INIT] Already have 50 messages - just filtering for tab [11:34:27] [EVENT_POLL] Event polling disabled - using WebSocket events instead [11:34:27] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [11:34:27] Did transition [11:34:27] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [11:34:27] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:34:27] [CHUNK] Merged 784 reactions synchronously [11:34:27] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [11:34:27] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [11:34:27] [MIGRATION] No messages need sender_name backfill [11:34:27] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [11:34:27] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [11:34:27] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [11:34:27] [GALLERY_DB] Raw datesent for msg 17696: '2026-01-14 16:15:21' [11:34:27] [USER] βœ… User registered successfully [11:34:27] [USER] User registration successful [11:34:27] [GALLERY_DB] βœ… Loaded 428 media messages [11:34:27] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17744 [11:34:27] [INCREMENTAL_SYNC] βœ… No new messages [11:34:27] [GALLERY] Filtered 428 -> 389 (only with local thumbnails) [11:34:27] [GALLERY] First 5 after sort (newest first): [11:34:27] [GALLERY] 0: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [11:34:27] [GALLERY] 1: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [11:34:27] [GALLERY] 2: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [11:34:27] [GALLERY] 3: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [11:34:27] [GALLERY] 4: id=17687, date=2026-01-14 14:45:38, file=67c77e91dc086f47.jpg [11:34:27] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [11:34:27] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17695, 17696, 17697, 17698, 17699] [11:34:27] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [11:34:27] [CELL_UPLOAD] configure: msgId=17696, file=674206d67fc0fa03.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:27] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:34:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=674206d67fc0fa03.jpg, overlayExists=true [11:34:27] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:27] [CELL_UPLOAD] β†’ not my message, setting complete [11:34:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:34:27] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:27] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:34:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:34:27] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17740 β†’ 17741 [11:34:27] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17741 β†’ 17742 [11:34:27] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17742 β†’ 17743 [11:34:27] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17743 β†’ 17744 [11:34:27] [SERVER] Starting reconnect polling (5s interval) [11:34:27] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [11:34:27] [ICONS] Offset applied: -14.6 [11:34:27] [ICONS] New left margin: 11.2, New right margin: 11.3 [11:34:27] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [11:34:27] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:34:27] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:34:27] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [11:34:27] [ICONS] Chat center: (31.2, 87.0) [11:34:27] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [11:34:27] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [11:34:27] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [11:34:27] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [11:34:27] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [11:34:27] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [11:34:27] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [11:34:27] [ICONS] Screen width: 440.0 [11:34:27] [PURGE] ⚠️ Media cache purge DISABLED for debugging [11:34:27] [UNSENT_RETRY] Checking for unsent messages... [11:34:27] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [11:34:27] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [11:34:27] [UPLOAD_RECOVERY] Session: ILUIWU [11:34:27] [UPLOAD_RECOVERY] βœ… No stuck uploads found [11:34:27] [UPLOAD_RECOVERY] Checking recent media messages on server... [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [11:34:27] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [11:34:27] [PENDING_UPLOAD] Total pending upload messages: 0 [11:34:27] [UNSENT_RETRY] No unsent messages found [11:34:27] new_session POST ok: token len=157 [11:34:27] HELLO β†’ sent (fetched token, role=query) [11:34:27] [SIG] hello_ok received for query connection - ready to query agents [11:34:27] [SIG] get_agents request sent for sessionId=ILUIWU [11:34:27] [SIG] get_agents request sent for sessionId=iosILUIWU [11:34:27] [SERVER] Stopped reconnect polling [11:34:27] [SIG] agents_list received: [] [11:34:27] [SIG] agents_list received: [] [11:34:27] [UPLOAD_RECOVERY] βœ… All media files verified on server [11:34:28] [COMBINED_FETCH] Loaded 6516 read receipts, 779 messages with reactions [11:34:28] [READBY_ENRICH] Enriched 50 messages with readBy data [11:34:28] [PUSH] Silent push received [11:34:28] [PUSH_EMBED] No embedded message_data in notification [11:34:28] [PUSH] No embedded data, pre-loading messages from server [11:34:28] [PUSH_PRELOAD] Fetching messages for instant display cache [11:34:28] [PUSH] Silent push received [11:34:28] [PUSH_EMBED] No embedded message_data in notification [11:34:28] [PUSH] No embedded data, pre-loading messages from server [11:34:28] [PUSH_PRELOAD] Fetching messages for instant display cache [11:34:28] [PUSH] Silent push received [11:34:28] [PUSH_EMBED] No embedded message_data in notification [11:34:28] [PUSH] No embedded data, pre-loading messages from server [11:34:28] [PUSH_PRELOAD] Fetching messages for instant display cache [11:34:28] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17695, 17696, 17697, 17698, 17699] [11:34:28] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:28] [CELL_UPLOAD] β†’ not my message, setting complete [11:34:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:34:28] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:28] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:34:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:34:28] [PUSH] Silent push received [11:34:28] [PUSH_EMBED] No embedded message_data in notification [11:34:28] [PUSH] No embedded data, pre-loading messages from server [11:34:28] [PUSH_PRELOAD] Fetching messages for instant display cache [11:34:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:34:28] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:34:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:34:28] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:34:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:34:28] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:34:28] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:34:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17744, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [11:34:28] [PUSH] Parsed message_id: 17744 [11:34:28] [PUSH] Parsed operation_type: 3 [11:34:28] [PUSH] Taking direct action: opType=3, messageId=17744 [11:34:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17744 [11:34:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:34:28] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:34:28] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:34:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17742] [11:34:28] [PUSH] Parsed message_id: 17742 [11:34:28] [PUSH] Parsed operation_type: 3 [11:34:28] [PUSH] Taking direct action: opType=3, messageId=17742 [11:34:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17742 [11:34:28] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:34:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17741, AnyHashable("session_id"): ILUIWU] [11:34:28] [PUSH] Parsed message_id: 17741 [11:34:28] [PUSH] Parsed operation_type: 3 [11:34:28] [PUSH] Taking direct action: opType=3, messageId=17741 [11:34:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17741 [11:34:28] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:34:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17743, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }] [11:34:28] [PUSH] Parsed message_id: 17743 [11:34:28] [PUSH] Parsed operation_type: 3 [11:34:28] [PUSH] Taking direct action: opType=3, messageId=17743 [11:34:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17743 [11:34:29] [CLIENT_SIG] Event received: type=3 messageId=17741 [11:34:29] [WS_EVENT] Received event: type=3, messageId=17741 [11:34:29] [WS_EVENT] Read receipt for message 17741 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:29] [CLIENT_SIG] Event received: type=3 messageId=17744 [11:34:29] [WS_EVENT] Received event: type=3, messageId=17744 [11:34:29] [WS_EVENT] Read receipt for message 17744 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:29] [CLIENT_SIG] Event received: type=3 messageId=17743 [11:34:29] [WS_EVENT] Received event: type=3, messageId=17743 [11:34:29] [WS_EVENT] Read receipt for message 17743 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:29] [CLIENT_SIG] Event received: type=3 messageId=17742 [11:34:29] [WS_EVENT] Received event: type=3, messageId=17742 [11:34:29] [WS_EVENT] Read receipt for message 17742 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:58] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:34:58] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=50, isReloading=false [11:34:58] [SEND_MESSAGE] βœ… Added optimistic message id=-1 to arrays, newMsgCount=51 [11:34:58] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 17744, 17743, 17742, 17741] [11:34:58] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:58] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:34:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:34:59] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:34:59] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:34:59] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:34:59] [CELL_UPLOAD] β†’ not my message, setting complete [11:34:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:34:59] [LIFECYCLE] App resigning active - cleared crash flag [11:35:00] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:35:00] [SECURITY] Saved background timestamp [11:35:00] [LIFECYCLE] App entering background - cleared crash flag [11:35:00] [CLIENT_SIG] Disconnecting [11:35:00] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:35:00] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0 [11:35:00] [WS] Canceling WebSocket for query connection to iosILUIWU [11:35:00] In cleanupPeer [11:35:00] In cleanupPeer [11:35:00] [LIFECYCLE] WebRTC audio disabled [11:35:00] [LIFECYCLE] AVAudioSession deactivated [11:35:00] [LIFECYCLE] All connections stopped [11:35:00] [SERVER] Stopped reconnect polling [11:35:00] Will request stop of video 0 [11:35:00] Will request stop of video 0 [11:35:00] [CLIENT_SIG] WebSocket closed with code 1001 [11:35:00] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:35:00] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001 [11:35:00] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views [11:35:00] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:35:00] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:35:00] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected [11:35:00] [WS] Query connection failed - cleaning up all agent connections and views [11:35:00] [PIP] Removing 0 tracks from PiP for connection 0 [11:35:00] [PIP] βœ… All tracks removed for connection 0 [11:35:00] [PIP] Removing 0 tracks from PiP for connection 0 [11:35:00] [PIP] βœ… All tracks removed for connection 0 [11:35:00] [CLEANUP] ======================================== [11:35:00] [CLEANUP] Cleaning up all agent connections and views [11:35:00] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [11:35:00] [CLEANUP] Stopped and removed 0 video connections [11:35:00] [CLEANUP] Removed 0 video views [11:35:00] [CLEANUP] Removed 0 feed scroll views [11:35:00] [CLEANUP] Removed 0 status labels [11:35:00] [CLEANUP] Reset agent query state [11:35:00] [CLEANUP] Updated page indicator [11:35:00] [CLEANUP] Rebuilt video layout [11:35:00] [CLEANUP] βœ… All agent connections and views cleaned up [11:35:00] [CLEANUP] ======================================== [11:35:00] [SERVER] Skipping reconnect polling - app is in background [11:35:00] [WS] URLSession invalidated successfully [11:35:00] [CLEANUP] ======================================== [11:35:00] [CLEANUP] Cleaning up all agent connections and views [11:35:00] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [11:35:00] [CLEANUP] Stopped and removed 0 video connections [11:35:00] [CLEANUP] Removed 0 video views [11:35:00] [CLEANUP] Removed 0 feed scroll views [11:35:00] [CLEANUP] Removed 0 status labels [11:35:00] [CLEANUP] Reset agent query state [11:35:00] [CLEANUP] Updated page indicator [11:35:00] [CLEANUP] Rebuilt video layout [11:35:00] [CLEANUP] βœ… All agent connections and views cleaned up [11:35:00] [CLEANUP] ======================================== [11:35:00] [SERVER] Skipping reconnect polling - app is in background [11:40:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU [11:40:15] [WS] Opening session at ws://crivello.dyndns.org:8081/ [11:40:15] [CHAT] send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x123778f00 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <5B1F4EC5-3AB4-4D25-812D-B41F9E5E04B5>.<37>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <5B1F4EC5-3AB4-4D25-812D-B41F9E5E04B5>.<37>" ), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, _kCFStreamErrorDomainKey=4} [11:40:15] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:40:15] [SECURITY] Timeout check: elapsed=315.3407349586487s, timeout=300.0s [11:40:15] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately [11:40:15] [AUTH] βœ… All guards passed, showing privacy cover [11:40:15] [LIFECYCLE] App entering foreground - restoring connections [11:40:15] [LIFECYCLE] Away > 2 minutes (315s) - will scroll to bottom [11:40:15] [UPLOAD_RETRY] No pending uploads to retry [11:40:15] [LIFECYCLE] Merged 784 reactions from local DB [11:40:15] [LIFECYCLE] WebRTC audio re-enabled [11:40:15] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:40:15] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:40:15] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:40:15] [VIEWER] Reconnecting after background - querying agents [11:40:15] [UNSENT_RETRY] Checking for unsent messages... [11:40:15] [PENDING_UPLOAD] Found pending message: id=-1, file=, uploadStatus=0, sendStatus=1 [11:40:15] [PENDING_UPLOAD] Total pending upload messages: 1 [11:40:15] [UNSENT_RETRY] πŸ”„ Found 1 unsent messages from me to retry [11:40:15] [UNSENT_RETRY] πŸ”„ Retrying message id=-1, type=0, file= [11:40:15] [SEND_STATUS] πŸ’Ύ Updating DB: messageId=-1, status=1 (sending) [11:40:15] [SEND_STATUS] βœ… DB updated: 1 row(s) affected for messageId=-1 [11:40:15] [UNSENT_RETRY] πŸ”‘ Including client_message_id=E79C69D3-AFAA-4AE0-8766-02531C839E9A for idempotent retry [11:40:15] [UNSENT_RETRY] πŸ“€ Sending message id=-1 to server [11:40:15] [CHAT] Network error detected - queuing for retry [11:40:15] [SEND_STATUS] πŸ’Ύ Updating DB: messageId=-1, status=3 (pending_retry) [11:40:15] [SEND_STATUS] βœ… DB updated: 1 row(s) affected for messageId=-1 [11:40:15] [SEND_STATUS] ⏳ Message -1 marked as PENDING RETRY (waiting for network) [11:40:15] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:15] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:15] [CLIENT_SIG] WebSocket opened [11:40:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [11:40:15] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:40:15] HELLO β†’ sent (cached token, role=query) [11:40:15] [SIG] hello_ok received for query connection - ready to query agents [11:40:15] [SIG] get_agents request sent for sessionId=ILUIWU [11:40:15] [SIG] get_agents request sent for sessionId=iosILUIWU [11:40:15] [CLIENT_SIG] Connected! clientId=xX3RG25Cm3rWkuyo [11:40:15] [SERVER] Stopped reconnect polling [11:40:15] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 17744, 17743, 17742, 17741] [11:40:15] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:15] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:15] [SIG] agents_list received: [] [11:40:15] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:40:15] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:40:15] [SIG] agents_list received: [] [11:40:15] [UNSENT_RETRY] πŸ“₯ receive_message.php HTTP 200: {"ok":true,"message_id":17745,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:34:59","idempotent":true} [11:40:15] [UNSENT_RETRY] βœ… Message synced! Old id=-1 β†’ new server id=17745 [11:40:15] [DB_UPGRADE] Upgrading message ID: -1 β†’ 17745, preserveOriginalDate=true [11:40:15] [DB_UPGRADE] βœ… Upgraded -1 β†’ 17745 with send_status=0, 1 row(s) affected [11:40:15] [UNSENT_RETRY] βœ… Updated chatMessages[0].id: -1 β†’ 17745 [11:40:15] [UNSENT_RETRY] βœ… Updated allMessagesWithReadBy[0].id: -1 β†’ 17745 [11:40:15] ReloadData unsent_retry [11:40:15] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:15] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:15] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:15] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:15] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [11:40:15] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [11:40:15] [PUSH] handlePollEventsNotification userInfo: [:] [11:40:15] [PUSH] No message_id in userInfo [11:40:15] [PUSH] No operation_type in userInfo [11:40:15] [FAST_REFRESH] Evolution disabled - performing incremental sync [11:40:15] [FAST_REFRESH] Already have 51 messages - skipping local DB load [11:40:15] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [11:40:15] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [11:40:15] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=51 [11:40:15] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17745 [11:40:16] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[17745, 17744, 17743, 17742, 17741] [11:40:16] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:16] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:16] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:16] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:16] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:16] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:16] [INCREMENTAL_SYNC] βœ… No new messages [11:40:16] [FAST_REFRESH] Incremental sync complete - 51 messages [11:40:17] [COMBINED_FETCH] Loaded 6517 read receipts, 779 messages with reactions [11:40:17] [FOREGROUND] Enriched 0 messages with readBy data from server [11:40:17] [PIN_AUTH] Correct PIN [11:40:17] [SECURITY] Restored real session: ILUIWU [11:40:17] [SECURITY] Restored real session: ILUIWU [11:40:17] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[17745, 17744, 17743, 17742, 17741] [11:40:17] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:17] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:17] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:17] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:17] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [11:40:17] [AUTH] UI update complete [11:40:17] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:40:17] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:40:17] [FAKE MODE] Exiting fake mode, restoring real session [11:40:17] [SECURITY] Restored real session: ILUIWU [11:40:17] [SECURITY] Saved real session: ILUIWU [11:40:17] [FAKE MODE] βœ… Restored real session: ILUIWU [11:40:17] [FAKE MODE] Loaded 50 messages (limited to page size) [11:40:17] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:17] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:17] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [11:40:17] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:40:17] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17696, 17697, 17698, 17699, 17700] [11:40:17] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:17] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:17] [COMBINED_FETCH] Loaded 6517 read receipts, 779 messages with reactions [11:40:17] [FAST_REFRESH] Enriched 50 messages with readBy data [11:40:17] [USER] βœ… User registered successfully [11:40:17] [PUSH] User registration after token update: success [11:40:17] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17696, 17697, 17698, 17699, 17700] [11:40:17] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:17] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:25] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out. [11:40:25] [WS] Query connection error - cleaning up all agent connections and views [11:40:25] [CLEANUP] ======================================== [11:40:25] [CLEANUP] Cleaning up all agent connections and views [11:40:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [11:40:25] [CLEANUP] Stopped and removed 0 video connections [11:40:25] [CLEANUP] Removed 0 video views [11:40:25] [CLEANUP] Removed 0 feed scroll views [11:40:25] [CLEANUP] Removed 0 status labels [11:40:25] [CLEANUP] Reset agent query state [11:40:25] [CLEANUP] Updated page indicator [11:40:25] [CLEANUP] Rebuilt video layout [11:40:25] [CLEANUP] βœ… All agent connections and views cleaned up [11:40:25] [CLEANUP] ======================================== [11:40:25] [SERVER] Starting reconnect polling (5s interval) [11:40:26] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:40:26] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=50, isReloading=false [11:40:26] [SEND_MESSAGE] βœ… Added optimistic message id=-2 to arrays, newMsgCount=51 [11:40:26] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-2, 17745, 17744, 17743, 17742] [11:40:26] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:26] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:40:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:40:26] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:40:26] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:40:26] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:40:26] [CELL_UPLOAD] β†’ not my message, setting complete [11:40:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:40:27] [LIFECYCLE] App resigning active - cleared crash flag [11:40:28] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:40:28] [SECURITY] Saved background timestamp [11:40:28] [LIFECYCLE] App entering background - cleared crash flag [11:40:28] [CLIENT_SIG] Disconnecting [11:40:28] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:40:28] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3 [11:40:28] [WS] Canceling WebSocket for query connection to iosILUIWU [11:40:28] In cleanupPeer [11:40:28] In cleanupPeer [11:40:28] [LIFECYCLE] WebRTC audio disabled [11:40:28] [LIFECYCLE] AVAudioSession deactivated [11:40:28] [LIFECYCLE] All connections stopped [11:40:28] [CLIENT_SIG] WebSocket closed with code 1001 [11:40:28] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:40:28] [SERVER] Stopped reconnect polling [11:40:28] [WS] URLSession invalidated successfully [11:40:28] Will request stop of video 0 [11:40:28] Will request stop of video 0 [11:40:28] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:40:28] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:40:28] [PIP] Removing 0 tracks from PiP for connection 0 [11:40:28] [PIP] βœ… All tracks removed for connection 0 [11:40:28] [PIP] Removing 0 tracks from PiP for connection 0 [11:40:28] [PIP] βœ… All tracks removed for connection 0 [11:40:28] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17746,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:40:27"} [11:40:28] [CHAT] receive_message.php JSON: ["file_name": , "datesent_utc": 2026-01-15 10:40:27, "session_id": ILUIWU, "message_type": 0, "ok": 1, "message_id": 17746] [11:40:28] [DB_UPGRADE] Upgrading message ID: -2 β†’ 17746, preserveOriginalDate=false [11:40:28] [DB_UPGRADE] βœ… Upgraded -2 β†’ 17746 with send_status=0, 1 row(s) affected [11:40:28] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -2 β†’ 17746 [11:40:28] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -2 β†’ 17746 [11:40:28] ReloadData 9 [11:42:22] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:42:22] [PUSH] Notification tapped - session_id: ILUIWU [11:42:22] [PUSH] Max message_id before tap: 17746 [11:42:22] [PUSH] Stored pending session: ILUIWU [11:42:22] [PUSH_EMBED] πŸ“© Received embedded message: id=17747, type=0, sender=Esra [11:42:22] [PUSH_EMBED] βœ… Saved message 17747 to local DB (sync) [11:42:22] [PUSH_EMBED] Created new cache with embedded message 17747 [11:42:22] [PUSH_EMBED] Fetching evolution data for message 17747 in background [11:42:22] [PUSH_EMBED] βœ… Fully processed message 17747 [11:42:22] [PUSH] Embedded message handled instantly on tap [11:42:22] [PUSH] Fetching server messages since_id=17746 to catch coalesced notifications on tap [11:42:22] [SECURITY] Timeout check: elapsed=114.10870504379272s, timeout=300.0s [11:42:22] [PUSH_PRELOAD] Fetching up to 50 messages since_id=17746 to catch coalesced notifications [11:42:22] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:42:22] [PUSH_PRELOAD] Fetching messages for instant display cache [11:42:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:42:22] [LIFECYCLE] App entering foreground - restoring connections [11:42:22] [UPLOAD_RETRY] No pending uploads to retry [11:42:22] [LIFECYCLE] Merged 784 reactions from local DB [11:42:22] [LIFECYCLE] WebRTC audio re-enabled [11:42:22] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:42:22] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:42:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:42:22] [VIEWER] Reconnecting after background - querying agents [11:42:22] [FOREGROUND] πŸ“Ά Network available - retrying 1 pending messages [11:42:22] [RETRY] πŸ”„ Retrying 1 pending messages... [11:42:22] [RETRY] ⚠️ Message -1 not found in memory, removing from pending [11:42:22] [UNSENT_RETRY] Checking for unsent messages... [11:42:22] [PENDING_UPLOAD] Total pending upload messages: 0 [11:42:22] [UNSENT_RETRY] No unsent messages found [11:42:22] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:42:22] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:42:22] [PUSH_UI] Inserted message 17747 into UI (now 52 messages) [11:42:22] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [11:42:22] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort [11:42:22] [WS] Query connection failed - cleaning up all agent connections and views [11:42:22] [CLEANUP] ======================================== [11:42:22] [CLEANUP] Cleaning up all agent connections and views [11:42:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [11:42:22] [CLEANUP] Stopped and removed 0 video connections [11:42:22] [CLEANUP] Removed 0 video views [11:42:22] [CLEANUP] Removed 0 feed scroll views [11:42:22] [CLEANUP] Removed 0 status labels [11:42:22] [CLEANUP] Reset agent query state [11:42:22] [CLEANUP] Updated page indicator [11:42:22] [CLEANUP] Rebuilt video layout [11:42:22] [CLEANUP] βœ… All agent connections and views cleaned up [11:42:22] [CLEANUP] ======================================== [11:42:22] [SERVER] Starting reconnect polling (5s interval) [11:42:22] [CLIENT_SIG] WebSocket opened [11:42:22] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:42:22] [CLIENT_SIG] Connected! clientId=appU3FghP23db9R8 [11:42:22] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:42:22] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:22] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:42:22] [PUSH_EMBED] Got evolution data for message 17747, saving to local DB [11:42:22] [PUSH_EMBED] Saved evolution data for message 17747 [11:42:22] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [11:42:22] [PUSH_PRELOAD] ⚑ Pre-cached 1 messages for instant display (preserved 0 from push) [11:42:22] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:42:22] [PUSH] Server fetch on tap completed (success=true) [11:42:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17747, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:42:13"; "file_name" = ""; message = "Ha ha \Ud83e\Udd23 for me I assume 2-2"; "message_id" = 17747; "message_type" = 0; "prev_session_message_id" = 17746; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0] [11:42:22] [PUSH_EMBED_VC] Message 17747 already in memory - skipping [11:42:22] [PUSH] ⚑ Embedded message handled directly in ViewController [11:42:22] [PUSH] Parsed message_id: 17747 [11:42:22] [PUSH] Parsed operation_type: 0 [11:42:22] [PUSH] Taking direct action: opType=0, messageId=17747 [11:42:22] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17747 [11:42:22] [PUSH] ⚑ Message 17747 already in memory - skipping duplicate notification entirely [11:42:22] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17747, 17746, 17745, 17744, 17743] [11:42:22] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17746 β†’ 17747 [11:42:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [11:42:22] [SECURITY] Within timeout - cleared background flag [11:42:22] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [11:42:22] [PUSH] handlePollEventsNotification userInfo: [:] [11:42:22] [PUSH] No message_id in userInfo [11:42:22] [PUSH] No operation_type in userInfo [11:42:22] [FAST_REFRESH] Evolution disabled - performing incremental sync [11:42:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load [11:42:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [11:42:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [11:42:22] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=52 [11:42:22] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17747 [11:42:22] [INCREMENTAL_SYNC] βœ… No new messages [11:42:22] [FAST_REFRESH] Incremental sync complete - 52 messages [11:42:22] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17747, 17746, 17745, 17744, 17743] [11:42:23] [PUSH] Silent push received [11:42:23] [PUSH_EMBED] No embedded message_data in notification [11:42:23] [PUSH] No embedded data, pre-loading messages from server [11:42:23] [PUSH_PRELOAD] Fetching messages for instant display cache [11:42:23] [COMBINED_FETCH] Loaded 6519 read receipts, 779 messages with reactions [11:42:23] [FOREGROUND] Enriched 3 messages with readBy data from server [11:42:23] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:42:23] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:42:23] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:42:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17747] [11:42:23] [PUSH] Parsed message_id: 17747 [11:42:23] [PUSH] Parsed operation_type: 3 [11:42:23] [PUSH] Taking direct action: opType=3, messageId=17747 [11:42:23] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17747 [11:42:23] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17747, 17746, 17745, 17744, 17743] [11:42:23] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU [11:42:23] [WS] Opening session at ws://crivello.dyndns.org:8081/ [11:42:23] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [11:42:23] HELLO β†’ sent (cached token, role=query) [11:42:23] [SIG] hello_ok received for query connection - ready to query agents [11:42:23] [SIG] get_agents request sent for sessionId=ILUIWU [11:42:23] [SIG] get_agents request sent for sessionId=iosILUIWU [11:42:23] [SERVER] Stopped reconnect polling [11:42:23] [SIG] agents_list received: [] [11:42:23] [SIG] agents_list received: [] [11:42:24] [COMBINED_FETCH] Loaded 6519 read receipts, 779 messages with reactions [11:42:24] [FAST_REFRESH] Enriched 52 messages with readBy data [11:42:24] [CLIENT_SIG] Event received: type=3 messageId=17747 [11:42:24] [WS_EVENT] Received event: type=3, messageId=17747 [11:42:24] [WS_EVENT] Read receipt for message 17747 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:42:24] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17747, 17746, 17745, 17744, 17743] [11:42:24] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:42:24] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:42:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:42:24] [MENU] dismissAnyExistingMenu called [11:42:24] [MENU] dismissAnyExistingMenu completed [11:42:24] [MENU] dismissAnyExistingMenu called [11:42:24] [MENU] dismissAnyExistingMenu completed [11:42:24] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:42:24] [CELL_UPLOAD] β†’ not my message, setting complete [11:42:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:42:26] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:26] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt [11:42:26] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:33] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out. [11:42:33] [WS] Query connection error - cleaning up all agent connections and views [11:42:33] [CLEANUP] ======================================== [11:42:33] [CLEANUP] Cleaning up all agent connections and views [11:42:33] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [11:42:33] [CLEANUP] Stopped and removed 0 video connections [11:42:33] [CLEANUP] Removed 0 video views [11:42:33] [CLEANUP] Removed 0 feed scroll views [11:42:33] [CLEANUP] Removed 0 status labels [11:42:33] [CLEANUP] Reset agent query state [11:42:33] [CLEANUP] Updated page indicator [11:42:33] [CLEANUP] Rebuilt video layout [11:42:33] [CLEANUP] βœ… All agent connections and views cleaned up [11:42:33] [CLEANUP] ======================================== [11:42:33] [SERVER] Starting reconnect polling (5s interval) [11:42:36] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:42:36] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=52, isReloading=false [11:42:36] [SEND_MESSAGE] βœ… Added optimistic message id=-3 to arrays, newMsgCount=53 [11:42:36] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-3, 17747, 17746, 17745, 17744] [11:42:36] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:42:36] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:42:37] [CLIENT_SIG] Event received: type=0 messageId=17748 [11:42:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17748,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:42:36"} [11:42:37] [WS_EVENT] Received event: type=0, messageId=17748 [11:42:37] [WS_EVENT] πŸ“¨ New message notification (msgId=17748) - triggering incremental refresh, currentMsgCount=53 [11:42:37] [CHAT] receive_message.php JSON: ["file_name": , "message_type": 0, "message_id": 17748, "ok": 1, "session_id": ILUIWU, "datesent_utc": 2026-01-15 10:42:36] [11:42:37] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=53 [11:42:37] [DB_UPGRADE] Upgrading message ID: -3 β†’ 17748, preserveOriginalDate=false [11:42:37] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17747 [11:42:37] [DB_UPGRADE] βœ… Upgraded -3 β†’ 17748 with send_status=0, 1 row(s) affected [11:42:37] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -3 β†’ 17748 [11:42:37] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -3 β†’ 17748 [11:42:37] ReloadData 9 [11:42:37] [INCREMENTAL_SYNC] βœ… Found 1 new messages [11:42:37] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:42:37] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=53 [11:42:37] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[17696, 17697, 17698, 17699, 17700] [11:42:38] [SERVER] Polling - attempting to reconnect... [11:42:39] [PUSH] Silent push received [11:42:39] [PUSH_EMBED] No embedded message_data in notification [11:42:39] [PUSH] No embedded data, pre-loading messages from server [11:42:39] [PUSH_PRELOAD] Fetching messages for instant display cache [11:42:39] [PUSH] Silent push received [11:42:39] [PUSH_EMBED] No embedded message_data in notification [11:42:39] [PUSH] No embedded data, pre-loading messages from server [11:42:39] [PUSH_PRELOAD] Fetching messages for instant display cache [11:42:39] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:42:39] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [17698] [11:42:39] [PUSH_PRELOAD] ⚑ Pre-cached 51 messages for instant display (preserved 1 from push) [11:42:39] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:42:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17748, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [11:42:39] [PUSH] Parsed message_id: 17748 [11:42:39] [PUSH] Parsed operation_type: 3 [11:42:39] [PUSH] Taking direct action: opType=3, messageId=17748 [11:42:39] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17748 [11:42:39] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:42:39] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [17698] [11:42:39] [PUSH_PRELOAD] ⚑ Pre-cached 51 messages for instant display (preserved 1 from push) [11:42:39] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:42:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17748, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [11:42:39] [PUSH] Parsed message_id: 17748 [11:42:39] [PUSH] Parsed operation_type: 3 [11:42:39] [PUSH] Taking direct action: opType=3, messageId=17748 [11:42:39] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17748 [11:42:39] [CLIENT_SIG] Event received: type=3 messageId=17748 [11:42:39] [WS_EVENT] Received event: type=3, messageId=17748 [11:42:39] [WS_EVENT] Read receipt for message 17748 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:43] [SERVER] Polling - attempting to reconnect... [11:42:48] [SERVER] Polling - attempting to reconnect... [11:42:53] [SERVER] Polling - attempting to reconnect... [11:42:57] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:57] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:42:58] [SERVER] Polling - attempting to reconnect... [11:42:59] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:42:59 +0000 - type: unknown, operation_type: 0, message_id: 17749, session_id: ILUIWU, state: 0 [11:42:59] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17749, AnyHashable("message_data"): { datesent = "2026-01-15 10:42:58"; "file_name" = ""; message = "\Ud83e\Uddd0\Ud83e\Uddd0\Ud83e\Uddd0"; "message_id" = 17749; "message_type" = 0; "prev_session_message_id" = 17748; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:42:59] [PUSH] App active - suppressing notification UI, posting internal event [11:42:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17749, type=0, sender=Esra [11:42:59] [PUSH_EMBED] βœ… Saved message 17749 to local DB (sync) [11:42:59] [PUSH_EMBED] Inserted message 17749 into existing cache (now 52 messages) [11:42:59] [PUSH_EMBED] Fetching evolution data for message 17749 in background [11:42:59] [PUSH_EMBED] βœ… Fully processed message 17749 [11:42:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17749, AnyHashable("message_data"): { datesent = "2026-01-15 10:42:58"; "file_name" = ""; message = "\Ud83e\Uddd0\Ud83e\Uddd0\Ud83e\Uddd0"; "message_id" = 17749; "message_type" = 0; "prev_session_message_id" = 17748; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:42:59] [PUSH_EMBED_VC] Processing embedded message: id=17749, type=0, sender=Esra, prevId=17748 [11:42:59] [PUSH_EMBED_VC] Inserted message 17749 into allMessagesWithReadBy (now 54 messages) [11:42:59] [PUSH_EMBED_VC] βœ… Previous message 17748 exists in memory [11:42:59] [PUSH] ⚑ Embedded message handled directly in ViewController [11:42:59] [PUSH] Parsed message_id: 17749 [11:42:59] [PUSH] Parsed operation_type: 0 [11:42:59] [PUSH] Taking direct action: opType=0, messageId=17749 [11:42:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17749 [11:42:59] [PUSH] ⚑ Message 17749 already in memory - skipping duplicate notification entirely [11:42:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:42:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:42:59] [PUSH_UI] Message 17749 already in memory - skipping insert [11:42:59] [PUSH_EMBED_VC] Saved message 17749 to local DB [11:42:59] [PUSH] Silent push received [11:42:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17749, type=0, sender=Esra [11:42:59] [PUSH_EMBED] βœ… Saved message 17749 to local DB (sync) [11:42:59] [PUSH_EMBED] Fetching evolution data for message 17749 in background [11:42:59] [PUSH_EMBED] βœ… Fully processed message 17749 [11:42:59] [PUSH] Embedded message handled instantly from silent push [11:42:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:42:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:42:59] [PUSH_UI] Message 17749 already in memory - skipping insert [11:42:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17749, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:42:58"; "file_name" = ""; message = "\Ud83e\Uddd0\Ud83e\Uddd0\Ud83e\Uddd0"; "message_id" = 17749; "message_type" = 0; "prev_session_message_id" = 17748; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0] [11:42:59] [PUSH_EMBED_VC] Message 17749 already in memory - skipping [11:42:59] [PUSH] ⚑ Embedded message handled directly in ViewController [11:42:59] [PUSH] Parsed message_id: 17749 [11:42:59] [PUSH] Parsed operation_type: 0 [11:42:59] [PUSH] Taking direct action: opType=0, messageId=17749 [11:42:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17749 [11:42:59] [PUSH] ⚑ Message 17749 already in memory - skipping duplicate notification entirely [11:42:59] [PUSH_EMBED] Got evolution data for message 17749, saving to local DB [11:42:59] [PUSH_EMBED] Saved evolution data for message 17749 [11:42:59] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[17749, 17696, 17697, 17698, 17699] [11:42:59] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17748 β†’ 17749 [11:43:00] [CLIENT_SIG] Event received: type=0 messageId=17749 [11:43:00] [WS_EVENT] Received event: type=0, messageId=17749 [11:43:00] [WS_EVENT] πŸ“¨ New message notification (msgId=17749) - triggering incremental refresh, currentMsgCount=54 [11:43:00] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=54 [11:43:00] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17749 [11:43:00] [PUSH_EMBED] Got evolution data for message 17749, saving to local DB [11:43:00] [PUSH_EMBED] Saved evolution data for message 17749 [11:43:00] [INCREMENTAL_SYNC] βœ… No new messages [11:43:00] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=54 [11:43:01] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU') [11:43:01] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU') [11:43:02] [PUSH] Silent push received [11:43:02] [PUSH_EMBED] No embedded message_data in notification [11:43:02] [PUSH] No embedded data, pre-loading messages from server [11:43:02] [PUSH_PRELOAD] Fetching messages for instant display cache [11:43:02] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:43:02] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [17699, 17698] [11:43:02] [PUSH_PRELOAD] ⚑ Pre-cached 52 messages for instant display (preserved 2 from push) [11:43:02] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:43:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17749] [11:43:02] [PUSH] Parsed message_id: 17749 [11:43:02] [PUSH] Parsed operation_type: 3 [11:43:02] [PUSH] Taking direct action: opType=3, messageId=17749 [11:43:02] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17749 [11:43:03] [SERVER] Polling - attempting to reconnect... [11:43:04] [CLIENT_SIG] Event received: type=3 messageId=17749 [11:43:04] [WS_EVENT] Received event: type=3, messageId=17749 [11:43:04] [WS_EVENT] Read receipt for message 17749 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:43:08] [SERVER] Polling - attempting to reconnect... [11:43:13] [SERVER] Polling - attempting to reconnect... [11:43:14] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU') [11:43:18] [SERVER] Polling - attempting to reconnect... [11:43:21] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:43:21] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=54, isReloading=false [11:43:21] [SEND_MESSAGE] βœ… Added optimistic message id=-4 to arrays, newMsgCount=55 [11:43:21] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-4, 17749, 17748, 17747, 17746] [11:43:21] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:43:21] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:43:23] [CLIENT_SIG] Event received: type=0 messageId=17750 [11:43:23] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17750,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:43:21"} [11:43:23] [WS_EVENT] Received event: type=0, messageId=17750 [11:43:23] [WS_EVENT] πŸ“¨ New message notification (msgId=17750) - triggering incremental refresh, currentMsgCount=55 [11:43:23] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "ok": 1, "message_id": 17750, "datesent_utc": 2026-01-15 10:43:21, "file_name": , "message_type": 0] [11:43:23] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=55 [11:43:23] [DB_UPGRADE] Upgrading message ID: -4 β†’ 17750, preserveOriginalDate=false [11:43:23] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17749 [11:43:23] [DB_UPGRADE] βœ… Upgraded -4 β†’ 17750 with send_status=0, 1 row(s) affected [11:43:23] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -4 β†’ 17750 [11:43:23] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -4 β†’ 17750 [11:43:23] ReloadData 9 [11:43:23] [INCREMENTAL_SYNC] βœ… Found 1 new messages [11:43:23] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:43:23] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=55 [11:43:23] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[17696, 17697, 17698, 17699, 17700] [11:43:23] [SERVER] Polling - attempting to reconnect... [11:43:25] [MENU] dismissAnyExistingMenu called [11:43:25] [MENU] dismissAnyExistingMenu completed [11:43:25] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:43:25] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:43:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:43:25] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:43:25] [CELL_UPLOAD] β†’ not my message, setting complete [11:43:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:43:27] [MENU] dismissAnyExistingMenu called [11:43:27] [MENU] dismissAnyExistingMenu completed [11:43:28] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:43:28] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:43:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:43:28] [SERVER] Polling - attempting to reconnect... [11:43:33] [SERVER] Polling - attempting to reconnect... [11:43:35] [PUSH] Silent push received [11:43:35] [PUSH_EMBED] No embedded message_data in notification [11:43:35] [PUSH] No embedded data, pre-loading messages from server [11:43:35] [PUSH_PRELOAD] Fetching messages for instant display cache [11:43:35] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:43:35] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [17700, 17699, 17698] [11:43:35] [PUSH_PRELOAD] ⚑ Pre-cached 53 messages for instant display (preserved 3 from push) [11:43:35] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:43:35] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17750, AnyHashable("aps"): { "content-available" = 1; }] [11:43:35] [PUSH] Parsed message_id: 17750 [11:43:35] [PUSH] Parsed operation_type: 3 [11:43:35] [PUSH] Taking direct action: opType=3, messageId=17750 [11:43:35] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17750 [11:43:37] [CLIENT_SIG] Event received: type=3 messageId=17750 [11:43:37] [WS_EVENT] Received event: type=3, messageId=17750 [11:43:37] [WS_EVENT] Read receipt for message 17750 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:43:38] [SERVER] Polling - attempting to reconnect... [11:43:39] [BROADCAST] Starting camera broadcast on session: iosILUIWU [11:43:39] Initing with camera 0 [11:43:39] [START] AgentController.start() called with session: iosILUIWU [11:43:39] [START] Cancelling any existing idle stop timer [11:43:39] [BROADCAST] Lightbulb shown at lower left, frame=(20.0, 800.0, 50.0, 50.0) [11:43:39] WS connected [11:43:42] [CAM] βœ… Connected to signaling server. Session: iosILUIWU, agentId: WMuOuC1lCGyzElcA [11:43:42] [CAM] helloOK β†’ connected=true, myAgentId=WMuOuC1lCGyzElcA [11:43:42] [WEBRTC] Creating new WebRTC client [11:43:42] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1 [11:43:42] [CODEC] Agent selected encoder: AV1 (best quality) [11:43:42] [WS AUDIO] Initializing WebSocket audio sender... [11:43:42] [WS AUDIO] βœ… WebSocket audio sender initialized [11:43:42] [ICE] Agent using 4 ICE urls: - stun:stun.l.google.com:19302 - turn:crivello.dyndns.org:3478?transport=udp - turn:crivello.dyndns.org:3478?transport=tcp - turns:crivello.dyndns.org:5349?transport=tcp [11:43:42] [ICE] Using 2 ICE server entries [11:43:42] [SIG] agent_connected received for sessionId=iosILUIWU agentId=WMuOuC1lCGyzElcA [11:43:42] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:WMuOuC1lCGyzElcA [11:43:42] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": WMuOuC1lCGyzElcA]] [11:43:42] [SIG] agent_connected received for sessionId=iosILUIWU agentId=WMuOuC1lCGyzElcA [11:43:42] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:WMuOuC1lCGyzElcA [11:43:42] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": WMuOuC1lCGyzElcA, "connected": 1]] [11:43:42] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30 [11:43:42] [CAPTURE] Creating audio track [11:43:42] [CAPTURE] DataChannelAudioSender already exists [11:43:42] [CAPTURE] Creating front video source and track [11:43:42] [CAPTURE] Creating back video source and track [11:43:42] localVideoTrackFront ok [11:43:42] localVideoTrackBack ok [11:43:42] Marking tracks as ready and firing callbacks [11:43:42] [CAPTURE] βœ… Device supports MultiCam, starting dual camera session [11:43:42] [CAPTURE] configureAndStartMultiCamSession() starting... [11:43:42] Video capture stopped (audio still running) [11:43:42] [CAPTURE] Created MultiCamSession and began configuration [11:43:42] [CAPTURE] Looking for camera devices... [11:43:42] [CAPTURE] βœ… Found front camera: Front Camera [11:43:42] [CAPTURE] βœ… Found back camera: Back Camera [11:43:42] Selected camera format: 1920x1080, pixel format: 875704438 [11:43:42] [CAPTURE] Enabled continuous autofocus for front camera [11:43:42] Selected camera format: 1920x1080, pixel format: 875704438 [11:43:42] [CAPTURE] Enabled continuous autofocus for back camera [11:43:42] Selected camera format: 640x480, pixel format: 875704438 [11:43:42] Selected camera format: 640x480, pixel format: 875704438 [11:43:42] [iOS AUDIO] ========== START CAPTURE ========== [11:43:42] [iOS AUDIO] BEFORE - category: AVAudioSessionCategorySoloAmbient [11:43:42] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeDefault [11:43:42] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false [11:43:42] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"] [11:43:42] [iOS AUDIO] BEFORE - currentRoute.inputs: [] [11:43:42] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"] [11:43:42] [iOS AUDIO] Setting category to .playAndRecord... [11:43:42] [iOS AUDIO] Activating audio session... [11:43:42] [iOS AUDIO] βœ… Audio session configured [11:43:42] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord [11:43:42] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat [11:43:42] [iOS AUDIO] AFTER - currentRoute.inputs: ["iPhone Microphone"] [11:43:42] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"] [11:43:42] [iOS AUDIO] AFTER - recordPermission: 1735552628 [11:43:42] [iOS AUDIO] Creating AVAudioEngine... [11:43:42] [iOS AUDIO] Got inputNode: [11:43:42] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1 [11:43:42] [iOS AUDIO] Installing tap on inputNode... [11:43:42] [iOS AUDIO] βœ… Tap installed [11:43:42] [iOS AUDIO] Starting engine... [11:43:43] [iOS AUDIO] βœ… AVAudioEngine started [11:43:43] [iOS AUDIO] engine.isRunning: true [11:43:43] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false [11:43:43] [iOS AUDIO] ========== END START CAPTURE ========== [11:43:43] [CAPTURE] Configuration committed [11:43:43] [CAPTURE] Starting MultiCam session... [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #1: 9600 bytes (4800 samples, ~100ms) [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #2: 9600 bytes (4800 samples, ~100ms) [11:43:43] [CAPTURE] βœ… AVCaptureMultiCamSession started successfully (front + back) [11:43:43] [CAPTURE] Session running: true [11:43:43] [CAM] viewerJoin β†’ session: iosILUIWU, viewerId: 956uYVc95Ogdozn- [11:43:43] [WEBRTC] WebRTC client already exists, reusing it [11:43:43] [WEBRTC] WebRTC client already exists, reusing it [11:43:43] ensureCaptureStarted - adding peer [11:43:43] tracksReady = true [11:43:43] Added front video track to peer connection for 956uYVc95Ogdozn- [11:43:43] Added back video track to peer connection for 956uYVc95Ogdozn- [11:43:43] Added audio track to peer connection for 956uYVc95Ogdozn- [11:43:43] localVideoTrackFront ok [11:43:43] localVideoTrackBack ok [11:43:43] tracks already marked as ready [11:43:43] Peer added with tracks, notifying viewer ready [11:43:43] notifyViewerReady called [11:43:43] notifyViewerReady -> Will send [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #3: 9600 bytes (4800 samples, ~100ms) [11:43:43] [CAM] Offer β†’ session: iosILUIWU, viewerId: 956uYVc95Ogdozn- [11:43:43] [WEBRTC] WebRTC client already exists, reusing it [11:43:43] [CAM] Peer connection ready, processing offer immediately [11:43:43] Creating answer for 956uYVc95Ogdozn-. Found 3 transceivers: [11:43:43] Transceiver 0: video, direction=sendRecv, hasTrack=true [11:43:43] Transceiver 1: video, direction=sendRecv, hasTrack=true [11:43:43] Transceiver 2: audio, direction=sendRecv, hasTrack=true [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2062243479 1 udp 2122260224 192.168.1.14 52837 typ host generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote host β†’ applying [11:43:43] SEND answer for viewerId=956uYVc95Ogdozn- [11:43:43] SDP length: 4815 [11:43:43] ICE gathering state: 1 [11:43:43] ICE state for vid=956uYVc95Ogdozn-: 1 ( RTCIceConnectionState ) [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1925000251 1 udp 2122260223 10.56.51.84 58865 typ host generation 0 ufrag lf3n network-id 7 network-cost 900", "sdpMLineIndex": 0] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3503283614 1 udp 2122194687 10.27.13.80 53405 typ host generation 0 ufrag lf3n network-id 8 network-cost 900", "sdpMLineIndex": 0] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3503283614 1 udp 2122129151 10.27.13.80 50622 typ host generation 0 ufrag lf3n network-id 1 network-cost 50", "sdpMLineIndex": 0] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3503283614 1 udp 2122063615 10.27.13.80 52631 typ host generation 0 ufrag lf3n network-id 2 network-cost 50", "sdpMLineIndex": 0] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3503283614 1 udp 2121998079 10.27.13.80 54709 typ host generation 0 ufrag lf3n network-id 3 network-cost 50", "sdpMLineIndex": 0] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3503283614 1 udp 2121932543 10.27.13.80 58316 typ host generation 0 ufrag lf3n network-id 4 network-cost 50", "sdpMLineIndex": 0] [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3584145321 1 udp 1686052608 212.252.117.163 26587 typ srflx raddr 192.168.1.14 rport 52837 generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote srflx β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:184774881 1 udp 2122129152 10.121.142.99 54524 typ host generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1333591845 1 udp 2121670400 192.0.0.6 63188 typ host generation 0 ufrag qv3d network-id 5 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1333591845 1 udp 2121604864 192.0.0.6 58723 typ host generation 0 ufrag qv3d network-id 8 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3586643281 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 58723 typ host generation 0 ufrag qv3d network-id 13 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3901417910 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 64221 typ host generation 0 ufrag qv3d network-id 6 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3661946280 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 62518 typ host generation 0 ufrag qv3d network-id 7 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3661946280 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54575 typ host generation 0 ufrag qv3d network-id 9 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:751628695 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 59113 typ host generation 0 ufrag qv3d network-id 2 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2218885635 1 tcp 1518280448 192.168.1.14 49606 typ host tcptype passive generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:4121535605 1 tcp 1518149376 10.121.142.99 49607 typ host tcptype passive generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2983603121 1 tcp 1517690624 192.0.0.6 49608 typ host tcptype passive generation 0 ufrag qv3d network-id 5 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2983603121 1 tcp 1517625088 192.0.0.6 49609 typ host tcptype passive generation 0 ufrag qv3d network-id 8 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:728564165 1 tcp 1518217472 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 49610 typ host tcptype passive generation 0 ufrag qv3d network-id 13 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:371211554 1 tcp 1518088960 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 49611 typ host tcptype passive generation 0 ufrag qv3d network-id 6 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:619579708 1 tcp 1518023424 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49612 typ host tcptype passive generation 0 ufrag qv3d network-id 7 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:619579708 1 tcp 1517957888 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49613 typ host tcptype passive generation 0 ufrag qv3d network-id 9 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3529909507 1 tcp 1517889792 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49614 typ host tcptype passive generation 0 ufrag qv3d network-id 2 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2062243479 1 udp 2122260224 192.168.1.14 54286 typ host generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3584145321 1 udp 1686052608 212.252.117.163 26846 typ srflx raddr 192.168.1.14 rport 54286 generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote srflx β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:184774881 1 udp 2122129152 10.121.142.99 54845 typ host generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1333591845 1 udp 2121670400 192.0.0.6 52062 typ host generation 0 ufrag qv3d network-id 5 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1333591845 1 udp 2121604864 192.0.0.6 49187 typ host generation 0 ufrag qv3d network-id 8 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3586643281 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 64698 typ host generation 0 ufrag qv3d network-id 13 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3901417910 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 49284 typ host generation 0 ufrag qv3d network-id 6 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3661946280 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 62899 typ host generation 0 ufrag qv3d network-id 7 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3661946280 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53727 typ host generation 0 ufrag qv3d network-id 9 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:751628695 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 59312 typ host generation 0 ufrag qv3d network-id 2 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2218885635 1 tcp 1518280448 192.168.1.14 49615 typ host tcptype passive generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:4121535605 1 tcp 1518149376 10.121.142.99 49616 typ host tcptype passive generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2983603121 1 tcp 1517690624 192.0.0.6 49617 typ host tcptype passive generation 0 ufrag qv3d network-id 5 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:2983603121 1 tcp 1517625088 192.0.0.6 49618 typ host tcptype passive generation 0 ufrag qv3d network-id 8 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:728564165 1 tcp 1518217472 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 49619 typ host tcptype passive generation 0 ufrag qv3d network-id 13 network-cost 900 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:371211554 1 tcp 1518088960 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 49620 typ host tcptype passive generation 0 ufrag qv3d network-id 6 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:619579708 1 tcp 1518023424 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49621 typ host tcptype passive generation 0 ufrag qv3d network-id 7 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:619579708 1 tcp 1517957888 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49622 typ host tcptype passive generation 0 ufrag qv3d network-id 9 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3529909507 1 tcp 1517889792 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49623 typ host tcptype passive generation 0 ufrag qv3d network-id 2 network-cost 50 [11:43:43] [ICE] remote host β†’ applying [11:43:43] [ICE] agent local srflx [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) srflx candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1472521169 1 udp 1686052607 194.230.158.50 48671 typ srflx raddr 10.56.51.84 rport 58865 generation 0 ufrag lf3n network-id 7 network-cost 900"] [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3079016334 1 udp 41886207 192.168.1.31 49908 typ relay raddr 212.252.117.163 rport 26587 generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=49908) [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3079016334 1 udp 41886207 192.168.1.31 49398 typ relay raddr 212.252.117.163 rport 26846 generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=49398) [11:43:43] [ICE] agent local srflx [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) srflx candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1472521169 1 udp 1686052607 194.230.158.50 62158 typ srflx raddr 10.56.51.84 rport 58865 generation 0 ufrag lf3n network-id 7 network-cost 900"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:208850595 1 tcp 1518280447 10.56.51.84 50380 typ host tcptype passive generation 0 ufrag lf3n network-id 7 network-cost 900"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2919251718 1 tcp 1518214911 10.27.13.80 50385 typ host tcptype passive generation 0 ufrag lf3n network-id 8 network-cost 900"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2919251718 1 tcp 1518149375 10.27.13.80 50390 typ host tcptype passive generation 0 ufrag lf3n network-id 1 network-cost 50"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2919251718 1 tcp 1518083839 10.27.13.80 50395 typ host tcptype passive generation 0 ufrag lf3n network-id 2 network-cost 50"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2919251718 1 tcp 1518018303 10.27.13.80 50400 typ host tcptype passive generation 0 ufrag lf3n network-id 3 network-cost 50"] [11:43:43] [ICE] agent local host [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) host candidate [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #4: 9600 bytes (4800 samples, ~100ms) [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2919251718 1 tcp 1517952767 10.27.13.80 50405 typ host tcptype passive generation 0 ufrag lf3n network-id 4 network-cost 50"] [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1227676442 1 udp 25108735 192.168.1.31 61365 typ relay raddr 212.252.117.163 rport 27096 generation 0 ufrag qv3d network-id 1 network-cost 10 [11:43:43] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=61365) [11:43:43] [ICE] agent local relay β†’ ip=192.168.1.31 port=61110 [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) relay candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3485161455 1 udp 25108735 192.168.1.31 61110 typ relay raddr 194.230.158.50 rport 24560 generation 0 ufrag lf3n network-id 7 network-cost 900"] [11:43:43] [ICE] agent local relay β†’ ip=192.168.1.31 port=49952 [11:43:43] [ICE] local β†’ remote (956uYVc95Ogdozn-) relay candidate [11:43:43] SEND ice for viewerId=956uYVc95Ogdozn- [11:43:43] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2977215863 1 udp 41886207 192.168.1.31 49952 typ relay raddr 194.230.158.50 rport 48671 generation 0 ufrag lf3n network-id 7 network-cost 900"] [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3402442667 1 udp 1685921535 5.24.152.206 36744 typ srflx raddr 10.121.142.99 rport 54524 generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote srflx β†’ applying [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:1227676442 1 udp 24977663 192.168.1.31 50458 typ relay raddr 5.24.152.206 rport 36818 generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=50458) [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #5: 9600 bytes (4800 samples, ~100ms) [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #6: 9600 bytes (4800 samples, ~100ms) [11:43:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:43:43] [CAM] Peer connection ready, processing ICE candidate immediately [11:43:43] addRemoteCandidate for vid=956uYVc95Ogdozn- [11:43:43] Found s:candidate:3079016334 1 udp 41755135 192.168.1.31 61663 typ relay raddr 5.24.152.206 rport 36744 generation 0 ufrag qv3d network-id 12 network-cost 900 [11:43:43] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=61663) [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #7: 9600 bytes (4800 samples, ~100ms) [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #8: 9600 bytes (4800 samples, ~100ms) [11:43:43] [SERVER] Polling - attempting to reconnect... [11:43:43] [iOS AUDIO] πŸ“€ Sent packet #9: 9600 bytes (4800 samples, ~100ms) [11:43:44] [iOS AUDIO] πŸ“€ Sent packet #10: 9600 bytes (4800 samples, ~100ms) [11:43:45] ICE state for vid=956uYVc95Ogdozn-: 2 ( RTCIceConnectionState ) [11:43:45] [STATS] starting poll for vid=956uYVc95Ogdozn- [11:43:47] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:43:48] [iOS AUDIO] βœ… Streaming: 50 packets sent [11:43:48] [SERVER] Polling - attempting to reconnect... [11:43:53] [SERVER] Polling - attempting to reconnect... [11:43:58] [SERVER] Polling - attempting to reconnect... [11:44:03] [SERVER] Polling - attempting to reconnect... [11:44:06] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:44:08] [SERVER] Polling - attempting to reconnect... [11:44:09] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:44:13] [SERVER] Polling - attempting to reconnect... [11:44:18] [SERVER] Polling - attempting to reconnect... [11:44:23] [SERVER] Polling - attempting to reconnect... [11:44:28] [SERVER] Polling - attempting to reconnect... [11:44:33] [iOS AUDIO] πŸ“Š 500 audio packets sent [11:44:33] [SERVER] Polling - attempting to reconnect... [11:44:38] [SERVER] Polling - attempting to reconnect... [11:44:43] [SERVER] Polling - attempting to reconnect... [11:44:48] [SERVER] Polling - attempting to reconnect... [11:44:53] [SERVER] Polling - attempting to reconnect... [11:44:57] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:44:57] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:44:58] [SERVER] Polling - attempting to reconnect... [11:45:03] [SERVER] Polling - attempting to reconnect... [11:45:06] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:45:08] [SERVER] Polling - attempting to reconnect... [11:45:09] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:45:13] [SERVER] Polling - attempting to reconnect... [11:45:18] [SERVER] Polling - attempting to reconnect... [11:45:22] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:45:23] [iOS AUDIO] πŸ“Š 1000 audio packets sent [11:45:23] [SERVER] Polling - attempting to reconnect... [11:45:25] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:45:25 +0000 - type: unknown, operation_type: 0, message_id: 17751, session_id: ILUIWU, state: 0 [11:45:25] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17751, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:45:23"; "file_name" = ""; message = "Ha ha babyyy \Ud83d\Ude0f I love the idea, if you know that before, I\U2019ll do my best to get 1-1 \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17751; "message_type" = 0; "prev_session_message_id" = 17750; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:45:25] [PUSH] App active - suppressing notification UI, posting internal event [11:45:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17751, type=0, sender=Esra [11:45:25] [PUSH_EMBED] βœ… Saved message 17751 to local DB (sync) [11:45:25] [PUSH_EMBED] Inserted message 17751 into existing cache (now 54 messages) [11:45:25] [PUSH_EMBED] Fetching evolution data for message 17751 in background [11:45:25] [PUSH_EMBED] βœ… Fully processed message 17751 [11:45:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17751, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:45:23"; "file_name" = ""; message = "Ha ha babyyy \Ud83d\Ude0f I love the idea, if you know that before, I\U2019ll do my best to get 1-1 \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17751; "message_type" = 0; "prev_session_message_id" = 17750; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:45:25] [PUSH_EMBED_VC] Processing embedded message: id=17751, type=0, sender=Esra, prevId=17750 [11:45:25] [PUSH_EMBED_VC] Inserted message 17751 into allMessagesWithReadBy (now 56 messages) [11:45:25] [PUSH_EMBED_VC] βœ… Previous message 17750 exists in memory [11:45:25] [PUSH] ⚑ Embedded message handled directly in ViewController [11:45:25] [PUSH] Parsed message_id: 17751 [11:45:25] [PUSH] Parsed operation_type: 0 [11:45:25] [PUSH] Taking direct action: opType=0, messageId=17751 [11:45:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17751 [11:45:25] [PUSH] ⚑ Message 17751 already in memory - skipping duplicate notification entirely [11:45:25] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:45:25] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:45:25] [PUSH_UI] Message 17751 already in memory - skipping insert [11:45:25] [PUSH_EMBED_VC] Saved message 17751 to local DB [11:45:25] [PUSH] Silent push received [11:45:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17751, type=0, sender=Esra [11:45:25] [PUSH_EMBED] βœ… Saved message 17751 to local DB (sync) [11:45:25] [PUSH_EMBED] Fetching evolution data for message 17751 in background [11:45:25] [PUSH_EMBED] βœ… Fully processed message 17751 [11:45:25] [PUSH] Embedded message handled instantly from silent push [11:45:25] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:45:25] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:45:25] [PUSH_UI] Message 17751 already in memory - skipping insert [11:45:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 10:45:23"; "file_name" = ""; message = "Ha ha babyyy \Ud83d\Ude0f I love the idea, if you know that before, I\U2019ll do my best to get 1-1 \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17751; "message_type" = 0; "prev_session_message_id" = 17750; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17751] [11:45:25] [PUSH_EMBED_VC] Message 17751 already in memory - skipping [11:45:25] [PUSH] ⚑ Embedded message handled directly in ViewController [11:45:25] [PUSH] Parsed message_id: 17751 [11:45:25] [PUSH] Parsed operation_type: 0 [11:45:25] [PUSH] Taking direct action: opType=0, messageId=17751 [11:45:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17751 [11:45:25] [PUSH] ⚑ Message 17751 already in memory - skipping duplicate notification entirely [11:45:26] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[17751, 17696, 17697, 17698, 17699] [11:45:26] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17750 β†’ 17751 [11:45:26] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:45:26] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:45:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:45:26] [CLIENT_SIG] Event received: type=0 messageId=17751 [11:45:26] [WS_EVENT] Received event: type=0, messageId=17751 [11:45:26] [WS_EVENT] πŸ“¨ New message notification (msgId=17751) - triggering incremental refresh, currentMsgCount=56 [11:45:26] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=56 [11:45:26] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17751 [11:45:26] [INCREMENTAL_SYNC] βœ… No new messages [11:45:26] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=56 [11:45:26] [PUSH_EMBED] Got evolution data for message 17751, saving to local DB [11:45:27] [PUSH_EMBED] Saved evolution data for message 17751 [11:45:27] [PUSH_EMBED] Got evolution data for message 17751, saving to local DB [11:45:27] [PUSH_EMBED] Saved evolution data for message 17751 [11:45:28] [PUSH] Silent push received [11:45:28] [PUSH_EMBED] No embedded message_data in notification [11:45:28] [PUSH] No embedded data, pre-loading messages from server [11:45:28] [PUSH_PRELOAD] Fetching messages for instant display cache [11:45:28] [SERVER] Polling - attempting to reconnect... [11:45:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:45:29] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17701, 17700, 17699, 17698] [11:45:29] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:45:29] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:45:29] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17751] [11:45:29] [PUSH] Parsed message_id: 17751 [11:45:29] [PUSH] Parsed operation_type: 3 [11:45:29] [PUSH] Taking direct action: opType=3, messageId=17751 [11:45:29] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17751 [11:45:30] [CLIENT_SIG] Event received: type=3 messageId=17751 [11:45:30] [WS_EVENT] Received event: type=3, messageId=17751 [11:45:30] [WS_EVENT] Read receipt for message 17751 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:45:33] [SERVER] Polling - attempting to reconnect... [11:45:35] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:45:38] [SERVER] Polling - attempting to reconnect... [11:45:41] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:45:41 +0000 - type: unknown, operation_type: 2, message_id: 17751, session_id: ILUIWU, state: 0 [11:45:41] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = ""; title = StreamCam; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 17751] [11:45:41] [PUSH] App active - suppressing notification UI, posting internal event [11:45:41] [PUSH_EMBED] No embedded message_data in notification [11:45:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = ""; title = StreamCam; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 17751] [11:45:41] [PUSH] Parsed message_id: 17751 [11:45:41] [PUSH] Parsed operation_type: 2 [11:45:41] [PUSH] Taking direct action: opType=2, messageId=17751 [11:45:41] [PUSH] TakeActionFromPush called: OperationType=2, MessageIds=17751 [11:45:41] [PUSH] Handling message fetch for opType=2, messageId=17751 [11:45:41] [PUSH] Requesting URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=17751 [11:45:41] [PUSH] Silent push received [11:45:41] [PUSH_EMBED] No embedded message_data in notification [11:45:41] [PUSH] No embedded data, pre-loading messages from server [11:45:41] [PUSH_PRELOAD] Fetching messages for instant display cache [11:45:41] [PUSH] Silent push received [11:45:41] [PUSH_EMBED] No embedded message_data in notification [11:45:41] [PUSH] No embedded data, pre-loading messages from server [11:45:41] [PUSH_PRELOAD] Fetching messages for instant display cache [11:45:41] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:45:41] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17701, 17700, 17699, 17698] [11:45:41] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:45:41] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:45:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = ""; title = StreamCam; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 17751] [11:45:41] [PUSH] Parsed message_id: 17751 [11:45:41] [PUSH] Parsed operation_type: 2 [11:45:41] [PUSH] Taking direct action: opType=2, messageId=17751 [11:45:41] [PUSH] TakeActionFromPush called: OperationType=2, MessageIds=17751 [11:45:41] [PUSH] Handling message fetch for opType=2, messageId=17751 [11:45:41] [PUSH] Requesting URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=17751 [11:45:41] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:45:41] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17701, 17700, 17699, 17698] [11:45:41] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:45:41] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:45:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = ""; title = StreamCam; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 17751, AnyHashable("session_id"): ILUIWU] [11:45:41] [PUSH] Parsed message_id: 17751 [11:45:41] [PUSH] Parsed operation_type: 2 [11:45:41] [PUSH] Taking direct action: opType=2, messageId=17751 [11:45:41] [PUSH] TakeActionFromPush called: OperationType=2, MessageIds=17751 [11:45:41] [PUSH] Handling message fetch for opType=2, messageId=17751 [11:45:41] [PUSH] Requesting URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=17751 [11:45:42] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:45:42] [CLIENT_SIG] Event received: type=2 messageId=17751 [11:45:42] [WS_EVENT] Received event: type=2, messageId=17751 [11:45:42] [WS_EVENT] Message edited/updated: 17751 [11:45:43] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[17751, 17696, 17697, 17698, 17699] [11:45:43] [PUSH] Silent push received [11:45:43] [PUSH_EMBED] No embedded message_data in notification [11:45:43] [PUSH] No embedded data, pre-loading messages from server [11:45:43] [PUSH_PRELOAD] Fetching messages for instant display cache [11:45:43] [SERVER] Polling - attempting to reconnect... [11:45:47] [PUSH] Silent push received [11:45:47] [PUSH_EMBED] No embedded message_data in notification [11:45:47] [PUSH] No embedded data, pre-loading messages from server [11:45:47] [PUSH_PRELOAD] Fetching messages for instant display cache [11:45:48] [SERVER] Polling - attempting to reconnect... [11:45:49] [PUSH] get_message response: HTTP 200, 611 bytes [11:45:49] [PUSH] get_message response body: [{"message_type":0,"message_id":17751,"session_id":"ILUIWU","message":"Ha ha babyyy 😏 I love the idea, if you know that before, I could do my best to get 1-1 πŸ€ͺπŸ€ͺ","file_name":"","msgread":0,"datesent":"2026-01-15 10:45:23","timer":0,"timer_started_at":null,"timer_played":0,"sender_id":"EDAD55A1-003F-415D-AA60-672B34B504FE","sender_name":"Esra","distance":null,"link_url":null,"link_title":null,"link_description":null,"link_image_url":null,"reply_to_id":null,"replied_message":null,"replied_sender_id":null,"replied_sender_name":null,"read_by":["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"],"reactions":[]}] [11:45:49] [PUSH] Updated readBy in allMessagesWithReadBy for message 17751: readBy=1 [11:45:49] [PUSH] Updated readBy in chatMessages for message 17751: readBy=1 [11:45:49] [PUSH] get_message response: HTTP 200, 611 bytes [11:45:49] [PUSH] get_message response body: [{"message_type":0,"message_id":17751,"session_id":"ILUIWU","message":"Ha ha babyyy 😏 I love the idea, if you know that before, I could do my best to get 1-1 πŸ€ͺπŸ€ͺ","file_name":"","msgread":0,"datesent":"2026-01-15 10:45:23","timer":0,"timer_started_at":null,"timer_played":0,"sender_id":"EDAD55A1-003F-415D-AA60-672B34B504FE","sender_name":"Esra","distance":null,"link_url":null,"link_title":null,"link_description":null,"link_image_url":null,"reply_to_id":null,"replied_message":null,"replied_sender_id":null,"replied_sender_name":null,"read_by":["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"],"reactions":[]}] [11:45:49] [PUSH] Updated readBy in allMessagesWithReadBy for message 17751: readBy=1 [11:45:49] [PUSH] Updated readBy in chatMessages for message 17751: readBy=1 [11:45:49] [PUSH] get_message response: HTTP 200, 611 bytes [11:45:49] [PUSH] get_message response body: [{"message_type":0,"message_id":17751,"session_id":"ILUIWU","message":"Ha ha babyyy 😏 I love the idea, if you know that before, I could do my best to get 1-1 πŸ€ͺπŸ€ͺ","file_name":"","msgread":1,"datesent":"2026-01-15 10:45:23","timer":0,"timer_started_at":null,"timer_played":0,"sender_id":"EDAD55A1-003F-415D-AA60-672B34B504FE","sender_name":"Esra","distance":null,"link_url":null,"link_title":null,"link_description":null,"link_image_url":null,"reply_to_id":null,"replied_message":null,"replied_sender_id":null,"replied_sender_name":null,"read_by":["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"],"reactions":[]}] [11:45:49] [PUSH] Updated readBy in allMessagesWithReadBy for message 17751: readBy=1 [11:45:49] [PUSH] Updated readBy in chatMessages for message 17751: readBy=1 [11:45:49] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:45:49] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17701, 17700, 17699, 17698] [11:45:49] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:45:49] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:45:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17751] [11:45:49] [PUSH] Parsed message_id: 17751 [11:45:49] [PUSH] Parsed operation_type: 3 [11:45:49] [PUSH] Taking direct action: opType=3, messageId=17751 [11:45:49] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17751 [11:45:49] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:45:49] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17701, 17700, 17699, 17698] [11:45:49] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:45:49] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:45:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17751, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [11:45:49] [PUSH] Parsed message_id: 17751 [11:45:49] [PUSH] Parsed operation_type: 3 [11:45:49] [PUSH] Taking direct action: opType=3, messageId=17751 [11:45:49] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17751 [11:45:53] [SERVER] Polling - attempting to reconnect... [11:45:58] [SERVER] Polling - attempting to reconnect... [11:46:03] [SERVER] Polling - attempting to reconnect... [11:46:08] [SERVER] Polling - attempting to reconnect... [11:46:13] [iOS AUDIO] πŸ“Š 1500 audio packets sent [11:46:13] [SERVER] Polling - attempting to reconnect... [11:46:18] [SERVER] Polling - attempting to reconnect... [11:46:23] [SERVER] Polling - attempting to reconnect... [11:46:28] [SERVER] Polling - attempting to reconnect... [11:46:33] [SERVER] Polling - attempting to reconnect... [11:46:38] [SERVER] Polling - attempting to reconnect... [11:46:43] [SERVER] Polling - attempting to reconnect... [11:46:48] [SERVER] Polling - attempting to reconnect... [11:46:53] [SERVER] Polling - attempting to reconnect... [11:46:58] [SERVER] Polling - attempting to reconnect... [11:47:03] [iOS AUDIO] πŸ“Š 2000 audio packets sent [11:47:03] [SERVER] Polling - attempting to reconnect... [11:47:04] [CLIENT_SIG] Event received: type=0 messageId=17752 [11:47:04] [WS_EVENT] Received event: type=0, messageId=17752 [11:47:04] [WS_EVENT] πŸ“¨ New message notification (msgId=17752) - triggering incremental refresh, currentMsgCount=56 [11:47:04] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=56 [11:47:04] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17751 [11:47:04] [INCREMENTAL_SYNC] βœ… Found 1 new messages [11:47:04] DOWNLOADIIING t_c3ee2fbb5839abc5.jpg [11:47:04] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:47:04] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=57 [11:47:04] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[17696, 17697, 17698, 17699, 17700] [11:47:04] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:04] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:04] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17751 β†’ 17752 [11:47:04] DOWNLOADIIING c3ee2fbb5839abc5.jpg [11:47:04] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:04] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:05] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:05] [PUSH] Silent push received [11:47:05] [PUSH_EMBED] No embedded message_data in notification [11:47:05] [PUSH] No embedded data, pre-loading messages from server [11:47:05] [PUSH_PRELOAD] Fetching messages for instant display cache [11:47:06] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:47:06] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [17702, 17701, 17700, 17699, 17698] [11:47:06] [PUSH_PRELOAD] ⚑ Pre-cached 55 messages for instant display (preserved 5 from push) [11:47:06] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:47:06] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17752] [11:47:06] [PUSH] Parsed message_id: 17752 [11:47:06] [PUSH] Parsed operation_type: 3 [11:47:06] [PUSH] Taking direct action: opType=3, messageId=17752 [11:47:06] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17752 [11:47:06] [CLIENT_SIG] Event received: type=3 messageId=17752 [11:47:06] [WS_EVENT] Received event: type=3, messageId=17752 [11:47:06] [WS_EVENT] Read receipt for message 17752 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:47:07] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:47:07 +0000 - type: unknown, operation_type: 0, message_id: 17752, session_id: ILUIWU, state: 0 [11:47:07] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 17752, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [11:47:07] [PUSH] App active - suppressing notification UI, posting internal event [11:47:07] [PUSH_EMBED] No embedded message_data in notification [11:47:07] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17752, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [11:47:07] [PUSH] Parsed message_id: 17752 [11:47:07] [PUSH] Parsed operation_type: 0 [11:47:07] [PUSH] Taking direct action: opType=0, messageId=17752 [11:47:07] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17752 [11:47:07] [PUSH] ⚑ Message 17752 already in memory - skipping duplicate notification entirely [11:47:07] [PUSH] Silent push received [11:47:07] [PUSH_EMBED] No embedded message_data in notification [11:47:07] [PUSH] No embedded data, pre-loading messages from server [11:47:07] [PUSH_PRELOAD] Fetching messages for instant display cache [11:47:08] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:47:08] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [17702, 17701, 17700, 17699, 17698] [11:47:08] [PUSH_PRELOAD] ⚑ Pre-cached 55 messages for instant display (preserved 5 from push) [11:47:08] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:47:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17752, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:47:08] [PUSH] Parsed message_id: 17752 [11:47:08] [PUSH] Parsed operation_type: 0 [11:47:08] [PUSH] Taking direct action: opType=0, messageId=17752 [11:47:08] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17752 [11:47:08] [PUSH] ⚑ Message 17752 already in memory - skipping duplicate notification entirely [11:47:08] [SERVER] Polling - attempting to reconnect... [11:47:13] [SERVER] Polling - attempting to reconnect... [11:47:16] [MENU] dismissAnyExistingMenu called [11:47:16] [MENU] dismissAnyExistingMenu completed [11:47:18] [SERVER] Polling - attempting to reconnect... [11:47:21] [MENU] dismissAnyExistingMenu called [11:47:21] [MENU] dismissAnyExistingMenu completed [11:47:21] [SCROLL_BTN] Showing button - 391pt from bottom > half 379pt [11:47:22] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:22] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:47:22] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:47:22] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:22] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:22] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:47:23] [MENU] dismissAnyExistingMenu called [11:47:23] [MENU] dismissAnyExistingMenu completed [11:47:23] [MENU] dismissAnyExistingMenu called [11:47:23] [MENU] dismissAnyExistingMenu completed [11:47:24] [SERVER] Polling - attempting to reconnect... [11:47:27] [LOG_GESTURE] handleLongPress called, state=1, isToday=true [11:47:27] [LOG_GESTURE] Long press on Today detected! Triggering log upload... [11:47:27] [LOG] Long-press on 'Today' detected - prompting for description [11:47:28] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:28] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [11:47:28] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:28] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [11:47:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [11:47:28] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:28] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:28] [LOG_GESTURE] handleLongPress called, state=4, isToday=true [11:47:28] [SERVER] Polling - attempting to reconnect... [11:47:32] [LOG] Uploading log as '2026-01-15-11-47-media-unavailable.log' (129 KB) to server... [11:47:33] [LOG] Upload HTTP status: 200 [11:47:33] [LOG] Upload successful: 2026-01-15-11-47-media-unavailable.log [11:47:33] [SERVER] Polling - attempting to reconnect... [11:47:35] [MENU] dismissAnyExistingMenu called [11:47:35] [MENU] dismissAnyExistingMenu completed [11:47:35] [SCROLL_BTN] Showing button - 307pt from bottom > half 223pt [11:47:38] [SERVER] Polling - attempting to reconnect... [11:47:43] [LIFECYCLE] App resigning active - cleared crash flag [11:47:43] [SERVER] Polling - attempting to reconnect... [11:47:44] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:47:45] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:47:45] [SECURITY] Saved background timestamp [11:47:45] [LIFECYCLE] App entering background - cleared crash flag [11:47:45] [CLIENT_SIG] Disconnecting [11:47:45] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:47:45] [LIFECYCLE] Stopping camera broadcast due to background [11:47:45] [CAM] Disconnected from signaling server [11:47:45] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3 [11:47:45] [WS] Canceling WebSocket for query connection to iosILUIWU [11:47:45] In cleanupPeer [11:47:45] In cleanupPeer [11:47:45] [LIFECYCLE] WebRTC audio disabled [11:47:45] [LIFECYCLE] AVAudioSession deactivated [11:47:45] [LIFECYCLE] All connections stopped [11:47:45] [CLIENT_SIG] WebSocket closed with code 1001 [11:47:45] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:47:45] Video capture stopped (audio still running) [11:47:45] [iOS AUDIO] Audio capture stopped [11:47:45] Capture stopped (video + audio) [11:47:45] ICE state for vid=956uYVc95Ogdozn-: 6 ( RTCIceConnectionState ) [11:47:45] Video capture stopped (audio still running) [11:47:45] Capture stopped (video + audio) [11:47:45] [WEBRTC] WebRTCClient deinit - timers cleaned up [11:47:45] [WEBRTC] βœ… Media teardown complete - camera stopped [11:47:45] WS closed [11:47:45] [SERVER] Stopped reconnect polling [11:47:45] [WS] URLSession invalidated successfully [11:47:45] Will request stop of video 0 [11:47:45] Will request stop of video 0 [11:47:45] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:47:45] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:47:45] [SIG] agent_disconnected received for sessionId=iosILUIWU agentId=WMuOuC1lCGyzElcA [11:47:45] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=WMuOuC1lCGyzElcA [11:47:47] [CRASH] No crash detected [11:47:47] [LOG] Within rotation interval - preserving logs (106m until next clear) [11:47:47] [FONT] Roboto fonts loaded successfully: Roboto-Regular [11:47:47] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [11:47:47] [GIPHY] SDK not available - using REST API fallback [11:47:47] [BACKGROUND] Background fetch enabled [11:47:47] [CLEANUP] No old timer messages to delete [11:47:47] [SECURITY] Initial launch - within timeout (1.9516551494598389s < 300.0s) [11:47:47] [AUTH] Starting PIN authentication [11:47:47] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:47:47] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:47:47] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [11:47:47] [CLIENT_SIG] WebSocket opened [11:47:47] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:47:47] [CLIENT_SIG] Connected! clientId=t4uKmzHr0dzNC8sX [11:47:47] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:47:47] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:47:47] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:47:47] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [11:47:47] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:47:47] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [11:47:47] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [11:47:47] [USER] βœ… User registered successfully [11:47:47] [PUSH] User registration after token update: success [11:47:47] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17752)... [11:47:47] [PRELOAD] No messages or parse error [11:47:48] [PIN_AUTH] Correct PIN [11:47:48] [SECURITY] Restored real session: ILUIWU [11:47:48] [SECURITY] Restored real session: ILUIWU [11:47:48] [SECURITY] Saved real session: ILUIWU [11:47:48] [SCENE] Launched directly to chat view with sessionId: ILUIWU [11:47:48] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:47:48] Documents Directory: /var/mobile/Containers/Data/Application/8BF2D7BC-D987-4D5A-907F-5601C5665CBF/Documents [11:47:48] [UPLOAD_QUEUE] Found 0 pending uploads to resume [11:47:48] [THEME] Applying current theme [11:47:48] [CHAT] Applied day theme (mode: day) [11:47:48] [SECURITY] Saved real session: ILUIWU [11:47:48] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:47:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:47:48] [NETWORK] Network monitor started [11:47:48] [NETWORK] Status changed: connected [11:47:48] Did transition [11:47:48] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [11:47:48] [VIEWER] Screen lock enabled - normal idle behavior [11:47:48] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [11:47:48] [VCC] ========== VideoConnectionClass INIT ========== [11:47:48] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [11:47:48] [DATA AUDIO] ========== setupWebRTC() START ========== [11:47:48] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [11:47:48] [DATA AUDIO] Creating encoder/decoder factories... [11:47:48] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [11:47:48] [CODEC] Viewer selected encoder: AV1 (best quality) [11:47:48] [DATA AUDIO] Creating RTCPeerConnectionFactory... [11:47:48] [DATA AUDIO] βœ… Factory created [11:47:48] [DATA AUDIO] RTCAudioSession locked [11:47:48] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [11:47:48] [DATA AUDIO] RTCAudioSession unlocked [11:47:48] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [11:47:48] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [11:47:48] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [11:47:48] [WS] Opening session at ws://crivello.dyndns.org:8081/ [11:47:48] [QUERY] βœ… tempQueryConnection created for iosILUIWU [11:47:48] [VIEWER_INIT] Already have 50 messages - just filtering for tab [11:47:48] [EVENT_POLL] Event polling disabled - using WebSocket events instead [11:47:48] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [11:47:48] Did transition [11:47:48] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [11:47:48] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:47:48] [CHUNK] Merged 784 reactions synchronously [11:47:48] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [11:47:48] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [11:47:48] [MIGRATION] No messages need sender_name backfill [11:47:48] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [11:47:48] [GALLERY_DB] Raw datesent for msg 17752: '2026-01-15 10:47:04' [11:47:48] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [11:47:48] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [11:47:48] [USER] βœ… User registered successfully [11:47:48] [USER] User registration successful [11:47:48] [GALLERY_DB] βœ… Loaded 429 media messages [11:47:48] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17752 [11:47:48] [INCREMENTAL_SYNC] βœ… No new messages [11:47:48] [GALLERY] Filtered 429 -> 389 (only with local thumbnails) [11:47:48] [GALLERY] First 5 after sort (newest first): [11:47:48] [GALLERY] 0: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [11:47:48] [GALLERY] 1: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [11:47:48] [GALLERY] 2: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [11:47:48] [GALLERY] 3: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [11:47:48] [GALLERY] 4: id=17687, date=2026-01-14 14:45:38, file=67c77e91dc086f47.jpg [11:47:48] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [11:47:48] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17703, 17704, 17705, 17706, 17707] [11:47:48] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [11:47:48] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:48] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:48] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:48] DOWNLOADIIING t_c3ee2fbb5839abc5.jpg [11:47:48] DOWNLOADIIING c3ee2fbb5839abc5.jpg [11:47:48] [SERVER] Starting reconnect polling (5s interval) [11:47:48] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [11:47:48] [ICONS] Offset applied: -14.6 [11:47:48] [ICONS] New left margin: 11.2, New right margin: 11.3 [11:47:48] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [11:47:48] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:47:48] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:47:48] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [11:47:48] [PURGE] ⚠️ Media cache purge DISABLED for debugging [11:47:48] [UNSENT_RETRY] Checking for unsent messages... [11:47:48] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [11:47:48] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [11:47:48] [UPLOAD_RECOVERY] Session: ILUIWU [11:47:48] [UPLOAD_RECOVERY] βœ… No stuck uploads found [11:47:48] [UPLOAD_RECOVERY] Checking recent media messages on server... [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [11:47:48] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [11:47:48] [PENDING_UPLOAD] Total pending upload messages: 0 [11:47:48] [UNSENT_RETRY] No unsent messages found [11:47:48] [ICONS] Chat center: (31.2, 87.0) [11:47:48] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [11:47:48] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [11:47:48] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [11:47:48] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [11:47:48] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [11:47:48] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [11:47:48] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [11:47:48] [ICONS] Screen width: 440.0 [11:47:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:49] [MEDIA_DOWNLOAD] βœ… Set thumbnail for cell: c3ee2fbb5839abc5.jpg from downloaded: t_c3ee2fbb5839abc5.jpg [11:47:49] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:49] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:49] new_session POST ok: token len=157 [11:47:49] HELLO β†’ sent (fetched token, role=query) [11:47:49] [SIG] hello_ok received for query connection - ready to query agents [11:47:49] [SIG] get_agents request sent for sessionId=ILUIWU [11:47:49] [SIG] get_agents request sent for sessionId=iosILUIWU [11:47:49] [SERVER] Stopped reconnect polling [11:47:49] [UPLOAD_RECOVERY] βœ… All media files verified on server [11:47:49] [SIG] agents_list received: [] [11:47:49] [SIG] agents_list received: [] [11:47:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:49] [MEDIA_DOWNLOAD] βœ… Set thumbnail for cell: c3ee2fbb5839abc5.jpg from downloaded: c3ee2fbb5839abc5.jpg [11:47:50] [COMBINED_FETCH] Loaded 6524 read receipts, 779 messages with reactions [11:47:50] [READBY_ENRICH] Enriched 50 messages with readBy data [11:47:50] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17703, 17704, 17705, 17706, 17707] [11:47:50] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:50] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:50] [MENU] dismissAnyExistingMenu called [11:47:50] [MENU] dismissAnyExistingMenu completed [11:47:51] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:47:52] [BROADCAST] Starting camera broadcast on session: iosILUIWU [11:47:52] Initing with camera 0 [11:47:52] [START] AgentController.start() called with session: iosILUIWU [11:47:52] [START] Cancelling any existing idle stop timer [11:47:52] [BROADCAST] Lightbulb shown at lower left, frame=(20.0, 800.0, 50.0, 50.0) [11:47:52] WS connected [11:47:52] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:47:52 +0000 - type: unknown, operation_type: 0, message_id: 17753, session_id: ILUIWU, state: 0 [11:47:52] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:47:51"; "file_name" = ""; message = "You are not alone\Ud83e\Udd2a"; "message_id" = 17753; "message_type" = 0; "prev_session_message_id" = 17752; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17753] [11:47:52] [PUSH] App active - suppressing notification UI, posting internal event [11:47:52] [PUSH_EMBED] πŸ“© Received embedded message: id=17753, type=0, sender=Esra [11:47:52] [PUSH_EMBED] βœ… Saved message 17753 to local DB (sync) [11:47:52] [PUSH_EMBED] Created new cache with embedded message 17753 [11:47:52] [PUSH_EMBED] Fetching evolution data for message 17753 in background [11:47:52] [PUSH_EMBED] βœ… Fully processed message 17753 [11:47:52] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:47:51"; "file_name" = ""; message = "You are not alone\Ud83e\Udd2a"; "message_id" = 17753; "message_type" = 0; "prev_session_message_id" = 17752; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17753] [11:47:52] [PUSH_EMBED_VC] Processing embedded message: id=17753, type=0, sender=Esra, prevId=17752 [11:47:52] [PUSH_EMBED_VC] Inserted message 17753 into allMessagesWithReadBy (now 51 messages) [11:47:52] [PUSH_EMBED_VC] βœ… Previous message 17752 exists in memory [11:47:52] [PUSH] ⚑ Embedded message handled directly in ViewController [11:47:52] [PUSH] Parsed message_id: 17753 [11:47:52] [PUSH] Parsed operation_type: 0 [11:47:52] [PUSH] Taking direct action: opType=0, messageId=17753 [11:47:52] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17753 [11:47:52] [PUSH] ⚑ Message 17753 already in memory - skipping duplicate notification entirely [11:47:52] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:47:52] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:47:52] [PUSH_UI] Message 17753 already in memory - skipping insert [11:47:52] [PUSH_EMBED_VC] Saved message 17753 to local DB [11:47:52] [PUSH] Silent push received [11:47:52] [PUSH_EMBED] πŸ“© Received embedded message: id=17753, type=0, sender=Esra [11:47:52] [PUSH_EMBED] βœ… Saved message 17753 to local DB (sync) [11:47:52] [PUSH_EMBED] Created new cache with embedded message 17753 [11:47:52] [PUSH_EMBED] Fetching evolution data for message 17753 in background [11:47:52] [PUSH_EMBED] βœ… Fully processed message 17753 [11:47:52] [PUSH] Embedded message handled instantly from silent push [11:47:52] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:47:52] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:47:52] [PUSH_UI] Message 17753 already in memory - skipping insert [11:47:52] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:47:51"; "file_name" = ""; message = "You are not alone\Ud83e\Udd2a"; "message_id" = 17753; "message_type" = 0; "prev_session_message_id" = 17752; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17753] [11:47:52] [PUSH_EMBED_VC] Message 17753 already in memory - skipping [11:47:52] [PUSH] ⚑ Embedded message handled directly in ViewController [11:47:52] [PUSH] Parsed message_id: 17753 [11:47:52] [PUSH] Parsed operation_type: 0 [11:47:52] [PUSH] Taking direct action: opType=0, messageId=17753 [11:47:52] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17753 [11:47:52] [PUSH] ⚑ Message 17753 already in memory - skipping duplicate notification entirely [11:47:52] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[17753, 17703, 17704, 17705, 17706] [11:47:52] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:47:52] [CELL_UPLOAD] β†’ not my message, setting complete [11:47:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:47:52] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17752 β†’ 17753 [11:47:55] [CLIENT_SIG] Event received: type=0 messageId=17753 [11:47:55] [WS_EVENT] Received event: type=0, messageId=17753 [11:47:55] [WS_EVENT] πŸ“¨ New message notification (msgId=17753) - triggering incremental refresh, currentMsgCount=51 [11:47:55] [PUSH_EMBED] Got evolution data for message 17753, saving to local DB [11:47:55] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=51 [11:47:55] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17753 [11:47:55] [CAM] βœ… Connected to signaling server. Session: iosILUIWU, agentId: Dm6HSWf-XTo0e_fl [11:47:55] [CAM] helloOK β†’ connected=true, myAgentId=Dm6HSWf-XTo0e_fl [11:47:55] [WEBRTC] Creating new WebRTC client [11:47:55] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1 [11:47:55] [CODEC] Agent selected encoder: AV1 (best quality) [11:47:55] [PUSH_EMBED] Saved evolution data for message 17753 [11:47:55] [WS AUDIO] Initializing WebSocket audio sender... [11:47:55] [WS AUDIO] βœ… WebSocket audio sender initialized [11:47:55] [ICE] Agent using 4 ICE urls: - stun:stun.l.google.com:19302 - turn:crivello.dyndns.org:3478?transport=udp - turn:crivello.dyndns.org:3478?transport=tcp - turns:crivello.dyndns.org:5349?transport=tcp [11:47:55] [ICE] Using 2 ICE server entries [11:47:55] [SIG] agent_connected received for sessionId=iosILUIWU agentId=Dm6HSWf-XTo0e_fl [11:47:55] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:Dm6HSWf-XTo0e_fl [11:47:55] [SIG] agents_list received: [["connected": 1, "agentId": Dm6HSWf-XTo0e_fl, "sessionId": iosILUIWU]] [11:47:55] [SIG] agent_connected received for sessionId=iosILUIWU agentId=Dm6HSWf-XTo0e_fl [11:47:55] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:Dm6HSWf-XTo0e_fl [11:47:55] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": Dm6HSWf-XTo0e_fl, "connected": 1]] [11:47:55] [CAM] Offer β†’ session: iosILUIWU, viewerId: 956uYVc95Ogdozn- [11:47:55] [WEBRTC] WebRTC client already exists, reusing it [11:47:55] [CAM] Peer connection not ready, storing offer as pending [11:47:55] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30 [11:47:55] [CAPTURE] Creating audio track [11:47:55] [CAPTURE] DataChannelAudioSender already exists [11:47:55] [CAPTURE] Creating front video source and track [11:47:55] [CAPTURE] Creating back video source and track [11:47:55] localVideoTrackFront ok [11:47:55] localVideoTrackBack ok [11:47:55] Marking tracks as ready and firing callbacks [11:47:55] [CAPTURE] βœ… Device supports MultiCam, starting dual camera session [11:47:55] [CAPTURE] configureAndStartMultiCamSession() starting... [11:47:55] Video capture stopped (audio still running) [11:47:55] [CAPTURE] Created MultiCamSession and began configuration [11:47:55] [CAPTURE] Looking for camera devices... [11:47:55] [INCREMENTAL_SYNC] βœ… No new messages [11:47:55] [CAPTURE] βœ… Found front camera: Front Camera [11:47:55] [CAPTURE] βœ… Found back camera: Back Camera [11:47:55] Selected camera format: 1920x1080, pixel format: 875704438 [11:47:55] [CAPTURE] Enabled continuous autofocus for front camera [11:47:55] Selected camera format: 1920x1080, pixel format: 875704438 [11:47:55] [CAPTURE] Enabled continuous autofocus for back camera [11:47:55] Selected camera format: 640x480, pixel format: 875704438 [11:47:55] Selected camera format: 640x480, pixel format: 875704438 [11:47:55] [iOS AUDIO] ========== START CAPTURE ========== [11:47:55] [iOS AUDIO] BEFORE - category: AVAudioSessionCategorySoloAmbient [11:47:55] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeDefault [11:47:55] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false [11:47:55] [PUSH_EMBED] Got evolution data for message 17753, saving to local DB [11:47:55] [PUSH_EMBED] Saved evolution data for message 17753 [11:47:55] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"] [11:47:55] [iOS AUDIO] BEFORE - currentRoute.inputs: [] [11:47:55] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"] [11:47:55] [iOS AUDIO] Setting category to .playAndRecord... [11:47:55] [iOS AUDIO] Activating audio session... [11:47:55] [iOS AUDIO] βœ… Audio session configured [11:47:55] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord [11:47:55] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat [11:47:55] [iOS AUDIO] AFTER - currentRoute.inputs: ["iPhone Microphone"] [11:47:55] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"] [11:47:55] [iOS AUDIO] AFTER - recordPermission: 1735552628 [11:47:55] [iOS AUDIO] Creating AVAudioEngine... [11:47:55] [iOS AUDIO] Got inputNode: [11:47:55] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1 [11:47:55] [iOS AUDIO] Installing tap on inputNode... [11:47:55] [iOS AUDIO] βœ… Tap installed [11:47:55] [iOS AUDIO] Starting engine... [11:47:55] [iOS AUDIO] βœ… AVAudioEngine started [11:47:55] [iOS AUDIO] engine.isRunning: true [11:47:55] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false [11:47:55] [iOS AUDIO] ========== END START CAPTURE ========== [11:47:55] [CAPTURE] Configuration committed [11:47:55] [CAPTURE] Starting MultiCam session... [11:47:55] [iOS AUDIO] πŸ“€ Sent packet #1: 9600 bytes (4800 samples, ~100ms) [11:47:55] [CAPTURE] βœ… AVCaptureMultiCamSession started successfully (front + back) [11:47:55] [CAPTURE] Session running: true [11:47:55] [CAM] viewerJoin β†’ session: iosILUIWU, viewerId: ewQZwZlxzg2-0xZY [11:47:55] [WEBRTC] WebRTC client already exists, reusing it [11:47:55] [WEBRTC] WebRTC client already exists, reusing it [11:47:55] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=51 [11:47:55] ensureCaptureStarted - adding peer [11:47:55] tracksReady = true [11:47:55] Added front video track to peer connection for ewQZwZlxzg2-0xZY [11:47:55] Added back video track to peer connection for ewQZwZlxzg2-0xZY [11:47:55] Added audio track to peer connection for ewQZwZlxzg2-0xZY [11:47:55] localVideoTrackFront ok [11:47:55] localVideoTrackBack ok [11:47:55] tracks already marked as ready [11:47:55] Peer added with tracks, notifying viewer ready [11:47:55] notifyViewerReady called [11:47:55] notifyViewerReady -> Will send [11:47:55] [CAM] Offer β†’ session: iosILUIWU, viewerId: ewQZwZlxzg2-0xZY [11:47:55] [WEBRTC] WebRTC client already exists, reusing it [11:47:55] [CAM] Peer connection ready, processing offer immediately [11:47:55] Creating answer for ewQZwZlxzg2-0xZY. Found 3 transceivers: [11:47:55] Transceiver 0: video, direction=sendRecv, hasTrack=true [11:47:55] Transceiver 1: video, direction=sendRecv, hasTrack=true [11:47:55] Transceiver 2: audio, direction=sendRecv, hasTrack=true [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1816469853 1 udp 2122260224 192.168.1.14 57574 typ host generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote host β†’ applying [11:47:55] SEND answer for viewerId=ewQZwZlxzg2-0xZY [11:47:55] SDP length: 4815 [11:47:55] ICE gathering state: 1 [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:750736372 1 udp 1686052608 212.252.117.163 27369 typ srflx raddr 192.168.1.14 rport 57574 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote srflx β†’ applying [11:47:55] ICE state for vid=ewQZwZlxzg2-0xZY: 1 ( RTCIceConnectionState ) [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:904322585 1 udp 2122129152 10.121.142.99 59679 typ host generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:2889610833 1 udp 2122260223 10.56.51.84 62916 typ host generation 0 ufrag ScN8 network-id 7 network-cost 900"] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:239667188 1 udp 2122194687 10.27.13.80 50775 typ host generation 0 ufrag ScN8 network-id 8 network-cost 900"] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:239667188 1 udp 2122129151 10.27.13.80 61663 typ host generation 0 ufrag ScN8 network-id 1 network-cost 50"] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:239667188 1 udp 2122063615 10.27.13.80 53593 typ host generation 0 ufrag ScN8 network-id 2 network-cost 50"] [11:47:55] [iOS AUDIO] πŸ“€ Sent packet #2: 9600 bytes (4800 samples, ~100ms) [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] Candidate: ["candidate": "candidate:239667188 1 udp 2121998079 10.27.13.80 54444 typ host generation 0 ufrag ScN8 network-id 3 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2594979623 1 udp 1685921536 5.24.152.206 36509 typ srflx raddr 10.121.142.99 rport 59679 generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote srflx β†’ applying [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:239667188 1 udp 2121932543 10.27.13.80 49444 typ host generation 0 ufrag ScN8 network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1313106293 1 udp 2121670400 192.0.0.6 64113 typ host generation 0 ufrag TkIE network-id 5 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1313106293 1 udp 2121604864 192.0.0.6 63942 typ host generation 0 ufrag TkIE network-id 8 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1256041460 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 62032 typ host generation 0 ufrag TkIE network-id 13 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3748961169 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 58037 typ host generation 0 ufrag TkIE network-id 6 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3375130301 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 52911 typ host generation 0 ufrag TkIE network-id 7 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3375130301 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 64467 typ host generation 0 ufrag TkIE network-id 9 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:4163240552 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 63694 typ host generation 0 ufrag TkIE network-id 2 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:311083973 1 tcp 1518280448 192.168.1.14 49765 typ host tcptype passive generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1260993665 1 tcp 1518149376 10.121.142.99 49766 typ host tcptype passive generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:814451693 1 tcp 1517690624 192.0.0.6 49767 typ host tcptype passive generation 0 ufrag TkIE network-id 5 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:814451693 1 tcp 1517625088 192.0.0.6 49768 typ host tcptype passive generation 0 ufrag TkIE network-id 8 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:873613676 1 tcp 1518217472 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 49769 typ host tcptype passive generation 0 ufrag TkIE network-id 13 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2713417993 1 tcp 1518088960 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 49770 typ host tcptype passive generation 0 ufrag TkIE network-id 6 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3085141029 1 tcp 1518023424 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49771 typ host tcptype passive generation 0 ufrag TkIE network-id 7 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3085141029 1 tcp 1517957888 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49772 typ host tcptype passive generation 0 ufrag TkIE network-id 9 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2263474416 1 tcp 1517889792 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49773 typ host tcptype passive generation 0 ufrag TkIE network-id 2 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1816469853 1 udp 2122260224 192.168.1.14 61269 typ host generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:750736372 1 udp 1686052608 212.252.117.163 27004 typ srflx raddr 192.168.1.14 rport 61269 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote srflx β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:904322585 1 udp 2122129152 10.121.142.99 51812 typ host generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2594979623 1 udp 1685921536 5.24.152.206 36062 typ srflx raddr 10.121.142.99 rport 51812 generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote srflx β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1313106293 1 udp 2121670400 192.0.0.6 50269 typ host generation 0 ufrag TkIE network-id 5 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1313106293 1 udp 2121604864 192.0.0.6 51792 typ host generation 0 ufrag TkIE network-id 8 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1256041460 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 63028 typ host generation 0 ufrag TkIE network-id 13 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3748961169 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 60053 typ host generation 0 ufrag TkIE network-id 6 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3375130301 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54719 typ host generation 0 ufrag TkIE network-id 7 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3375130301 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 52393 typ host generation 0 ufrag TkIE network-id 9 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:4163240552 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 57161 typ host generation 0 ufrag TkIE network-id 2 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:311083973 1 tcp 1518280448 192.168.1.14 49774 typ host tcptype passive generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:1260993665 1 tcp 1518149376 10.121.142.99 49775 typ host tcptype passive generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:814451693 1 tcp 1517690624 192.0.0.6 49776 typ host tcptype passive generation 0 ufrag TkIE network-id 5 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:814451693 1 tcp 1517625088 192.0.0.6 49777 typ host tcptype passive generation 0 ufrag TkIE network-id 8 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:873613676 1 tcp 1518217472 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 49778 typ host tcptype passive generation 0 ufrag TkIE network-id 13 network-cost 900 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2713417993 1 tcp 1518088960 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 49779 typ host tcptype passive generation 0 ufrag TkIE network-id 6 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3085141029 1 tcp 1518023424 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49780 typ host tcptype passive generation 0 ufrag TkIE network-id 7 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3085141029 1 tcp 1517957888 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49781 typ host tcptype passive generation 0 ufrag TkIE network-id 9 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2263474416 1 tcp 1517889792 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49782 typ host tcptype passive generation 0 ufrag TkIE network-id 2 network-cost 50 [11:47:55] [ICE] remote host β†’ applying [11:47:55] [ICE] agent local srflx [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) srflx candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:2302818747 1 udp 1686052607 194.230.158.50 48894 typ srflx raddr 10.56.51.84 rport 62916 generation 0 ufrag ScN8 network-id 7 network-cost 900"] [11:47:55] [ICE] agent local srflx [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) srflx candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:2302818747 1 udp 1686052607 194.230.158.50 62165 typ srflx raddr 10.56.51.84 rport 62916 generation 0 ufrag ScN8 network-id 7 network-cost 900", "sdpMLineIndex": 0] [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3592072104 1 udp 41886207 192.168.1.31 60643 typ relay raddr 212.252.117.163 rport 27369 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=60643) [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3592072104 1 udp 41886207 192.168.1.31 50264 typ relay raddr 212.252.117.163 rport 27004 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=50264) [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3592072104 1 udp 41755135 192.168.1.31 57451 typ relay raddr 5.24.152.206 rport 36509 generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=57451) [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:3592072104 1 udp 41755135 192.168.1.31 56344 typ relay raddr 5.24.152.206 rport 36062 generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=56344) [11:47:55] [iOS AUDIO] πŸ“€ Sent packet #3: 9600 bytes (4800 samples, ~100ms) [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:3539211465 1 tcp 1518280447 10.56.51.84 50422 typ host tcptype passive generation 0 ufrag ScN8 network-id 7 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1887888748 1 tcp 1518214911 10.27.13.80 50427 typ host tcptype passive generation 0 ufrag ScN8 network-id 8 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1887888748 1 tcp 1518149375 10.27.13.80 50432 typ host tcptype passive generation 0 ufrag ScN8 network-id 1 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1887888748 1 tcp 1518083839 10.27.13.80 50437 typ host tcptype passive generation 0 ufrag ScN8 network-id 2 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1887888748 1 tcp 1518018303 10.27.13.80 50442 typ host tcptype passive generation 0 ufrag ScN8 network-id 3 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [ICE] agent local host [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1887888748 1 tcp 1517952767 10.27.13.80 50447 typ host tcptype passive generation 0 ufrag ScN8 network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2832550192 1 udp 25108735 192.168.1.31 61647 typ relay raddr 212.252.117.163 rport 26973 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=61647) [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2832550192 1 udp 25108735 192.168.1.31 57290 typ relay raddr 212.252.117.163 rport 27154 generation 0 ufrag TkIE network-id 1 network-cost 10 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=57290) [11:47:55] [ICE] agent local relay β†’ ip=192.168.1.31 port=56074 [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) relay candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:1878159133 1 udp 41886207 192.168.1.31 56074 typ relay raddr 194.230.158.50 rport 48894 generation 0 ufrag ScN8 network-id 7 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [CAM] iceFromViewer viewerId=ewQZwZlxzg2-0xZY [11:47:55] [CAM] Peer connection ready, processing ICE candidate immediately [11:47:55] addRemoteCandidate for vid=ewQZwZlxzg2-0xZY [11:47:55] Found s:candidate:2832550192 1 udp 24977663 192.168.1.31 65210 typ relay raddr 5.24.152.206 rport 37060 generation 0 ufrag TkIE network-id 12 network-cost 900 [11:47:55] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=65210) [11:47:55] [ICE] agent local relay β†’ ip=192.168.1.31 port=56135 [11:47:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) relay candidate [11:47:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:47:55] Candidate: ["candidate": "candidate:289246597 1 udp 25108735 192.168.1.31 56135 typ relay raddr 194.230.158.50 rport 24561 generation 0 ufrag ScN8 network-id 7 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:47:55] [iOS AUDIO] πŸ“€ Sent packet #4: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #5: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #6: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #7: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #8: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #9: 9600 bytes (4800 samples, ~100ms) [11:47:56] [iOS AUDIO] πŸ“€ Sent packet #10: 9600 bytes (4800 samples, ~100ms) [11:47:56] [PUSH] Silent push received [11:47:56] [PUSH_EMBED] No embedded message_data in notification [11:47:56] [PUSH] No embedded data, pre-loading messages from server [11:47:56] [PUSH_PRELOAD] Fetching messages for instant display cache [11:47:56] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:47:56] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [11:47:56] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:47:56] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17753, AnyHashable("session_id"): ILUIWU] [11:47:56] [PUSH] Parsed message_id: 17753 [11:47:56] [PUSH] Parsed operation_type: 3 [11:47:56] [PUSH] Taking direct action: opType=3, messageId=17753 [11:47:56] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17753 [11:47:57] ICE state for vid=ewQZwZlxzg2-0xZY: 2 ( RTCIceConnectionState ) [11:47:57] [STATS] starting poll for vid=ewQZwZlxzg2-0xZY [11:47:58] [CLIENT_SIG] Event received: type=3 messageId=17753 [11:47:58] [WS_EVENT] Received event: type=3, messageId=17753 [11:47:58] [WS_EVENT] Read receipt for message 17753 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:48:00] [iOS AUDIO] βœ… Streaming: 50 packets sent [11:48:01] [SCROLL_BTN] Showing button - 296pt from bottom > half 223pt [11:48:04] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:48:04] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=51, isReloading=false [11:48:04] [SEND_MESSAGE] βœ… Added optimistic message id=-1 to arrays, newMsgCount=52 [11:48:04] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-1, 17753, 17752, 17751, 17750] [11:48:04] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:48:04] [CELL_UPLOAD] β†’ not my message, setting complete [11:48:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:48:04] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:48:04] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:48:05] [MENU] dismissAnyExistingMenu called [11:48:05] [MENU] dismissAnyExistingMenu completed [11:48:05] [MENU] dismissAnyExistingMenu called [11:48:05] [MENU] dismissAnyExistingMenu completed [11:48:06] [CLIENT_SIG] Event received: type=0 messageId=17754 [11:48:06] [WS_EVENT] Received event: type=0, messageId=17754 [11:48:06] [WS_EVENT] πŸ“¨ New message notification (msgId=17754) - triggering incremental refresh, currentMsgCount=52 [11:48:06] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=52 [11:48:06] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17753 [11:48:06] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17754,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:48:04"} [11:48:06] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-15 10:48:04, "ok": 1, "message_id": 17754, "message_type": 0, "file_name": , "session_id": ILUIWU] [11:48:06] [DB_UPGRADE] Upgrading message ID: -1 β†’ 17754, preserveOriginalDate=false [11:48:06] [DB_UPGRADE] βœ… Upgraded -1 β†’ 17754 with send_status=0, 1 row(s) affected [11:48:06] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -1 β†’ 17754 [11:48:06] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -1 β†’ 17754 [11:48:06] ReloadData 9 [11:48:06] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:48:06] [CELL_UPLOAD] β†’ not my message, setting complete [11:48:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:48:06] [INCREMENTAL_SYNC] βœ… Found 1 new messages [11:48:06] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:48:06] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=52 [11:48:06] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17703, 17704, 17705, 17706, 17707] [11:48:06] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:48:06] [CELL_UPLOAD] β†’ not my message, setting complete [11:48:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:48:07] [PUSH] Silent push received [11:48:07] [PUSH_EMBED] No embedded message_data in notification [11:48:07] [PUSH] No embedded data, pre-loading messages from server [11:48:07] [PUSH_PRELOAD] Fetching messages for instant display cache [11:48:08] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:48:08] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [17704] [11:48:08] [PUSH_PRELOAD] ⚑ Pre-cached 51 messages for instant display (preserved 1 from push) [11:48:08] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:48:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17754] [11:48:08] [PUSH] Parsed message_id: 17754 [11:48:08] [PUSH] Parsed operation_type: 3 [11:48:08] [PUSH] Taking direct action: opType=3, messageId=17754 [11:48:08] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17754 [11:48:09] [DOUBLE_TAP] Adding heart reaction to message 17751 [11:48:09] [DOUBLE_TAP] Action: add (alreadyReactedWithHeart: false) [11:48:09] [DOUBLE_TAP] Heart reaction added successfully (status: ok) [11:48:09] [CLIENT_SIG] Event received: type=3 messageId=17754 [11:48:09] [WS_EVENT] Received event: type=3, messageId=17754 [11:48:09] [WS_EVENT] Read receipt for message 17754 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:43] [CAM] iceFromViewer viewerId=956uYVc95Ogdozn- [11:48:43] [CAM] Peer connection not ready, storing ICE candidate as pending [11:48:45] [iOS AUDIO] πŸ“Š 500 audio packets sent [11:49:19] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:49:20] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:49:21] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:49:21 +0000 - type: unknown, operation_type: 0, message_id: 17755, session_id: ILUIWU, state: 0 [11:49:21] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 17755, AnyHashable("message_data"): { datesent = "2026-01-15 10:49:20"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17755; "message_type" = 0; "prev_session_message_id" = 17754; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:49:21] [PUSH] App active - suppressing notification UI, posting internal event [11:49:21] [PUSH_EMBED] πŸ“© Received embedded message: id=17755, type=0, sender=Esra [11:49:21] [PUSH_EMBED] βœ… Saved message 17755 to local DB (sync) [11:49:21] [PUSH_EMBED] Inserted message 17755 into existing cache (now 52 messages) [11:49:21] [PUSH_EMBED] Fetching evolution data for message 17755 in background [11:49:21] [PUSH_EMBED] βœ… Fully processed message 17755 [11:49:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17755, AnyHashable("message_data"): { datesent = "2026-01-15 10:49:20"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17755; "message_type" = 0; "prev_session_message_id" = 17754; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:49:21] [PUSH_EMBED_VC] Processing embedded message: id=17755, type=0, sender=Esra, prevId=17754 [11:49:21] [PUSH_EMBED_VC] Inserted message 17755 into allMessagesWithReadBy (now 53 messages) [11:49:21] [PUSH_EMBED_VC] βœ… Previous message 17754 exists in memory [11:49:21] [PUSH] ⚑ Embedded message handled directly in ViewController [11:49:21] [PUSH] Parsed message_id: 17755 [11:49:21] [PUSH] Parsed operation_type: 0 [11:49:21] [PUSH] Taking direct action: opType=0, messageId=17755 [11:49:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17755 [11:49:21] [PUSH] ⚑ Message 17755 already in memory - skipping duplicate notification entirely [11:49:21] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:49:21] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:49:21] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: β™₯️ [11:49:21] [BLACKOUT] Showing message overlay: 'β™₯️' (count=1, utf8=6) [11:49:21] [PUSH_EMBED_VC] Saved message 17755 to local DB [11:49:21] [PUSH_UI] Message 17755 already in memory - skipping insert [11:49:21] [PUSH] Silent push received [11:49:21] [PUSH_EMBED] πŸ“© Received embedded message: id=17755, type=0, sender=Esra [11:49:21] [PUSH_EMBED] βœ… Saved message 17755 to local DB (sync) [11:49:21] [PUSH_EMBED] Fetching evolution data for message 17755 in background [11:49:21] [PUSH_EMBED] βœ… Fully processed message 17755 [11:49:21] [PUSH] Embedded message handled instantly from silent push [11:49:21] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:49:21] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:49:21] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: β™₯️ [11:49:21] [BLACKOUT] Showing message overlay: 'β™₯️' (count=1, utf8=6) [11:49:21] [PUSH_UI] Message 17755 already in memory - skipping insert [11:49:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:49:20"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17755; "message_type" = 0; "prev_session_message_id" = 17754; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17755, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [11:49:21] [PUSH_EMBED_VC] Message 17755 already in memory - skipping [11:49:21] [PUSH] ⚑ Embedded message handled directly in ViewController [11:49:21] [PUSH] Parsed message_id: 17755 [11:49:21] [PUSH] Parsed operation_type: 0 [11:49:21] [PUSH] Taking direct action: opType=0, messageId=17755 [11:49:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17755 [11:49:21] [PUSH] ⚑ Message 17755 already in memory - skipping duplicate notification entirely [11:49:21] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[17755, 17703, 17704, 17705, 17706] [11:49:21] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:49:21] [CELL_UPLOAD] β†’ not my message, setting complete [11:49:21] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:49:21] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17754 β†’ 17755 [11:49:21] [CLIENT_SIG] Event received: type=0 messageId=17755 [11:49:21] [WS_EVENT] Received event: type=0, messageId=17755 [11:49:21] [WS_EVENT] πŸ“¨ New message notification (msgId=17755) - triggering incremental refresh, currentMsgCount=53 [11:49:21] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=53 [11:49:21] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17755 [11:49:21] [INCREMENTAL_SYNC] βœ… No new messages [11:49:21] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=53 [11:49:21] [PUSH_EMBED] Got evolution data for message 17755, saving to local DB [11:49:21] [PUSH_EMBED] Saved evolution data for message 17755 [11:49:21] [PUSH_EMBED] Got evolution data for message 17755, saving to local DB [11:49:22] [PUSH_EMBED] Saved evolution data for message 17755 [11:49:22] [PUSH] Silent push received [11:49:22] [PUSH_EMBED] No embedded message_data in notification [11:49:22] [PUSH] No embedded data, pre-loading messages from server [11:49:22] [PUSH_PRELOAD] Fetching messages for instant display cache [11:49:22] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:49:22] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [17705, 17704] [11:49:22] [PUSH_PRELOAD] ⚑ Pre-cached 52 messages for instant display (preserved 2 from push) [11:49:22] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:49:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17755] [11:49:22] [PUSH] Parsed message_id: 17755 [11:49:22] [PUSH] Parsed operation_type: 3 [11:49:22] [PUSH] Taking direct action: opType=3, messageId=17755 [11:49:22] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17755 [11:49:23] [CLIENT_SIG] Event received: type=3 messageId=17755 [11:49:23] [WS_EVENT] Received event: type=3, messageId=17755 [11:49:23] [WS_EVENT] Read receipt for message 17755 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:49:35] [iOS AUDIO] πŸ“Š 1000 audio packets sent [11:50:25] [iOS AUDIO] πŸ“Š 1500 audio packets sent [11:51:15] [iOS AUDIO] πŸ“Š 2000 audio packets sent [11:52:05] [iOS AUDIO] πŸ“Š 2500 audio packets sent [11:52:13] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt [11:52:18] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [11:52:18] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=53, isReloading=false [11:52:18] [SEND_MESSAGE] βœ… Added optimistic message id=-2 to arrays, newMsgCount=54 [11:52:18] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-2, 17755, 17754, 17753, 17752] [11:52:18] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:52:18] [CELL_UPLOAD] β†’ not my message, setting complete [11:52:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:52:18] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:52:18] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:52:19] [CLIENT_SIG] Event received: type=0 messageId=17756 [11:52:19] [WS_EVENT] Received event: type=0, messageId=17756 [11:52:19] [WS_EVENT] πŸ“¨ New message notification (msgId=17756) - triggering incremental refresh, currentMsgCount=54 [11:52:19] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=54 [11:52:19] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17755 [11:52:19] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17756,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 10:52:18"} [11:52:19] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "file_name": , "message_id": 17756, "datesent_utc": 2026-01-15 10:52:18, "ok": 1, "message_type": 0] [11:52:19] [DB_UPGRADE] Upgrading message ID: -2 β†’ 17756, preserveOriginalDate=false [11:52:19] [DB_UPGRADE] βœ… Upgraded -2 β†’ 17756 with send_status=0, 1 row(s) affected [11:52:19] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -2 β†’ 17756 [11:52:19] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -2 β†’ 17756 [11:52:19] ReloadData 9 [11:52:19] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:52:19] [CELL_UPLOAD] β†’ not my message, setting complete [11:52:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:52:19] [INCREMENTAL_SYNC] βœ… Found 1 new messages [11:52:19] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:52:19] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=54 [11:52:19] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[17703, 17704, 17705, 17706, 17707] [11:52:19] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:52:19] [CELL_UPLOAD] β†’ not my message, setting complete [11:52:19] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:52:20] [PUSH] Silent push received [11:52:20] [PUSH_EMBED] No embedded message_data in notification [11:52:20] [PUSH] No embedded data, pre-loading messages from server [11:52:20] [PUSH_PRELOAD] Fetching messages for instant display cache [11:52:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:52:20] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [17706, 17705, 17704] [11:52:20] [PUSH_PRELOAD] ⚑ Pre-cached 53 messages for instant display (preserved 3 from push) [11:52:20] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:52:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17756] [11:52:20] [PUSH] Parsed message_id: 17756 [11:52:20] [PUSH] Parsed operation_type: 3 [11:52:20] [PUSH] Taking direct action: opType=3, messageId=17756 [11:52:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17756 [11:52:21] [CLIENT_SIG] Event received: type=3 messageId=17756 [11:52:21] [WS_EVENT] Received event: type=3, messageId=17756 [11:52:21] [WS_EVENT] Read receipt for message 17756 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:52:24] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:52:24] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:52:25] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:52:25 +0000 - type: unknown, operation_type: 0, message_id: 17757, session_id: ILUIWU, state: 0 [11:52:25] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:52:24"; "file_name" = ""; message = "\Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17757; "message_type" = 0; "prev_session_message_id" = 17756; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17757] [11:52:25] [PUSH] App active - suppressing notification UI, posting internal event [11:52:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17757, type=0, sender=Esra [11:52:25] [PUSH_EMBED] βœ… Saved message 17757 to local DB (sync) [11:52:25] [PUSH_EMBED] Inserted message 17757 into existing cache (now 54 messages) [11:52:25] [PUSH_EMBED] Fetching evolution data for message 17757 in background [11:52:25] [PUSH_EMBED] βœ… Fully processed message 17757 [11:52:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:52:24"; "file_name" = ""; message = "\Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17757; "message_type" = 0; "prev_session_message_id" = 17756; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17757] [11:52:25] [PUSH_EMBED_VC] Processing embedded message: id=17757, type=0, sender=Esra, prevId=17756 [11:52:25] [PUSH_EMBED_VC] Inserted message 17757 into allMessagesWithReadBy (now 55 messages) [11:52:25] [PUSH_EMBED_VC] βœ… Previous message 17756 exists in memory [11:52:25] [PUSH] ⚑ Embedded message handled directly in ViewController [11:52:25] [PUSH] Parsed message_id: 17757 [11:52:25] [PUSH] Parsed operation_type: 0 [11:52:25] [PUSH] Taking direct action: opType=0, messageId=17757 [11:52:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17757 [11:52:25] [PUSH] ⚑ Message 17757 already in memory - skipping duplicate notification entirely [11:52:25] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:52:25] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:52:25] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: 🀭🀭 [11:52:25] [BLACKOUT] Showing message overlay: '🀭🀭' (count=2, utf8=8) [11:52:25] [PUSH_EMBED_VC] Saved message 17757 to local DB [11:52:25] [PUSH_UI] Message 17757 already in memory - skipping insert [11:52:25] [PUSH] Silent push received [11:52:25] [PUSH_EMBED] πŸ“© Received embedded message: id=17757, type=0, sender=Esra [11:52:25] [PUSH_EMBED] βœ… Saved message 17757 to local DB (sync) [11:52:25] [PUSH_EMBED] Fetching evolution data for message 17757 in background [11:52:25] [PUSH_EMBED] βœ… Fully processed message 17757 [11:52:25] [PUSH] Embedded message handled instantly from silent push [11:52:25] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:52:25] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:52:25] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: 🀭🀭 [11:52:25] [BLACKOUT] Showing message overlay: '🀭🀭' (count=2, utf8=8) [11:52:25] [PUSH_UI] Message 17757 already in memory - skipping insert [11:52:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:52:24"; "file_name" = ""; message = "\Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17757; "message_type" = 0; "prev_session_message_id" = 17756; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17757, AnyHashable("session_id"): ILUIWU] [11:52:25] [PUSH_EMBED_VC] Message 17757 already in memory - skipping [11:52:25] [PUSH] ⚑ Embedded message handled directly in ViewController [11:52:25] [PUSH] Parsed message_id: 17757 [11:52:25] [PUSH] Parsed operation_type: 0 [11:52:25] [PUSH] Taking direct action: opType=0, messageId=17757 [11:52:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17757 [11:52:25] [PUSH] ⚑ Message 17757 already in memory - skipping duplicate notification entirely [11:52:25] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[17757, 17703, 17704, 17705, 17706] [11:52:25] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:52:25] [CELL_UPLOAD] β†’ not my message, setting complete [11:52:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:52:25] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17756 β†’ 17757 [11:52:25] [CLIENT_SIG] Event received: type=0 messageId=17757 [11:52:25] [WS_EVENT] Received event: type=0, messageId=17757 [11:52:25] [WS_EVENT] πŸ“¨ New message notification (msgId=17757) - triggering incremental refresh, currentMsgCount=55 [11:52:25] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=55 [11:52:25] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17757 [11:52:26] [INCREMENTAL_SYNC] βœ… No new messages [11:52:26] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=55 [11:52:26] [PUSH_EMBED] Got evolution data for message 17757, saving to local DB [11:52:26] [PUSH_EMBED] Saved evolution data for message 17757 [11:52:26] [PUSH_EMBED] Got evolution data for message 17757, saving to local DB [11:52:26] [PUSH_EMBED] Saved evolution data for message 17757 [11:52:26] [PUSH] Silent push received [11:52:26] [PUSH_EMBED] No embedded message_data in notification [11:52:26] [PUSH] No embedded data, pre-loading messages from server [11:52:26] [PUSH_PRELOAD] Fetching messages for instant display cache [11:52:26] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:52:27] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17707, 17706, 17705, 17704] [11:52:27] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [11:52:27] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [11:52:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17757, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [11:52:27] [PUSH] Parsed message_id: 17757 [11:52:27] [PUSH] Parsed operation_type: 3 [11:52:27] [PUSH] Taking direct action: opType=3, messageId=17757 [11:52:27] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17757 [11:52:28] [SIG] agent_connected received for sessionId=iosILUIWU agentId=dBXKxpgxli2iobrt [11:52:28] [VCC] ========== VideoConnectionClass INIT ========== [11:52:28] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: dBXKxpgxli2iobrt [11:52:28] [DATA AUDIO] ========== setupWebRTC() START ========== [11:52:28] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [11:52:28] [DATA AUDIO] Creating encoder/decoder factories... [11:52:28] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [11:52:28] [CODEC] Viewer selected encoder: AV1 (best quality) [11:52:28] [DATA AUDIO] Creating RTCPeerConnectionFactory... [11:52:28] [DATA AUDIO] βœ… Factory created [11:52:28] [DATA AUDIO] RTCAudioSession locked [11:52:28] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [11:52:28] [DATA AUDIO] RTCAudioSession unlocked [11:52:28] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [11:52:28] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [11:52:28] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [11:52:28] [WS] Opening session at ws://crivello.dyndns.org:8081/ [11:52:28] [SIG] agents_list received: [["agentId": Dm6HSWf-XTo0e_fl, "sessionId": iosILUIWU, "connected": 1], ["connected": 1, "agentId": dBXKxpgxli2iobrt, "sessionId": iosILUIWU]] [11:52:28] [SIG] agent_connected received for sessionId=iosILUIWU agentId=dBXKxpgxli2iobrt [11:52:28] [SIG] agents_list received: [["agentId": Dm6HSWf-XTo0e_fl, "connected": 1, "sessionId": iosILUIWU], ["agentId": dBXKxpgxli2iobrt, "connected": 1, "sessionId": iosILUIWU]] [11:52:28] [CLIENT_SIG] Event received: type=3 messageId=17757 [11:52:28] [WS_EVENT] Received event: type=3, messageId=17757 [11:52:28] [WS_EVENT] Read receipt for message 17757 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:52:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU [11:52:28] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:52:28] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [11:52:28] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [11:52:38] new_session POST error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x123df3480 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .<60>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask .<60>" ), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU, _kCFStreamErrorDomainKey=4} [11:52:38] Token GET β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU&m=get [11:52:55] [iOS AUDIO] πŸ“Š 3000 audio packets sent [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:239667188 1 udp 2122194687 10.27.13.80 58785 typ host generation 0 ufrag ScN8 network-id 8 network-cost 900", "sdpMLineIndex": 0] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:239667188 1 udp 2122129151 10.27.13.80 60304 typ host generation 0 ufrag ScN8 network-id 1 network-cost 50"] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:239667188 1 udp 2122063615 10.27.13.80 49461 typ host generation 0 ufrag ScN8 network-id 2 network-cost 50"] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["candidate": "candidate:239667188 1 udp 2121998079 10.27.13.80 60837 typ host generation 0 ufrag ScN8 network-id 3 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:239667188 1 udp 2121932543 10.27.13.80 56733 typ host generation 0 ufrag ScN8 network-id 4 network-cost 50", "sdpMid": Optional("0")] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1887888748 1 tcp 1518214911 10.27.13.80 50462 typ host tcptype passive generation 0 ufrag ScN8 network-id 8 network-cost 900", "sdpMid": Optional("0")] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1887888748 1 tcp 1518149375 10.27.13.80 50467 typ host tcptype passive generation 0 ufrag ScN8 network-id 1 network-cost 50", "sdpMid": Optional("0")] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1887888748 1 tcp 1518083839 10.27.13.80 50472 typ host tcptype passive generation 0 ufrag ScN8 network-id 2 network-cost 50", "sdpMid": Optional("0")] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1887888748 1 tcp 1518018303 10.27.13.80 50477 typ host tcptype passive generation 0 ufrag ScN8 network-id 3 network-cost 50", "sdpMid": Optional("0")] [11:52:55] [ICE] agent local host [11:52:55] [ICE] local β†’ remote (ewQZwZlxzg2-0xZY) host candidate [11:52:55] SEND ice for viewerId=ewQZwZlxzg2-0xZY [11:52:55] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1887888748 1 tcp 1517952767 10.27.13.80 50482 typ host tcptype passive generation 0 ufrag ScN8 network-id 4 network-cost 50", "sdpMid": Optional("0")] [11:53:39] new_session GET error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x12347eac0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .<61>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask .<61>" ), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU&m=get, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU&m=get, _kCFStreamErrorDomainKey=4} [11:53:45] [iOS AUDIO] πŸ“Š 3500 audio packets sent [11:53:49] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:53:49 +0000 - type: unknown, operation_type: 0, message_id: 17758, session_id: ILUIWU, state: 0 [11:53:49] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 17758, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:47"; "file_name" = ""; message = "Baby, need to disconnect now, Im not alone \Ud83e\Udd72 when he is in a call, I\U2019ll reconnect again\U2665\Ufe0f"; "message_id" = 17758; "message_type" = 0; "prev_session_message_id" = 17757; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:53:49] [PUSH] App active - suppressing notification UI, posting internal event [11:53:49] [PUSH_EMBED] πŸ“© Received embedded message: id=17758, type=0, sender=Esra [11:53:49] [PUSH_EMBED] βœ… Saved message 17758 to local DB (sync) [11:53:49] [PUSH_EMBED] Inserted message 17758 into existing cache (now 55 messages) [11:53:49] [PUSH_EMBED] Fetching evolution data for message 17758 in background [11:53:49] [PUSH_EMBED] βœ… Fully processed message 17758 [11:53:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17758, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:47"; "file_name" = ""; message = "Baby, need to disconnect now, Im not alone \Ud83e\Udd72 when he is in a call, I\U2019ll reconnect again\U2665\Ufe0f"; "message_id" = 17758; "message_type" = 0; "prev_session_message_id" = 17757; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:53:49] [PUSH_EMBED_VC] Processing embedded message: id=17758, type=0, sender=Esra, prevId=17757 [11:53:49] [PUSH_EMBED_VC] Inserted message 17758 into allMessagesWithReadBy (now 56 messages) [11:53:49] [PUSH_EMBED_VC] βœ… Previous message 17757 exists in memory [11:53:49] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:49] [PUSH] Parsed message_id: 17758 [11:53:49] [PUSH] Parsed operation_type: 0 [11:53:49] [PUSH] Taking direct action: opType=0, messageId=17758 [11:53:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17758 [11:53:49] [PUSH] ⚑ Message 17758 already in memory - skipping duplicate notification entirely [11:53:49] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:49] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:49] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: Baby, need to disconnect now, Im not alone πŸ₯² when [11:53:49] [BLACKOUT] Showing message overlay: 'Baby, need to disconnect now, Im not alone πŸ₯² when he is in a call, I’ll reconnect againβ™₯️' (count=88, utf8=98) [11:53:49] [PUSH_UI] Message 17758 already in memory - skipping insert [11:53:49] [PUSH_EMBED_VC] Saved message 17758 to local DB [11:53:49] [PUSH] Silent push received [11:53:49] [PUSH_EMBED] πŸ“© Received embedded message: id=17758, type=0, sender=Esra [11:53:49] [PUSH_EMBED] βœ… Saved message 17758 to local DB (sync) [11:53:49] [PUSH_EMBED] Fetching evolution data for message 17758 in background [11:53:49] [PUSH_EMBED] βœ… Fully processed message 17758 [11:53:49] [PUSH] Embedded message handled instantly from silent push [11:53:49] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:49] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:49] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: Baby, need to disconnect now, Im not alone πŸ₯² when [11:53:49] [BLACKOUT] Showing message overlay: 'Baby, need to disconnect now, Im not alone πŸ₯² when he is in a call, I’ll reconnect againβ™₯️' (count=88, utf8=98) [11:53:49] [PUSH_UI] Message 17758 already in memory - skipping insert [11:53:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:47"; "file_name" = ""; message = "Baby, need to disconnect now, Im not alone \Ud83e\Udd72 when he is in a call, I\U2019ll reconnect again\U2665\Ufe0f"; "message_id" = 17758; "message_type" = 0; "prev_session_message_id" = 17757; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17758, AnyHashable("operation_type"): 0] [11:53:49] [PUSH_EMBED_VC] Message 17758 already in memory - skipping [11:53:49] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:49] [PUSH] Parsed message_id: 17758 [11:53:49] [PUSH] Parsed operation_type: 0 [11:53:49] [PUSH] Taking direct action: opType=0, messageId=17758 [11:53:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17758 [11:53:49] [PUSH] ⚑ Message 17758 already in memory - skipping duplicate notification entirely [11:53:49] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[17758, 17757, 17703, 17704, 17705] [11:53:49] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:53:49] [CELL_UPLOAD] β†’ not my message, setting complete [11:53:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:53:49] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17757 β†’ 17758 [11:53:53] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:53:53 +0000 - type: unknown, operation_type: 0, message_id: 17759, session_id: ILUIWU, state: 0 [11:53:53] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:51"; "file_name" = ""; message = "ILU\U2665\Ufe0f"; "message_id" = 17759; "message_type" = 0; "prev_session_message_id" = 17758; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 2; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17759] [11:53:53] [PUSH] App active - suppressing notification UI, posting internal event [11:53:53] [PUSH_EMBED] πŸ“© Received embedded message: id=17759, type=0, sender=Esra [11:53:53] [PUSH_EMBED] βœ… Saved message 17759 to local DB (sync) [11:53:53] [PUSH_EMBED] Inserted message 17759 into existing cache (now 56 messages) [11:53:53] [PUSH_EMBED] Fetching evolution data for message 17759 in background [11:53:53] [PUSH_EMBED] βœ… Fully processed message 17759 [11:53:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:51"; "file_name" = ""; message = "ILU\U2665\Ufe0f"; "message_id" = 17759; "message_type" = 0; "prev_session_message_id" = 17758; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 2; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17759] [11:53:53] [PUSH_EMBED_VC] Processing embedded message: id=17759, type=0, sender=Esra, prevId=17758 [11:53:53] [PUSH_EMBED_VC] Inserted message 17759 into allMessagesWithReadBy (now 57 messages) [11:53:53] [PUSH_EMBED_VC] βœ… Previous message 17758 exists in memory [11:53:53] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:53] [PUSH] Parsed message_id: 17759 [11:53:53] [PUSH] Parsed operation_type: 0 [11:53:53] [PUSH] Taking direct action: opType=0, messageId=17759 [11:53:53] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17759 [11:53:53] [PUSH] ⚑ Message 17759 already in memory - skipping duplicate notification entirely [11:53:53] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:53] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:53] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: ILUβ™₯️ [11:53:53] [BLACKOUT] Showing message overlay: 'ILUβ™₯️' (count=4, utf8=9) [11:53:53] [PUSH_UI] Message 17759 already in memory - skipping insert [11:53:53] [PUSH_EMBED_VC] Saved message 17759 to local DB [11:53:53] [PUSH] Silent push received [11:53:53] [PUSH_EMBED] πŸ“© Received embedded message: id=17759, type=0, sender=Esra [11:53:53] [PUSH_EMBED] βœ… Saved message 17759 to local DB (sync) [11:53:53] [PUSH_EMBED] Fetching evolution data for message 17759 in background [11:53:53] [PUSH_EMBED] βœ… Fully processed message 17759 [11:53:53] [PUSH] Embedded message handled instantly from silent push [11:53:53] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:53] [PUSH_UI_BLACKOUT] blackoutView=true, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:53] [PUSH_UI_BLACKOUT] Calling showBlackoutMessage: ILUβ™₯️ [11:53:53] [BLACKOUT] Showing message overlay: 'ILUβ™₯️' (count=4, utf8=9) [11:53:53] [PUSH_UI] Message 17759 already in memory - skipping insert [11:53:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 2; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17759, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:51"; "file_name" = ""; message = "ILU\U2665\Ufe0f"; "message_id" = 17759; "message_type" = 0; "prev_session_message_id" = 17758; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:53:53] [PUSH_EMBED_VC] Message 17759 already in memory - skipping [11:53:53] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:53] [PUSH] Parsed message_id: 17759 [11:53:53] [PUSH] Parsed operation_type: 0 [11:53:53] [PUSH] Taking direct action: opType=0, messageId=17759 [11:53:53] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17759 [11:53:53] [PUSH] ⚑ Message 17759 already in memory - skipping duplicate notification entirely [11:53:53] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[17759, 17758, 17757, 17703, 17704] [11:53:53] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:53:53] [CELL_UPLOAD] β†’ not my message, setting complete [11:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:53:53] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17758 β†’ 17759 [11:53:56] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:53:56 +0000 - type: unknown, operation_type: 0, message_id: 17760, session_id: ILUIWU, state: 0 [11:53:56] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17760, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:54"; "file_name" = ""; message = "Soooo much"; "message_id" = 17760; "message_type" = 0; "prev_session_message_id" = 17759; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 3; "content-available" = 1; sound = default; }] [11:53:56] [PUSH] App active - suppressing notification UI, posting internal event [11:53:56] [PUSH_EMBED] πŸ“© Received embedded message: id=17760, type=0, sender=Esra [11:53:56] [PUSH_EMBED] βœ… Saved message 17760 to local DB (sync) [11:53:56] [PUSH_EMBED] Inserted message 17760 into existing cache (now 57 messages) [11:53:56] [PUSH_EMBED] Fetching evolution data for message 17760 in background [11:53:56] [PUSH_EMBED] βœ… Fully processed message 17760 [11:53:56] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17760, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:54"; "file_name" = ""; message = "Soooo much"; "message_id" = 17760; "message_type" = 0; "prev_session_message_id" = 17759; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 3; "content-available" = 1; sound = default; }] [11:53:56] [PUSH_EMBED_VC] Processing embedded message: id=17760, type=0, sender=Esra, prevId=17759 [11:53:56] [PUSH_EMBED_VC] Inserted message 17760 into allMessagesWithReadBy (now 58 messages) [11:53:56] [PUSH_EMBED_VC] βœ… Previous message 17759 exists in memory [11:53:56] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:56] [PUSH] Parsed message_id: 17760 [11:53:56] [PUSH] Parsed operation_type: 0 [11:53:56] [PUSH] Taking direct action: opType=0, messageId=17760 [11:53:56] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17760 [11:53:56] [PUSH] ⚑ Message 17760 already in memory - skipping duplicate notification entirely [11:53:56] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:56] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:56] [PUSH_UI] Message 17760 already in memory - skipping insert [11:53:56] [PUSH_EMBED_VC] Saved message 17760 to local DB [11:53:56] [PUSH] Silent push received [11:53:56] [PUSH_EMBED] πŸ“© Received embedded message: id=17760, type=0, sender=Esra [11:53:56] [PUSH_EMBED] βœ… Saved message 17760 to local DB (sync) [11:53:56] [PUSH_EMBED] Fetching evolution data for message 17760 in background [11:53:56] [PUSH_EMBED] βœ… Fully processed message 17760 [11:53:56] [PUSH] Embedded message handled instantly from silent push [11:53:56] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:56] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:56] [PUSH_UI] Message 17760 already in memory - skipping insert [11:53:56] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 3; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17760, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:54"; "file_name" = ""; message = "Soooo much"; "message_id" = 17760; "message_type" = 0; "prev_session_message_id" = 17759; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:53:56] [PUSH_EMBED_VC] Message 17760 already in memory - skipping [11:53:56] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:56] [PUSH] Parsed message_id: 17760 [11:53:56] [PUSH] Parsed operation_type: 0 [11:53:56] [PUSH] Taking direct action: opType=0, messageId=17760 [11:53:56] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17760 [11:53:56] [PUSH] ⚑ Message 17760 already in memory - skipping duplicate notification entirely [11:53:56] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[17760, 17759, 17758, 17757, 17703] [11:53:56] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:53:56] [CELL_UPLOAD] β†’ not my message, setting complete [11:53:56] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:53:56] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17759 β†’ 17760 [11:53:59] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:53:59] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:53:59] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:53:59 +0000 - type: unknown, operation_type: 0, message_id: 17761, session_id: ILUIWU, state: 0 [11:53:59] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 4; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17761, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:56"; "file_name" = ""; message = "A lot"; "message_id" = 17761; "message_type" = 0; "prev_session_message_id" = 17760; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:53:59] [PUSH] App active - suppressing notification UI, posting internal event [11:53:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17761, type=0, sender=Esra [11:53:59] [PUSH_EMBED] βœ… Saved message 17761 to local DB (sync) [11:53:59] [PUSH_EMBED] Inserted message 17761 into existing cache (now 58 messages) [11:53:59] [PUSH_EMBED] Fetching evolution data for message 17761 in background [11:53:59] [PUSH_EMBED] βœ… Fully processed message 17761 [11:53:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 4; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17761, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:56"; "file_name" = ""; message = "A lot"; "message_id" = 17761; "message_type" = 0; "prev_session_message_id" = 17760; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:53:59] [PUSH_EMBED_VC] Processing embedded message: id=17761, type=0, sender=Esra, prevId=17760 [11:53:59] [PUSH_EMBED_VC] Inserted message 17761 into allMessagesWithReadBy (now 59 messages) [11:53:59] [PUSH_EMBED_VC] βœ… Previous message 17760 exists in memory [11:53:59] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:59] [PUSH] Parsed message_id: 17761 [11:53:59] [PUSH] Parsed operation_type: 0 [11:53:59] [PUSH] Taking direct action: opType=0, messageId=17761 [11:53:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17761 [11:53:59] [PUSH] ⚑ Message 17761 already in memory - skipping duplicate notification entirely [11:53:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:59] [PUSH_UI] Message 17761 already in memory - skipping insert [11:53:59] [PUSH_EMBED_VC] Saved message 17761 to local DB [11:53:59] [PUSH] Silent push received [11:53:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17761, type=0, sender=Esra [11:53:59] [PUSH_EMBED] βœ… Saved message 17761 to local DB (sync) [11:53:59] [PUSH_EMBED] Fetching evolution data for message 17761 in background [11:53:59] [PUSH_EMBED] βœ… Fully processed message 17761 [11:53:59] [PUSH] Embedded message handled instantly from silent push [11:53:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:53:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:53:59] [PUSH_UI] Message 17761 already in memory - skipping insert [11:53:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:53:56"; "file_name" = ""; message = "A lot"; "message_id" = 17761; "message_type" = 0; "prev_session_message_id" = 17760; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17761, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 4; "content-available" = 1; sound = default; }] [11:53:59] [PUSH_EMBED_VC] Message 17761 already in memory - skipping [11:53:59] [PUSH] ⚑ Embedded message handled directly in ViewController [11:53:59] [PUSH] Parsed message_id: 17761 [11:53:59] [PUSH] Parsed operation_type: 0 [11:53:59] [PUSH] Taking direct action: opType=0, messageId=17761 [11:53:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17761 [11:53:59] [PUSH] ⚑ Message 17761 already in memory - skipping duplicate notification entirely [11:53:59] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[17761, 17760, 17759, 17758, 17757] [11:53:59] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:53:59] [CELL_UPLOAD] β†’ not my message, setting complete [11:53:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:53:59] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17760 β†’ 17761 [11:54:02] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:02 +0000 - type: unknown, operation_type: 0, message_id: 17762, session_id: ILUIWU, state: 0 [11:54:02] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 5; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17762, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:57"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17762; "message_type" = 0; "prev_session_message_id" = 17761; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:02] [PUSH] App active - suppressing notification UI, posting internal event [11:54:02] [PUSH_EMBED] πŸ“© Received embedded message: id=17762, type=0, sender=Esra [11:54:02] [PUSH_EMBED] βœ… Saved message 17762 to local DB (sync) [11:54:02] [PUSH_EMBED] Inserted message 17762 into existing cache (now 59 messages) [11:54:02] [PUSH_EMBED] Fetching evolution data for message 17762 in background [11:54:02] [PUSH_EMBED] βœ… Fully processed message 17762 [11:54:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 5; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17762, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:57"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17762; "message_type" = 0; "prev_session_message_id" = 17761; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:02] [PUSH_EMBED_VC] Processing embedded message: id=17762, type=0, sender=Esra, prevId=17761 [11:54:02] [PUSH_EMBED_VC] Inserted message 17762 into allMessagesWithReadBy (now 60 messages) [11:54:02] [PUSH_EMBED_VC] βœ… Previous message 17761 exists in memory [11:54:02] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:02] [PUSH] Parsed message_id: 17762 [11:54:02] [PUSH] Parsed operation_type: 0 [11:54:02] [PUSH] Taking direct action: opType=0, messageId=17762 [11:54:02] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17762 [11:54:02] [PUSH] ⚑ Message 17762 already in memory - skipping duplicate notification entirely [11:54:02] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:02] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:02] [PUSH_UI] Message 17762 already in memory - skipping insert [11:54:02] [PUSH_EMBED_VC] Saved message 17762 to local DB [11:54:02] [PUSH] Silent push received [11:54:02] [PUSH_EMBED] πŸ“© Received embedded message: id=17762, type=0, sender=Esra [11:54:02] [PUSH_EMBED] βœ… Saved message 17762 to local DB (sync) [11:54:02] [PUSH_EMBED] Fetching evolution data for message 17762 in background [11:54:02] [PUSH_EMBED] βœ… Fully processed message 17762 [11:54:02] [PUSH] Embedded message handled instantly from silent push [11:54:02] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:02] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:02] [PUSH_UI] Message 17762 already in memory - skipping insert [11:54:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 5; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17762, AnyHashable("message_data"): { datesent = "2026-01-15 10:53:57"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17762; "message_type" = 0; "prev_session_message_id" = 17761; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:02] [PUSH_EMBED_VC] Message 17762 already in memory - skipping [11:54:02] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:02] [PUSH] Parsed message_id: 17762 [11:54:02] [PUSH] Parsed operation_type: 0 [11:54:02] [PUSH] Taking direct action: opType=0, messageId=17762 [11:54:02] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17762 [11:54:02] [PUSH] ⚑ Message 17762 already in memory - skipping duplicate notification entirely [11:54:02] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[17762, 17761, 17760, 17759, 17758] [11:54:02] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:54:02] [CELL_UPLOAD] β†’ not my message, setting complete [11:54:02] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:54:02] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17761 β†’ 17762 [11:54:03] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:03] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:05] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:05 +0000 - type: unknown, operation_type: 0, message_id: 17763, session_id: ILUIWU, state: 0 [11:54:05] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 6; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17763, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:03"; "file_name" = ""; message = "\Ud83e\Udd70\U2763\Ufe0f\U2665\Ufe0f\Ud83d\Ude0d"; "message_id" = 17763; "message_type" = 0; "prev_session_message_id" = 17762; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:05] [PUSH] App active - suppressing notification UI, posting internal event [11:54:05] [PUSH_EMBED] πŸ“© Received embedded message: id=17763, type=0, sender=Esra [11:54:05] [PUSH_EMBED] βœ… Saved message 17763 to local DB (sync) [11:54:05] [PUSH_EMBED] Inserted message 17763 into existing cache (now 60 messages) [11:54:05] [PUSH_EMBED] Fetching evolution data for message 17763 in background [11:54:05] [PUSH_EMBED] βœ… Fully processed message 17763 [11:54:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 6; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17763, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:03"; "file_name" = ""; message = "\Ud83e\Udd70\U2763\Ufe0f\U2665\Ufe0f\Ud83d\Ude0d"; "message_id" = 17763; "message_type" = 0; "prev_session_message_id" = 17762; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:05] [PUSH_EMBED_VC] Processing embedded message: id=17763, type=0, sender=Esra, prevId=17762 [11:54:05] [PUSH_EMBED_VC] Inserted message 17763 into allMessagesWithReadBy (now 61 messages) [11:54:05] [PUSH_EMBED_VC] βœ… Previous message 17762 exists in memory [11:54:05] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:05] [PUSH] Parsed message_id: 17763 [11:54:05] [PUSH] Parsed operation_type: 0 [11:54:05] [PUSH] Taking direct action: opType=0, messageId=17763 [11:54:05] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17763 [11:54:05] [PUSH] ⚑ Message 17763 already in memory - skipping duplicate notification entirely [11:54:05] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:05] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:05] [PUSH_UI] Message 17763 already in memory - skipping insert [11:54:05] [PUSH_EMBED_VC] Saved message 17763 to local DB [11:54:05] [PUSH] Silent push received [11:54:05] [PUSH_EMBED] πŸ“© Received embedded message: id=17763, type=0, sender=Esra [11:54:05] [PUSH_EMBED] βœ… Saved message 17763 to local DB (sync) [11:54:05] [PUSH_EMBED] Fetching evolution data for message 17763 in background [11:54:05] [PUSH_EMBED] βœ… Fully processed message 17763 [11:54:05] [PUSH] Embedded message handled instantly from silent push [11:54:05] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:05] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:05] [PUSH_UI] Message 17763 already in memory - skipping insert [11:54:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17763, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:03"; "file_name" = ""; message = "\Ud83e\Udd70\U2763\Ufe0f\U2665\Ufe0f\Ud83d\Ude0d"; "message_id" = 17763; "message_type" = 0; "prev_session_message_id" = 17762; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 6; "content-available" = 1; sound = default; }] [11:54:05] [PUSH_EMBED_VC] Message 17763 already in memory - skipping [11:54:05] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:05] [PUSH] Parsed message_id: 17763 [11:54:05] [PUSH] Parsed operation_type: 0 [11:54:05] [PUSH] Taking direct action: opType=0, messageId=17763 [11:54:05] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17763 [11:54:05] [PUSH] ⚑ Message 17763 already in memory - skipping duplicate notification entirely [11:54:06] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[17763, 17762, 17761, 17760, 17759] [11:54:06] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:54:06] [CELL_UPLOAD] β†’ not my message, setting complete [11:54:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:54:06] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17762 β†’ 17763 [11:54:06] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:06] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:08] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:08 +0000 - type: unknown, operation_type: 0, message_id: 17764, session_id: ILUIWU, state: 0 [11:54:08] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 7; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17764, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:06"; "file_name" = ""; message = "\Ud83d\Ude18\Ud83d\Ude18\Ud83d\Ude18"; "message_id" = 17764; "message_type" = 0; "prev_session_message_id" = 17763; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:08] [PUSH] App active - suppressing notification UI, posting internal event [11:54:08] [PUSH_EMBED] πŸ“© Received embedded message: id=17764, type=0, sender=Esra [11:54:08] [PUSH_EMBED] βœ… Saved message 17764 to local DB (sync) [11:54:08] [PUSH_EMBED] Inserted message 17764 into existing cache (now 61 messages) [11:54:08] [PUSH_EMBED] Fetching evolution data for message 17764 in background [11:54:08] [PUSH_EMBED] βœ… Fully processed message 17764 [11:54:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 7; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17764, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:06"; "file_name" = ""; message = "\Ud83d\Ude18\Ud83d\Ude18\Ud83d\Ude18"; "message_id" = 17764; "message_type" = 0; "prev_session_message_id" = 17763; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:08] [PUSH_EMBED_VC] Processing embedded message: id=17764, type=0, sender=Esra, prevId=17763 [11:54:08] [PUSH_EMBED_VC] Inserted message 17764 into allMessagesWithReadBy (now 62 messages) [11:54:08] [PUSH_EMBED_VC] βœ… Previous message 17763 exists in memory [11:54:08] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:08] [PUSH] Parsed message_id: 17764 [11:54:08] [PUSH] Parsed operation_type: 0 [11:54:08] [PUSH] Taking direct action: opType=0, messageId=17764 [11:54:08] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17764 [11:54:08] [PUSH] ⚑ Message 17764 already in memory - skipping duplicate notification entirely [11:54:08] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:08] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:08] [PUSH_UI] Message 17764 already in memory - skipping insert [11:54:08] [PUSH_EMBED_VC] Saved message 17764 to local DB [11:54:08] [PUSH] Silent push received [11:54:08] [PUSH_EMBED] πŸ“© Received embedded message: id=17764, type=0, sender=Esra [11:54:08] [PUSH_EMBED] βœ… Saved message 17764 to local DB (sync) [11:54:08] [PUSH_EMBED] Fetching evolution data for message 17764 in background [11:54:08] [PUSH_EMBED] βœ… Fully processed message 17764 [11:54:08] [PUSH] Embedded message handled instantly from silent push [11:54:08] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:08] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:08] [PUSH_UI] Message 17764 already in memory - skipping insert [11:54:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:06"; "file_name" = ""; message = "\Ud83d\Ude18\Ud83d\Ude18\Ud83d\Ude18"; "message_id" = 17764; "message_type" = 0; "prev_session_message_id" = 17763; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 7; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17764] [11:54:08] [PUSH_EMBED_VC] Message 17764 already in memory - skipping [11:54:08] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:08] [PUSH] Parsed message_id: 17764 [11:54:08] [PUSH] Parsed operation_type: 0 [11:54:08] [PUSH] Taking direct action: opType=0, messageId=17764 [11:54:08] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17764 [11:54:08] [PUSH] ⚑ Message 17764 already in memory - skipping duplicate notification entirely [11:54:09] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[17764, 17763, 17762, 17761, 17760] [11:54:09] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17763 β†’ 17764 [11:54:09] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [11:54:09] [CELL_UPLOAD] β†’ not my message, setting complete [11:54:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [11:54:09] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:09] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:12] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:12] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:15] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:15] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:16] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:16 +0000 - type: unknown, operation_type: 0, message_id: 17765, session_id: ILUIWU, state: 0 [11:54:16] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 8; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:14"; "file_name" = ""; message = "I dont wanna go"; "message_id" = 17765; "message_type" = 0; "prev_session_message_id" = 17764; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17765, AnyHashable("session_id"): ILUIWU] [11:54:16] [PUSH] App active - suppressing notification UI, posting internal event [11:54:16] [PUSH_EMBED] πŸ“© Received embedded message: id=17765, type=0, sender=Esra [11:54:16] [PUSH_EMBED] βœ… Saved message 17765 to local DB (sync) [11:54:16] [PUSH_EMBED] Inserted message 17765 into existing cache (now 62 messages) [11:54:16] [PUSH_EMBED] Fetching evolution data for message 17765 in background [11:54:16] [PUSH_EMBED] βœ… Fully processed message 17765 [11:54:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 8; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:14"; "file_name" = ""; message = "I dont wanna go"; "message_id" = 17765; "message_type" = 0; "prev_session_message_id" = 17764; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17765, AnyHashable("session_id"): ILUIWU] [11:54:16] [PUSH_EMBED_VC] Processing embedded message: id=17765, type=0, sender=Esra, prevId=17764 [11:54:16] [PUSH_EMBED_VC] Inserted message 17765 into allMessagesWithReadBy (now 63 messages) [11:54:16] [PUSH_EMBED_VC] βœ… Previous message 17764 exists in memory [11:54:16] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:16] [PUSH] Parsed message_id: 17765 [11:54:16] [PUSH] Parsed operation_type: 0 [11:54:16] [PUSH] Taking direct action: opType=0, messageId=17765 [11:54:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17765 [11:54:16] [PUSH] ⚑ Message 17765 already in memory - skipping duplicate notification entirely [11:54:16] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:16] [PUSH_UI] Message 17765 already in memory - skipping insert [11:54:16] [PUSH_EMBED_VC] Saved message 17765 to local DB [11:54:16] [PUSH] Silent push received [11:54:16] [PUSH_EMBED] πŸ“© Received embedded message: id=17765, type=0, sender=Esra [11:54:16] [PUSH_EMBED] βœ… Saved message 17765 to local DB (sync) [11:54:16] [PUSH_EMBED] Fetching evolution data for message 17765 in background [11:54:16] [PUSH_EMBED] βœ… Fully processed message 17765 [11:54:16] [PUSH] Embedded message handled instantly from silent push [11:54:16] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:16] [PUSH_UI] Message 17765 already in memory - skipping insert [11:54:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17765, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:14"; "file_name" = ""; message = "I dont wanna go"; "message_id" = 17765; "message_type" = 0; "prev_session_message_id" = 17764; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 8; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [11:54:16] [PUSH_EMBED_VC] Message 17765 already in memory - skipping [11:54:16] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:16] [PUSH] Parsed message_id: 17765 [11:54:16] [PUSH] Parsed operation_type: 0 [11:54:16] [PUSH] Taking direct action: opType=0, messageId=17765 [11:54:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17765 [11:54:16] [PUSH] ⚑ Message 17765 already in memory - skipping duplicate notification entirely [11:54:16] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=63, first5Ids=[17765, 17764, 17763, 17762, 17761] [11:54:16] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17764 β†’ 17765 [11:54:18] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:18] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:21] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:21 +0000 - type: unknown, operation_type: 0, message_id: 17766, session_id: ILUIWU, state: 0 [11:54:21] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 9; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:20"; "file_name" = ""; message = "But I have to"; "message_id" = 17766; "message_type" = 0; "prev_session_message_id" = 17765; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17766, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:54:21] [PUSH] App active - suppressing notification UI, posting internal event [11:54:21] [PUSH_EMBED] πŸ“© Received embedded message: id=17766, type=0, sender=Esra [11:54:21] [PUSH_EMBED] βœ… Saved message 17766 to local DB (sync) [11:54:21] [PUSH_EMBED] Inserted message 17766 into existing cache (now 63 messages) [11:54:21] [PUSH_EMBED] Fetching evolution data for message 17766 in background [11:54:21] [PUSH_EMBED] βœ… Fully processed message 17766 [11:54:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 9; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:20"; "file_name" = ""; message = "But I have to"; "message_id" = 17766; "message_type" = 0; "prev_session_message_id" = 17765; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17766, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:54:21] [PUSH_EMBED_VC] Processing embedded message: id=17766, type=0, sender=Esra, prevId=17765 [11:54:21] [PUSH_EMBED_VC] Inserted message 17766 into allMessagesWithReadBy (now 64 messages) [11:54:21] [PUSH_EMBED_VC] βœ… Previous message 17765 exists in memory [11:54:21] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:21] [PUSH] Parsed message_id: 17766 [11:54:21] [PUSH] Parsed operation_type: 0 [11:54:21] [PUSH] Taking direct action: opType=0, messageId=17766 [11:54:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17766 [11:54:21] [PUSH] ⚑ Message 17766 already in memory - skipping duplicate notification entirely [11:54:21] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:21] [PUSH_UI] Message 17766 already in memory - skipping insert [11:54:21] [PUSH_EMBED_VC] Saved message 17766 to local DB [11:54:21] [PUSH] Silent push received [11:54:21] [PUSH_EMBED] πŸ“© Received embedded message: id=17766, type=0, sender=Esra [11:54:21] [PUSH_EMBED] βœ… Saved message 17766 to local DB (sync) [11:54:21] [PUSH_EMBED] Fetching evolution data for message 17766 in background [11:54:21] [PUSH_EMBED] βœ… Fully processed message 17766 [11:54:21] [PUSH] Embedded message handled instantly from silent push [11:54:21] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:21] [PUSH_UI] Message 17766 already in memory - skipping insert [11:54:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 9; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17766, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:20"; "file_name" = ""; message = "But I have to"; "message_id" = 17766; "message_type" = 0; "prev_session_message_id" = 17765; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:21] [PUSH_EMBED_VC] Message 17766 already in memory - skipping [11:54:21] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:21] [PUSH] Parsed message_id: 17766 [11:54:21] [PUSH] Parsed operation_type: 0 [11:54:21] [PUSH] Taking direct action: opType=0, messageId=17766 [11:54:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17766 [11:54:21] [PUSH] ⚑ Message 17766 already in memory - skipping duplicate notification entirely [11:54:21] [PUSH] Silent push received [11:54:21] [PUSH_EMBED] πŸ“© Received embedded message: id=17766, type=0, sender=Esra [11:54:21] [PUSH_EMBED] βœ… Saved message 17766 to local DB (sync) [11:54:21] [PUSH_EMBED] Fetching evolution data for message 17766 in background [11:54:21] [PUSH_EMBED] βœ… Fully processed message 17766 [11:54:21] [PUSH] Embedded message handled instantly from silent push [11:54:21] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:21] [PUSH_UI] Message 17766 already in memory - skipping insert [11:54:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:54:20"; "file_name" = ""; message = "But I have to"; "message_id" = 17766; "message_type" = 0; "prev_session_message_id" = 17765; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17766, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 9; "content-available" = 1; sound = default; }] [11:54:21] [PUSH_EMBED_VC] Message 17766 already in memory - skipping [11:54:21] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:21] [PUSH] Parsed message_id: 17766 [11:54:21] [PUSH] Parsed operation_type: 0 [11:54:21] [PUSH] Taking direct action: opType=0, messageId=17766 [11:54:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17766 [11:54:21] [PUSH] ⚑ Message 17766 already in memory - skipping duplicate notification entirely [11:54:22] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=64, first5Ids=[17766, 17765, 17764, 17763, 17762] [11:54:22] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17765 β†’ 17766 [11:54:23] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:23 +0000 - type: unknown, operation_type: 0, message_id: 17767, session_id: ILUIWU, state: 0 [11:54:23] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17767, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:21"; "file_name" = ""; message = "\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72"; "message_id" = 17767; "message_type" = 0; "prev_session_message_id" = 17766; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 10; "content-available" = 1; sound = default; }] [11:54:23] [PUSH] App active - suppressing notification UI, posting internal event [11:54:23] [PUSH_EMBED] πŸ“© Received embedded message: id=17767, type=0, sender=Esra [11:54:23] [PUSH_EMBED] βœ… Saved message 17767 to local DB (sync) [11:54:23] [PUSH_EMBED] Inserted message 17767 into existing cache (now 64 messages) [11:54:23] [PUSH_EMBED] Fetching evolution data for message 17767 in background [11:54:23] [PUSH_EMBED] βœ… Fully processed message 17767 [11:54:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17767, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:21"; "file_name" = ""; message = "\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72"; "message_id" = 17767; "message_type" = 0; "prev_session_message_id" = 17766; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 10; "content-available" = 1; sound = default; }] [11:54:23] [PUSH_EMBED_VC] Processing embedded message: id=17767, type=0, sender=Esra, prevId=17766 [11:54:23] [PUSH_EMBED_VC] Inserted message 17767 into allMessagesWithReadBy (now 65 messages) [11:54:23] [PUSH_EMBED_VC] βœ… Previous message 17766 exists in memory [11:54:23] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:23] [PUSH] Parsed message_id: 17767 [11:54:23] [PUSH] Parsed operation_type: 0 [11:54:23] [PUSH] Taking direct action: opType=0, messageId=17767 [11:54:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17767 [11:54:23] [PUSH] ⚑ Message 17767 already in memory - skipping duplicate notification entirely [11:54:23] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:23] [PUSH_UI] Message 17767 already in memory - skipping insert [11:54:23] [PUSH_EMBED_VC] Saved message 17767 to local DB [11:54:23] [PUSH] Silent push received [11:54:23] [PUSH_EMBED] πŸ“© Received embedded message: id=17767, type=0, sender=Esra [11:54:23] [PUSH_EMBED] βœ… Saved message 17767 to local DB (sync) [11:54:23] [PUSH_EMBED] Fetching evolution data for message 17767 in background [11:54:23] [PUSH_EMBED] βœ… Fully processed message 17767 [11:54:23] [PUSH] Embedded message handled instantly from silent push [11:54:23] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:23] [PUSH_UI] Message 17767 already in memory - skipping insert [11:54:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 10; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17767, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:21"; "file_name" = ""; message = "\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72"; "message_id" = 17767; "message_type" = 0; "prev_session_message_id" = 17766; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:23] [PUSH_EMBED_VC] Message 17767 already in memory - skipping [11:54:23] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:23] [PUSH] Parsed message_id: 17767 [11:54:23] [PUSH] Parsed operation_type: 0 [11:54:23] [PUSH] Taking direct action: opType=0, messageId=17767 [11:54:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17767 [11:54:23] [PUSH] ⚑ Message 17767 already in memory - skipping duplicate notification entirely [11:54:23] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[17767, 17766, 17765, 17764, 17763] [11:54:23] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17766 β†’ 17767 [11:54:26] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:26] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:27] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:27 +0000 - type: unknown, operation_type: 0, message_id: 17768, session_id: ILUIWU, state: 0 [11:54:27] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 11; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17768, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:26"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17768; "message_type" = 0; "prev_session_message_id" = 17767; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:27] [PUSH] App active - suppressing notification UI, posting internal event [11:54:27] [PUSH_EMBED] πŸ“© Received embedded message: id=17768, type=0, sender=Esra [11:54:27] [PUSH_EMBED] βœ… Saved message 17768 to local DB (sync) [11:54:27] [PUSH_EMBED] Inserted message 17768 into existing cache (now 65 messages) [11:54:27] [PUSH_EMBED] Fetching evolution data for message 17768 in background [11:54:27] [PUSH_EMBED] βœ… Fully processed message 17768 [11:54:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 11; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17768, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:26"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17768; "message_type" = 0; "prev_session_message_id" = 17767; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:27] [PUSH_EMBED_VC] Processing embedded message: id=17768, type=0, sender=Esra, prevId=17767 [11:54:27] [PUSH_EMBED_VC] Inserted message 17768 into allMessagesWithReadBy (now 66 messages) [11:54:27] [PUSH_EMBED_VC] βœ… Previous message 17767 exists in memory [11:54:27] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:27] [PUSH] Parsed message_id: 17768 [11:54:27] [PUSH] Parsed operation_type: 0 [11:54:27] [PUSH] Taking direct action: opType=0, messageId=17768 [11:54:27] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17768 [11:54:27] [PUSH] ⚑ Message 17768 already in memory - skipping duplicate notification entirely [11:54:27] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:27] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:27] [PUSH_UI] Message 17768 already in memory - skipping insert [11:54:27] [PUSH_EMBED_VC] Saved message 17768 to local DB [11:54:27] [PUSH] Silent push received [11:54:27] [PUSH_EMBED] πŸ“© Received embedded message: id=17768, type=0, sender=Esra [11:54:27] [PUSH_EMBED] βœ… Saved message 17768 to local DB (sync) [11:54:27] [PUSH_EMBED] Fetching evolution data for message 17768 in background [11:54:27] [PUSH_EMBED] βœ… Fully processed message 17768 [11:54:27] [PUSH] Embedded message handled instantly from silent push [11:54:27] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:27] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:27] [PUSH_UI] Message 17768 already in memory - skipping insert [11:54:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 11; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17768, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:26"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17768; "message_type" = 0; "prev_session_message_id" = 17767; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:27] [PUSH_EMBED_VC] Message 17768 already in memory - skipping [11:54:27] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:27] [PUSH] Parsed message_id: 17768 [11:54:27] [PUSH] Parsed operation_type: 0 [11:54:27] [PUSH] Taking direct action: opType=0, messageId=17768 [11:54:27] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17768 [11:54:27] [PUSH] ⚑ Message 17768 already in memory - skipping duplicate notification entirely [11:54:27] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[17768, 17767, 17766, 17765, 17764] [11:54:27] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17767 β†’ 17768 [11:54:31] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:31] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:31] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:33] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:33] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:35] [iOS AUDIO] πŸ“Š 4000 audio packets sent [11:54:36] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:36 +0000 - type: unknown, operation_type: 0, message_id: 17769, session_id: ILUIWU, state: 0 [11:54:36] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 12; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:35"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17769; "message_type" = 0; "prev_session_message_id" = 17768; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17769, AnyHashable("session_id"): ILUIWU] [11:54:36] [PUSH] App active - suppressing notification UI, posting internal event [11:54:36] [PUSH_EMBED] πŸ“© Received embedded message: id=17769, type=0, sender=Esra [11:54:36] [PUSH_EMBED] βœ… Saved message 17769 to local DB (sync) [11:54:36] [PUSH_EMBED] Inserted message 17769 into existing cache (now 66 messages) [11:54:36] [PUSH_EMBED] Fetching evolution data for message 17769 in background [11:54:36] [PUSH_EMBED] βœ… Fully processed message 17769 [11:54:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 12; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:35"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17769; "message_type" = 0; "prev_session_message_id" = 17768; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17769, AnyHashable("session_id"): ILUIWU] [11:54:36] [PUSH_EMBED_VC] Processing embedded message: id=17769, type=0, sender=Esra, prevId=17768 [11:54:36] [PUSH_EMBED_VC] Inserted message 17769 into allMessagesWithReadBy (now 67 messages) [11:54:36] [PUSH_EMBED_VC] βœ… Previous message 17768 exists in memory [11:54:36] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:36] [PUSH] Parsed message_id: 17769 [11:54:36] [PUSH] Parsed operation_type: 0 [11:54:36] [PUSH] Taking direct action: opType=0, messageId=17769 [11:54:36] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17769 [11:54:36] [PUSH] ⚑ Message 17769 already in memory - skipping duplicate notification entirely [11:54:36] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:36] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:36] [PUSH_UI] Message 17769 already in memory - skipping insert [11:54:36] [PUSH_EMBED_VC] Saved message 17769 to local DB [11:54:36] [PUSH] Silent push received [11:54:36] [PUSH_EMBED] πŸ“© Received embedded message: id=17769, type=0, sender=Esra [11:54:37] [PUSH_EMBED] βœ… Saved message 17769 to local DB (sync) [11:54:37] [PUSH_EMBED] Fetching evolution data for message 17769 in background [11:54:37] [PUSH_EMBED] βœ… Fully processed message 17769 [11:54:37] [PUSH] Embedded message handled instantly from silent push [11:54:37] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:37] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:37] [PUSH_UI] Message 17769 already in memory - skipping insert [11:54:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 12; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17769, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:35"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17769; "message_type" = 0; "prev_session_message_id" = 17768; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:54:37] [PUSH_EMBED_VC] Message 17769 already in memory - skipping [11:54:37] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:37] [PUSH] Parsed message_id: 17769 [11:54:37] [PUSH] Parsed operation_type: 0 [11:54:37] [PUSH] Taking direct action: opType=0, messageId=17769 [11:54:37] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17769 [11:54:37] [PUSH] ⚑ Message 17769 already in memory - skipping duplicate notification entirely [11:54:37] [PUSH] Silent push received [11:54:37] [PUSH_EMBED] πŸ“© Received embedded message: id=17769, type=0, sender=Esra [11:54:37] [PUSH_EMBED] βœ… Saved message 17769 to local DB (sync) [11:54:37] [PUSH_EMBED] Fetching evolution data for message 17769 in background [11:54:37] [PUSH_EMBED] βœ… Fully processed message 17769 [11:54:37] [PUSH] Embedded message handled instantly from silent push [11:54:37] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:37] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:37] [PUSH_UI] Message 17769 already in memory - skipping insert [11:54:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 12; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:35"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17769; "message_type" = 0; "prev_session_message_id" = 17768; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17769, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:54:37] [PUSH_EMBED_VC] Message 17769 already in memory - skipping [11:54:37] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:37] [PUSH] Parsed message_id: 17769 [11:54:37] [PUSH] Parsed operation_type: 0 [11:54:37] [PUSH] Taking direct action: opType=0, messageId=17769 [11:54:37] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17769 [11:54:37] [PUSH] ⚑ Message 17769 already in memory - skipping duplicate notification entirely [11:54:37] [PUSH] Silent push received [11:54:37] [PUSH_EMBED] πŸ“© Received embedded message: id=17769, type=0, sender=Esra [11:54:37] [PUSH_EMBED] βœ… Saved message 17769 to local DB (sync) [11:54:37] [PUSH_EMBED] Fetching evolution data for message 17769 in background [11:54:37] [PUSH_EMBED] βœ… Fully processed message 17769 [11:54:37] [PUSH] Embedded message handled instantly from silent push [11:54:37] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:37] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:37] [PUSH_UI] Message 17769 already in memory - skipping insert [11:54:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17769, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 10:54:35"; "file_name" = ""; message = "\U2665\Ufe0f"; "message_id" = 17769; "message_type" = 0; "prev_session_message_id" = 17768; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 12; "content-available" = 1; sound = default; }] [11:54:37] [PUSH_EMBED_VC] Message 17769 already in memory - skipping [11:54:37] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:37] [PUSH] Parsed message_id: 17769 [11:54:37] [PUSH] Parsed operation_type: 0 [11:54:37] [PUSH] Taking direct action: opType=0, messageId=17769 [11:54:37] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17769 [11:54:37] [PUSH] ⚑ Message 17769 already in memory - skipping duplicate notification entirely [11:54:37] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[17769, 17768, 17767, 17766, 17765] [11:54:37] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17768 β†’ 17769 [11:54:37] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:37] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:39] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 10:54:39 +0000 - type: unknown, operation_type: 0, message_id: 17770, session_id: ILUIWU, state: 0 [11:54:39] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:54:38"; "file_name" = ""; message = "\Ud83d\Ude07"; "message_id" = 17770; "message_type" = 0; "prev_session_message_id" = 17769; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 13; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17770, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:54:39] [PUSH] App active - suppressing notification UI, posting internal event [11:54:39] [PUSH_EMBED] πŸ“© Received embedded message: id=17770, type=0, sender=Esra [11:54:39] [PUSH_EMBED] βœ… Saved message 17770 to local DB (sync) [11:54:39] [PUSH_EMBED] Inserted message 17770 into existing cache (now 67 messages) [11:54:39] [PUSH_EMBED] Fetching evolution data for message 17770 in background [11:54:39] [PUSH_EMBED] βœ… Fully processed message 17770 [11:54:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:54:38"; "file_name" = ""; message = "\Ud83d\Ude07"; "message_id" = 17770; "message_type" = 0; "prev_session_message_id" = 17769; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 13; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17770, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU] [11:54:39] [PUSH_EMBED_VC] Processing embedded message: id=17770, type=0, sender=Esra, prevId=17769 [11:54:39] [PUSH_EMBED_VC] Inserted message 17770 into allMessagesWithReadBy (now 68 messages) [11:54:39] [PUSH_EMBED_VC] βœ… Previous message 17769 exists in memory [11:54:39] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:39] [PUSH] Parsed message_id: 17770 [11:54:39] [PUSH] Parsed operation_type: 0 [11:54:39] [PUSH] Taking direct action: opType=0, messageId=17770 [11:54:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17770 [11:54:39] [PUSH] ⚑ Message 17770 already in memory - skipping duplicate notification entirely [11:54:39] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:39] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:39] [PUSH_UI] Message 17770 already in memory - skipping insert [11:54:39] [PUSH_EMBED_VC] Saved message 17770 to local DB [11:54:39] [PUSH] Silent push received [11:54:39] [PUSH_EMBED] πŸ“© Received embedded message: id=17770, type=0, sender=Esra [11:54:39] [PUSH_EMBED] βœ… Saved message 17770 to local DB (sync) [11:54:39] [PUSH_EMBED] Fetching evolution data for message 17770 in background [11:54:39] [PUSH_EMBED] βœ… Fully processed message 17770 [11:54:39] [PUSH] Embedded message handled instantly from silent push [11:54:39] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [11:54:39] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:54:39] [PUSH_UI] Message 17770 already in memory - skipping insert [11:54:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 10:54:38"; "file_name" = ""; message = "\Ud83d\Ude07"; "message_id" = 17770; "message_type" = 0; "prev_session_message_id" = 17769; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17770, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 13; "content-available" = 1; sound = default; }] [11:54:39] [PUSH_EMBED_VC] Message 17770 already in memory - skipping [11:54:39] [PUSH] ⚑ Embedded message handled directly in ViewController [11:54:39] [PUSH] Parsed message_id: 17770 [11:54:39] [PUSH] Parsed operation_type: 0 [11:54:39] [PUSH] Taking direct action: opType=0, messageId=17770 [11:54:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17770 [11:54:39] [PUSH] ⚑ Message 17770 already in memory - skipping duplicate notification entirely [11:54:39] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[17770, 17769, 17768, 17767, 17766] [11:54:39] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17769 β†’ 17770 [11:54:42] ICE state for vid=ewQZwZlxzg2-0xZY: 5 ( RTCIceConnectionState ) [11:54:42] [STATS] stopped poll for vid=ewQZwZlxzg2-0xZY [11:54:46] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:47] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:47] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:47] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:49] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:49] [PUSH_EMBED] Evolution fetch error: The request timed out. [11:54:59] ICE state for vid=ewQZwZlxzg2-0xZY: 4 ( RTCIceConnectionState ) [11:55:06] [BROADCAST] Stopping camera broadcast [11:55:06] [CAM] Disconnected from signaling server [11:55:07] Video capture stopped (audio still running) [11:55:07] [iOS AUDIO] Audio capture stopped [11:55:07] Capture stopped (video + audio) [11:55:07] ICE state for vid=ewQZwZlxzg2-0xZY: 6 ( RTCIceConnectionState ) [11:55:07] Video capture stopped (audio still running) [11:55:07] Capture stopped (video + audio) [11:55:07] [WEBRTC] WebRTCClient deinit - timers cleaned up [11:55:07] [WEBRTC] βœ… Media teardown complete - camera stopped [11:55:07] WS closed [11:55:08] [LIFECYCLE] App resigning active - cleared crash flag [11:55:09] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:55:09] [SECURITY] Saved background timestamp [11:55:09] [LIFECYCLE] App entering background - cleared crash flag [11:55:09] [CLIENT_SIG] Disconnecting [11:55:09] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:55:09] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=0 [11:55:09] [WS] Canceling WebSocket for viewer connection to iosILUIWU [11:55:09] In cleanupPeer [11:55:09] In cleanupPeer [11:55:09] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0 [11:55:09] [WS] Canceling WebSocket for query connection to iosILUIWU [11:55:09] In cleanupPeer [11:55:09] In cleanupPeer [11:55:09] [LIFECYCLE] WebRTC audio disabled [11:55:09] [LIFECYCLE] AVAudioSession deactivated [11:55:09] [LIFECYCLE] All connections stopped [11:55:09] [CLIENT_SIG] WebSocket closed with code 1001 [11:55:09] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:55:09] [SERVER] Stopped reconnect polling [11:55:09] Will request stop of video 0 [11:55:09] Will request stop of video 0 [11:55:09] Will request stop of video 0 [11:55:09] Will request stop of video 0 [11:55:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001 [11:55:09] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views [11:55:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=false, connectionStr=iosILUIWU, closeCode=1001 [11:55:09] [AGENT] Chat-only mode - keeping WebSocket open despite no agent [11:55:09] [PIP] Removing 0 tracks from PiP for connection 0 [11:55:09] [PIP] βœ… All tracks removed for connection 0 [11:55:09] [PIP] Removing 0 tracks from PiP for connection 0 [11:55:09] [PIP] βœ… All tracks removed for connection 0 [11:55:09] [PIP] Removing 0 tracks from PiP for connection 0 [11:55:09] [PIP] βœ… All tracks removed for connection 0 [11:55:09] [PIP] Removing 0 tracks from PiP for connection 0 [11:55:09] [PIP] βœ… All tracks removed for connection 0 [11:55:09] [CLEANUP] ======================================== [11:55:09] [CLEANUP] Cleaning up all agent connections and views [11:55:09] [CLEANUP] Current state: vccs=1, videoViews=0, feedScrollViews=0 [11:55:09] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=-1 [11:55:09] In cleanupPeer [11:55:09] In cleanupPeer [11:55:09] [CLEANUP] Stopped and removed 1 video connections [11:55:09] [CLEANUP] Removed 0 video views [11:55:09] [CLEANUP] Removed 0 feed scroll views [11:55:09] [CLEANUP] Removed 0 status labels [11:55:09] [CLEANUP] Reset agent query state [11:55:09] [CLEANUP] Updated page indicator [11:55:09] [CLEANUP] Rebuilt video layout [11:55:09] [CLEANUP] βœ… All agent connections and views cleaned up [11:55:09] [CLEANUP] ======================================== [11:55:09] [SERVER] Skipping reconnect polling - app is in background [11:55:09] [WS] URLSession invalidated successfully [11:55:09] [WS] URLSession invalidated successfully [11:55:09] [LIFECYCLE] πŸ”΄ VideoConnectionClass DEALLOCATING - isQueryOnly=false, connectionStr=iosILUIWU [12:01:29] [CRASH] No crash detected [12:01:29] [LOG] Within rotation interval - preserving logs (92m until next clear) [12:01:29] [FONT] Roboto fonts loaded successfully: Roboto-Regular [12:01:29] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [12:01:29] [GIPHY] SDK not available - using REST API fallback [12:01:29] [BACKGROUND] Background fetch enabled [12:01:29] [SECURITY] Initial launch - timeout exceeded (380.7404592037201s > 300.0s) [12:01:29] [AUTH] Starting PIN authentication [12:01:29] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:01:29] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:29] [CLEANUP] No old timer messages to delete [12:01:29] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [12:01:30] [CLIENT_SIG] WebSocket opened [12:01:30] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:01:30] [CLIENT_SIG] Connected! clientId=Mm67uwbIfm9kCZoI [12:01:30] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:01:30] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:30] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:01:30] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:01:30] [USER] βœ… User registered successfully [12:01:30] [PUSH] User registration after token update: success [12:01:30] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17770)... [12:01:30] [PRELOAD] No messages or parse error [12:01:30] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:01:30] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:01:35] [CRASH] Previous session did not exit cleanly - crash detected [12:01:35] [LOG] Within rotation interval - preserving logs (92m until next clear) [12:01:35] [FONT] Roboto fonts loaded successfully: Roboto-Regular [12:01:35] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [12:01:35] [GIPHY] SDK not available - using REST API fallback [12:01:35] [BACKGROUND] Background fetch enabled [12:01:35] [SECURITY] Initial launch - timeout exceeded (386.4599549770355s > 300.0s) [12:01:35] [AUTH] Starting PIN authentication [12:01:35] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:01:35] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:35] [CLEANUP] No old timer messages to delete [12:01:35] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [12:01:35] [CLIENT_SIG] WebSocket opened [12:01:35] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:01:35] [CLIENT_SIG] Connected! clientId=YQ2k5U8EwtFvp9oj [12:01:35] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:01:35] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:01:35] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:01:35] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:35] [USER] βœ… User registered successfully [12:01:35] [PUSH] User registration after token update: success [12:01:35] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:01:35] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:01:35] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17770)... [12:01:35] [PRELOAD] No messages or parse error [12:01:36] [PIN_AUTH] Correct PIN [12:01:36] [SECURITY] Restored real session: ILUIWU [12:01:36] [SECURITY] Restored real session: ILUIWU [12:01:37] [SECURITY] Saved real session: ILUIWU [12:01:37] [SCENE] Launched directly to chat view with sessionId: ILUIWU [12:01:37] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:01:37] Documents Directory: /var/mobile/Containers/Data/Application/1460F8E5-99DD-4765-ABFA-A624E43E4966/Documents [12:01:37] [THEME] Applying current theme [12:01:37] [UPLOAD_QUEUE] Found 0 pending uploads to resume [12:01:37] [CHAT] Applied day theme (mode: day) [12:01:37] [SECURITY] Saved real session: ILUIWU [12:01:37] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:01:37] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:01:37] [NETWORK] Network monitor started [12:01:37] [NETWORK] Status changed: connected [12:01:37] Did transition [12:01:37] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [12:01:37] [VIEWER] Screen lock enabled - normal idle behavior [12:01:37] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [12:01:37] [VCC] ========== VideoConnectionClass INIT ========== [12:01:37] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [12:01:37] [DATA AUDIO] ========== setupWebRTC() START ========== [12:01:37] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:01:37] [DATA AUDIO] Creating encoder/decoder factories... [12:01:37] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:01:37] [CODEC] Viewer selected encoder: AV1 (best quality) [12:01:37] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:01:37] [DATA AUDIO] βœ… Factory created [12:01:37] [DATA AUDIO] RTCAudioSession locked [12:01:37] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:01:37] [DATA AUDIO] RTCAudioSession unlocked [12:01:37] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:01:37] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:01:37] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:01:37] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:01:37] [QUERY] βœ… tempQueryConnection created for iosILUIWU [12:01:37] [VIEWER_INIT] Already have 50 messages - just filtering for tab [12:01:37] [EVENT_POLL] Event polling disabled - using WebSocket events instead [12:01:37] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [12:01:37] Did transition [12:01:37] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [12:01:37] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:01:37] [CHUNK] Merged 785 reactions synchronously [12:01:37] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:01:37] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [12:01:37] [MIGRATION] No messages need sender_name backfill [12:01:37] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:01:37] [GALLERY_DB] Raw datesent for msg 17752: '2026-01-15 10:47:04' [12:01:37] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [12:01:37] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [12:01:37] [GALLERY_DB] βœ… Loaded 429 media messages [12:01:37] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17770 [12:01:37] [USER] βœ… User registered successfully [12:01:37] [USER] User registration successful [12:01:37] [GALLERY] Filtered 429 -> 390 (only with local thumbnails) [12:01:37] [GALLERY] First 5 after sort (newest first): [12:01:37] [GALLERY] 0: id=17752, date=2026-01-15 10:47:04, file=c3ee2fbb5839abc5.jpg [12:01:37] [GALLERY] 1: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [12:01:37] [GALLERY] 2: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [12:01:37] [GALLERY] 3: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [12:01:37] [GALLERY] 4: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [12:01:37] [INCREMENTAL_SYNC] βœ… No new messages [12:01:37] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [12:01:37] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:01:37] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [12:01:37] [SERVER] Starting reconnect polling (5s interval) [12:01:37] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [12:01:37] [ICONS] Offset applied: -14.6 [12:01:37] [ICONS] New left margin: 11.2, New right margin: 11.3 [12:01:37] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [12:01:37] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:01:37] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:01:37] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:01:37] [ICONS] Chat center: (31.2, 87.0) [12:01:37] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [12:01:37] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [12:01:37] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [12:01:37] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [12:01:37] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [12:01:37] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [12:01:37] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [12:01:37] [ICONS] Screen width: 440.0 [12:01:37] [PURGE] ⚠️ Media cache purge DISABLED for debugging [12:01:37] [UNSENT_RETRY] Checking for unsent messages... [12:01:37] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [12:01:37] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [12:01:37] [UPLOAD_RECOVERY] Session: ILUIWU [12:01:37] [UPLOAD_RECOVERY] βœ… No stuck uploads found [12:01:37] [UPLOAD_RECOVERY] Checking recent media messages on server... [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [12:01:37] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [12:01:37] [PENDING_UPLOAD] Total pending upload messages: 0 [12:01:37] [UNSENT_RETRY] No unsent messages found [12:01:38] [COMBINED_FETCH] Loaded 6542 read receipts, 780 messages with reactions [12:01:38] [READBY_ENRICH] Enriched 50 messages with readBy data [12:01:38] [MENU] dismissAnyExistingMenu called [12:01:38] [MENU] dismissAnyExistingMenu completed [12:01:39] [PUSH] Silent push received [12:01:39] [PUSH_EMBED] No embedded message_data in notification [12:01:39] [PUSH] No embedded data, pre-loading messages from server [12:01:39] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:39] [SCROLL_BTN] Showing button - 383pt from bottom > half 379pt [12:01:39] [PUSH] Silent push received [12:01:39] [PUSH_EMBED] No embedded message_data in notification [12:01:39] [PUSH] No embedded data, pre-loading messages from server [12:01:39] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:39] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:01:39] [CELL_UPLOAD] β†’ not my message, setting complete [12:01:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:01:39] [MENU] dismissAnyExistingMenu called [12:01:39] [MENU] dismissAnyExistingMenu completed [12:01:39] [PUSH] Silent push received [12:01:39] [PUSH_EMBED] No embedded message_data in notification [12:01:39] [PUSH] No embedded data, pre-loading messages from server [12:01:39] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:39] [PUSH] Silent push received [12:01:39] [PUSH_EMBED] No embedded message_data in notification [12:01:39] [PUSH] No embedded data, pre-loading messages from server [12:01:39] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:39] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:01:39] [CELL_UPLOAD] β†’ not my message, setting complete [12:01:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:01:40] [PUSH] Silent push received [12:01:40] [PUSH_EMBED] No embedded message_data in notification [12:01:40] [PUSH] No embedded data, pre-loading messages from server [12:01:40] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:40] [CLIENT_SIG] Event received: type=3 messageId=17762 [12:01:40] [WS_EVENT] Received event: type=3, messageId=17762 [12:01:40] [WS_EVENT] Read receipt for message 17762 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:40] [PUSH] Silent push received [12:01:40] [PUSH_EMBED] No embedded message_data in notification [12:01:40] [PUSH] No embedded data, pre-loading messages from server [12:01:40] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:40] [CLIENT_SIG] Event received: type=3 messageId=17760 [12:01:40] [WS_EVENT] Received event: type=3, messageId=17760 [12:01:40] [WS_EVENT] Read receipt for message 17760 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:41] [CLIENT_SIG] Event received: type=3 messageId=17764 [12:01:41] [WS_EVENT] Received event: type=3, messageId=17764 [12:01:41] [WS_EVENT] Read receipt for message 17764 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:41] [CLIENT_SIG] Event received: type=3 messageId=17763 [12:01:41] [WS_EVENT] Received event: type=3, messageId=17763 [12:01:41] [WS_EVENT] Read receipt for message 17763 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:41] [CLIENT_SIG] Event received: type=3 messageId=17761 [12:01:41] [WS_EVENT] Received event: type=3, messageId=17761 [12:01:41] [WS_EVENT] Read receipt for message 17761 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:41] [CLIENT_SIG] Event received: type=3 messageId=17765 [12:01:41] [WS_EVENT] Received event: type=3, messageId=17765 [12:01:41] [WS_EVENT] Read receipt for message 17765 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:41] new_session POST ok: token len=157 [12:01:41] HELLO β†’ sent (fetched token, role=query) [12:01:41] [SIG] hello_ok received for query connection - ready to query agents [12:01:41] [SIG] get_agents request sent for sessionId=ILUIWU [12:01:41] [SIG] get_agents request sent for sessionId=iosILUIWU [12:01:41] [SERVER] Stopped reconnect polling [12:01:41] [SIG] agents_list received: [] [12:01:41] [SIG] agents_list received: [] [12:01:41] [UPLOAD_RECOVERY] βœ… All media files verified on server [12:01:41] [PUSH] Silent push received [12:01:41] [PUSH_EMBED] No embedded message_data in notification [12:01:41] [PUSH] No embedded data, pre-loading messages from server [12:01:41] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:42] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:01:42] [PUSH] Silent push received [12:01:42] [PUSH_EMBED] No embedded message_data in notification [12:01:42] [PUSH] No embedded data, pre-loading messages from server [12:01:42] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:42] [PUSH] Silent push received [12:01:42] [PUSH_EMBED] No embedded message_data in notification [12:01:42] [PUSH] No embedded data, pre-loading messages from server [12:01:42] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:42] [MENU] dismissAnyExistingMenu called [12:01:42] [MENU] dismissAnyExistingMenu completed [12:01:43] [PUSH] Silent push received [12:01:43] [PUSH_EMBED] No embedded message_data in notification [12:01:43] [PUSH] No embedded data, pre-loading messages from server [12:01:43] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:43] [CLIENT_SIG] Event received: type=3 messageId=17766 [12:01:43] [WS_EVENT] Received event: type=3, messageId=17766 [12:01:43] [WS_EVENT] Read receipt for message 17766 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:43] [PUSH] Silent push received [12:01:43] [PUSH_EMBED] No embedded message_data in notification [12:01:43] [PUSH] No embedded data, pre-loading messages from server [12:01:43] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:43] [PUSH] Silent push received [12:01:43] [PUSH_EMBED] No embedded message_data in notification [12:01:43] [PUSH] No embedded data, pre-loading messages from server [12:01:43] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:43] [MENU] dismissAnyExistingMenu called [12:01:43] [MENU] dismissAnyExistingMenu completed [12:01:43] [MENU] dismissAnyExistingMenu called [12:01:43] [MENU] dismissAnyExistingMenu completed [12:01:44] [CLIENT_SIG] Event received: type=3 messageId=17768 [12:01:44] [WS_EVENT] Received event: type=3, messageId=17768 [12:01:44] [WS_EVENT] Read receipt for message 17768 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:44] [CLIENT_SIG] Event received: type=3 messageId=17770 [12:01:44] [WS_EVENT] Received event: type=3, messageId=17770 [12:01:44] [WS_EVENT] Read receipt for message 17770 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:44] [CLIENT_SIG] Event received: type=3 messageId=17759 [12:01:44] [WS_EVENT] Received event: type=3, messageId=17759 [12:01:44] [WS_EVENT] Read receipt for message 17759 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17760, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [12:01:44] [PUSH] Parsed message_id: 17760 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17760 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17760 [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17762] [12:01:44] [PUSH] Parsed message_id: 17762 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17762 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17762 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17761] [12:01:44] [PUSH] Parsed message_id: 17761 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17761 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17761 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17763, AnyHashable("operation_type"): 3] [12:01:44] [PUSH] Parsed message_id: 17763 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17763 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17763 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17764, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [12:01:44] [PUSH] Parsed message_id: 17764 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17764 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17764 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17765, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [12:01:44] [PUSH] Parsed message_id: 17765 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17765 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17765 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [CLIENT_SIG] Event received: type=3 messageId=17767 [12:01:44] [WS_EVENT] Received event: type=3, messageId=17767 [12:01:44] [WS_EVENT] Read receipt for message 17767 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17766] [12:01:44] [PUSH] Parsed message_id: 17766 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17766 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17766 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17768, AnyHashable("aps"): { "content-available" = 1; }] [12:01:44] [PUSH] Parsed message_id: 17768 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17768 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17768 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17767, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [12:01:44] [PUSH] Parsed message_id: 17767 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17767 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17767 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17770, AnyHashable("session_id"): ILUIWU] [12:01:44] [PUSH] Parsed message_id: 17770 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17770 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17770 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17769, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [12:01:44] [PUSH] Parsed message_id: 17769 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17769 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17769 [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17759, AnyHashable("session_id"): ILUIWU] [12:01:44] [PUSH] Parsed message_id: 17759 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17759 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17759 [12:01:44] [CLIENT_SIG] Event received: type=3 messageId=17769 [12:01:44] [WS_EVENT] Received event: type=3, messageId=17769 [12:01:44] [WS_EVENT] Read receipt for message 17769 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:44] [PUSH] Silent push received [12:01:44] [PUSH_EMBED] No embedded message_data in notification [12:01:44] [PUSH] No embedded data, pre-loading messages from server [12:01:44] [PUSH_PRELOAD] Fetching messages for instant display cache [12:01:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:01:44] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:01:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:01:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17758, AnyHashable("aps"): { "content-available" = 1; }] [12:01:44] [PUSH] Parsed message_id: 17758 [12:01:44] [PUSH] Parsed operation_type: 3 [12:01:44] [PUSH] Taking direct action: opType=3, messageId=17758 [12:01:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17758 [12:01:45] [DOUBLE_TAP] Adding heart reaction to message 17758 [12:01:45] [DOUBLE_TAP] Action: add (alreadyReactedWithHeart: false) [12:01:45] [DOUBLE_TAP] Heart reaction added successfully (status: ok) [12:01:46] [CLIENT_SIG] Event received: type=3 messageId=17758 [12:01:46] [WS_EVENT] Received event: type=3, messageId=17758 [12:01:46] [WS_EVENT] Read receipt for message 17758 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:46] [MENU] dismissAnyExistingMenu called [12:01:46] [MENU] dismissAnyExistingMenu completed [12:01:46] [SCROLL_BTN] Showing button - 381pt from bottom > half 379pt [12:01:47] [MENU] dismissAnyExistingMenu called [12:01:47] [MENU] dismissAnyExistingMenu completed [12:01:50] [DOUBLE_TAP] Adding heart reaction to message 17759 [12:01:50] [DOUBLE_TAP] Action: add (alreadyReactedWithHeart: false) [12:01:50] [DOUBLE_TAP] Heart reaction added successfully (status: ok) [12:01:52] [LIFECYCLE] App resigning active - cleared crash flag [12:01:53] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [12:01:53] [SECURITY] Saved background timestamp [12:01:53] [LIFECYCLE] App entering background - cleared crash flag [12:01:53] [CLIENT_SIG] Disconnecting [12:01:53] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:01:53] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0 [12:01:53] [WS] Canceling WebSocket for query connection to iosILUIWU [12:01:53] In cleanupPeer [12:01:53] In cleanupPeer [12:01:53] [LIFECYCLE] WebRTC audio disabled [12:01:53] [LIFECYCLE] AVAudioSession deactivated [12:01:53] [LIFECYCLE] All connections stopped [12:01:53] [CLIENT_SIG] WebSocket closed with code 1001 [12:01:53] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:01:53] [SERVER] Stopped reconnect polling [12:01:53] Will request stop of video 0 [12:01:53] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001 [12:01:53] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views [12:01:53] Will request stop of video 0 [12:01:53] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected [12:01:53] [WS] Query connection failed - cleaning up all agent connections and views [12:01:53] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [12:01:53] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:01:53] [PIP] Removing 0 tracks from PiP for connection 0 [12:01:53] [PIP] βœ… All tracks removed for connection 0 [12:01:53] [CLEANUP] ======================================== [12:01:53] [CLEANUP] Cleaning up all agent connections and views [12:01:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [12:01:53] [CLEANUP] Stopped and removed 0 video connections [12:01:53] [CLEANUP] Removed 0 video views [12:01:53] [CLEANUP] Removed 0 feed scroll views [12:01:53] [CLEANUP] Removed 0 status labels [12:01:53] [CLEANUP] Reset agent query state [12:01:53] [CLEANUP] Updated page indicator [12:01:53] [CLEANUP] Rebuilt video layout [12:01:53] [CLEANUP] βœ… All agent connections and views cleaned up [12:01:53] [CLEANUP] ======================================== [12:01:53] [SERVER] Skipping reconnect polling - app is in background [12:01:53] [WS] URLSession invalidated successfully [12:01:53] [PIP] Removing 0 tracks from PiP for connection 0 [12:01:53] [PIP] βœ… All tracks removed for connection 0 [12:01:53] [CLEANUP] ======================================== [12:01:53] [CLEANUP] Cleaning up all agent connections and views [12:01:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0 [12:01:53] [CLEANUP] Stopped and removed 0 video connections [12:01:53] [CLEANUP] Removed 0 video views [12:01:53] [CLEANUP] Removed 0 feed scroll views [12:01:53] [CLEANUP] Removed 0 status labels [12:01:53] [CLEANUP] Reset agent query state [12:01:53] [CLEANUP] Updated page indicator [12:01:53] [CLEANUP] Rebuilt video layout [12:01:53] [CLEANUP] βœ… All agent connections and views cleaned up [12:01:53] [CLEANUP] ======================================== [12:01:53] [SERVER] Skipping reconnect polling - app is in background [12:01:54] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU [12:01:54] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:01:54] [SECURITY] Timeout check: elapsed=1.8768839836120605s, timeout=300.0s [12:01:54] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:01:54] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:54] [LIFECYCLE] App entering foreground - restoring connections [12:01:54] [UPLOAD_RETRY] No pending uploads to retry [12:01:54] [LIFECYCLE] Merged 787 reactions from local DB [12:01:54] [LIFECYCLE] WebRTC audio re-enabled [12:01:54] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:01:54] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:01:54] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:01:54] [VIEWER] Reconnecting after background - querying agents [12:01:54] [UNSENT_RETRY] Checking for unsent messages... [12:01:54] [PENDING_UPLOAD] Total pending upload messages: 0 [12:01:54] [UNSENT_RETRY] No unsent messages found [12:01:54] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [12:01:54] [CLIENT_SIG] WebSocket opened [12:01:54] HELLO β†’ sent (cached token, role=query) [12:01:54] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:01:55] [SIG] hello_ok received for query connection - ready to query agents [12:01:55] [SIG] get_agents request sent for sessionId=ILUIWU [12:01:55] [SIG] get_agents request sent for sessionId=iosILUIWU [12:01:55] [SERVER] Stopped reconnect polling [12:01:55] [CLIENT_SIG] Connected! clientId=70-LDcQZ1hMJpCPb [12:01:55] [SIG] agents_list received: [] [12:01:55] [SIG] agents_list received: [] [12:01:55] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:01:55] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:01:55] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:01:55] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [12:01:55] [SECURITY] Within timeout - cleared background flag [12:01:55] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:01:55] [PUSH] handlePollEventsNotification userInfo: [:] [12:01:55] [PUSH] No message_id in userInfo [12:01:55] [PUSH] No operation_type in userInfo [12:01:55] [FAST_REFRESH] Evolution disabled - performing incremental sync [12:01:55] [FAST_REFRESH] Already have 50 messages - skipping local DB load [12:01:55] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [12:01:55] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [12:01:55] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:01:55] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17770 [12:01:55] [INCREMENTAL_SYNC] βœ… No new messages [12:01:55] [FAST_REFRESH] Incremental sync complete - 50 messages [12:01:55] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:01:56] [MENU] dismissAnyExistingMenu called [12:01:56] [MENU] dismissAnyExistingMenu completed [12:01:56] [COMBINED_FETCH] Loaded 6542 read receipts, 782 messages with reactions [12:01:56] [FOREGROUND] Enriched 0 messages with readBy data from server [12:01:56] [COMBINED_FETCH] Loaded 6542 read receipts, 782 messages with reactions [12:01:56] [FAST_REFRESH] Enriched 50 messages with readBy data [12:01:56] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:01:57] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:01:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:02:07] [CRASH] No crash detected [12:02:07] [LOG] Within rotation interval - preserving logs (92m until next clear) [12:02:07] [FONT] Roboto fonts loaded successfully: Roboto-Regular [12:02:07] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [12:02:07] [GIPHY] SDK not available - using REST API fallback [12:02:07] [BACKGROUND] Background fetch enabled [12:02:07] [CLEANUP] No old timer messages to delete [12:02:07] [SECURITY] Initial launch - within timeout (14.239681959152222s < 300.0s) [12:02:07] [AUTH] Starting PIN authentication [12:02:07] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:02:07] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:02:07] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [12:02:07] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:02:07] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:02:07] [CLIENT_SIG] WebSocket opened [12:02:07] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:02:07] [CLIENT_SIG] Connected! clientId=W2WMPzowJAb_YzqX [12:02:07] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:02:07] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:02:07] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:02:07] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:02:07] [USER] βœ… User registered successfully [12:02:07] [PUSH] User registration after token update: success [12:02:07] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17770)... [12:02:07] [PRELOAD] No messages or parse error [12:02:10] [PIN_AUTH] Correct PIN [12:02:10] [SECURITY] Restored real session: ILUIWU [12:02:10] [SECURITY] Restored real session: ILUIWU [12:02:10] [SECURITY] Saved real session: ILUIWU [12:02:10] [SCENE] Launched directly to chat view with sessionId: ILUIWU [12:02:10] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:02:10] Documents Directory: /var/mobile/Containers/Data/Application/9C73AE76-3458-4026-8802-2E0A24181A0C/Documents [12:02:10] [UPLOAD_QUEUE] Found 0 pending uploads to resume [12:02:10] [THEME] Applying current theme [12:02:10] [CHAT] Applied day theme (mode: day) [12:02:10] [SECURITY] Saved real session: ILUIWU [12:02:10] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:02:10] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:02:10] [NETWORK] Network monitor started [12:02:10] [NETWORK] Status changed: connected [12:02:10] Did transition [12:02:10] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [12:02:10] [VIEWER] Screen lock enabled - normal idle behavior [12:02:10] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [12:02:10] [VCC] ========== VideoConnectionClass INIT ========== [12:02:10] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [12:02:10] [DATA AUDIO] ========== setupWebRTC() START ========== [12:02:10] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:02:10] [DATA AUDIO] Creating encoder/decoder factories... [12:02:10] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:02:10] [CODEC] Viewer selected encoder: AV1 (best quality) [12:02:10] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:02:10] [DATA AUDIO] βœ… Factory created [12:02:10] [DATA AUDIO] RTCAudioSession locked [12:02:10] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:02:10] [DATA AUDIO] RTCAudioSession unlocked [12:02:10] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:02:10] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:02:10] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:02:10] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:02:10] [QUERY] βœ… tempQueryConnection created for iosILUIWU [12:02:10] [VIEWER_INIT] Already have 50 messages - just filtering for tab [12:02:10] [EVENT_POLL] Event polling disabled - using WebSocket events instead [12:02:11] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [12:02:11] Did transition [12:02:11] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [12:02:11] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:02:11] [CHUNK] Merged 787 reactions synchronously [12:02:11] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:02:11] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [12:02:11] [MIGRATION] No messages need sender_name backfill [12:02:11] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:02:11] [GALLERY_DB] Raw datesent for msg 17752: '2026-01-15 10:47:04' [12:02:11] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [12:02:11] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [12:02:11] [GALLERY_DB] βœ… Loaded 429 media messages [12:02:11] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17770 [12:02:11] [GALLERY] Filtered 429 -> 390 (only with local thumbnails) [12:02:11] [GALLERY] First 5 after sort (newest first): [12:02:11] [GALLERY] 0: id=17752, date=2026-01-15 10:47:04, file=c3ee2fbb5839abc5.jpg [12:02:11] [GALLERY] 1: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [12:02:11] [GALLERY] 2: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [12:02:11] [GALLERY] 3: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [12:02:11] [GALLERY] 4: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [12:02:11] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [12:02:11] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:02:11] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [12:02:11] [SERVER] Starting reconnect polling (5s interval) [12:02:11] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [12:02:11] [ICONS] Offset applied: -14.6 [12:02:11] [ICONS] New left margin: 11.2, New right margin: 11.3 [12:02:11] [ICONS] Chat center: (31.2, 87.0) [12:02:11] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [12:02:11] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [12:02:11] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [12:02:11] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [12:02:11] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [12:02:11] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [12:02:11] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [12:02:11] [ICONS] Screen width: 440.0 [12:02:11] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [12:02:11] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:02:11] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:02:11] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:02:12] [INCREMENTAL_SYNC] βœ… No new messages [12:02:12] [USER] βœ… User registered successfully [12:02:12] [PURGE] ⚠️ Media cache purge DISABLED for debugging [12:02:12] [USER] User registration successful [12:02:12] [UNSENT_RETRY] Checking for unsent messages... [12:02:12] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [12:02:12] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [12:02:12] [UPLOAD_RECOVERY] Session: ILUIWU [12:02:12] [UPLOAD_RECOVERY] βœ… No stuck uploads found [12:02:12] [UPLOAD_RECOVERY] Checking recent media messages on server... [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [12:02:12] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [12:02:12] [PENDING_UPLOAD] Total pending upload messages: 0 [12:02:12] [UNSENT_RETRY] No unsent messages found [12:02:12] new_session POST ok: token len=157 [12:02:12] HELLO β†’ sent (fetched token, role=query) [12:02:12] [SIG] hello_ok received for query connection - ready to query agents [12:02:12] [SIG] get_agents request sent for sessionId=ILUIWU [12:02:12] [SIG] get_agents request sent for sessionId=iosILUIWU [12:02:12] [SERVER] Stopped reconnect polling [12:02:12] [SIG] agents_list received: [] [12:02:12] [SIG] agents_list received: [] [12:02:12] [UPLOAD_RECOVERY] βœ… All media files verified on server [12:02:12] [COMBINED_FETCH] Loaded 6542 read receipts, 782 messages with reactions [12:02:12] [READBY_ENRICH] Enriched 50 messages with readBy data [12:02:12] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:02:52] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU') [12:02:55] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:02:57] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:02:57] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:02:59] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:02:59 +0000 - type: unknown, operation_type: 0, message_id: 17771, session_id: ILUIWU, state: 0 [12:02:59] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 17771, AnyHashable("message_data"): { datesent = "2026-01-15 11:02:57"; "file_name" = ""; message = "Im back"; "message_id" = 17771; "message_type" = 0; "prev_session_message_id" = 17770; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:02:59] [PUSH] App active - suppressing notification UI, posting internal event [12:02:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17771, type=0, sender=Esra [12:02:59] [PUSH_EMBED] βœ… Saved message 17771 to local DB (sync) [12:02:59] [PUSH_EMBED] Created new cache with embedded message 17771 [12:02:59] [PUSH_EMBED] Fetching evolution data for message 17771 in background [12:02:59] [PUSH_EMBED] βœ… Fully processed message 17771 [12:02:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17771, AnyHashable("message_data"): { datesent = "2026-01-15 11:02:57"; "file_name" = ""; message = "Im back"; "message_id" = 17771; "message_type" = 0; "prev_session_message_id" = 17770; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:02:59] [PUSH_EMBED_VC] Processing embedded message: id=17771, type=0, sender=Esra, prevId=17770 [12:02:59] [PUSH_EMBED_VC] Inserted message 17771 into allMessagesWithReadBy (now 51 messages) [12:02:59] [PUSH_EMBED_VC] βœ… Previous message 17770 exists in memory [12:02:59] [PUSH] ⚑ Embedded message handled directly in ViewController [12:02:59] [PUSH] Parsed message_id: 17771 [12:02:59] [PUSH] Parsed operation_type: 0 [12:02:59] [PUSH] Taking direct action: opType=0, messageId=17771 [12:02:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17771 [12:02:59] [PUSH] ⚑ Message 17771 already in memory - skipping duplicate notification entirely [12:02:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:02:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:02:59] [PUSH_UI] Message 17771 already in memory - skipping insert [12:02:59] [PUSH_EMBED_VC] Saved message 17771 to local DB [12:02:59] [PUSH] Silent push received [12:02:59] [PUSH_EMBED] πŸ“© Received embedded message: id=17771, type=0, sender=Esra [12:02:59] [PUSH_EMBED] βœ… Saved message 17771 to local DB (sync) [12:02:59] [PUSH_EMBED] Created new cache with embedded message 17771 [12:02:59] [PUSH_EMBED] Fetching evolution data for message 17771 in background [12:02:59] [PUSH_EMBED] βœ… Fully processed message 17771 [12:02:59] [PUSH] Embedded message handled instantly from silent push [12:02:59] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:02:59] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:02:59] [PUSH_UI] Message 17771 already in memory - skipping insert [12:02:59] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17771, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:02:57"; "file_name" = ""; message = "Im back"; "message_id" = 17771; "message_type" = 0; "prev_session_message_id" = 17770; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:02:59] [PUSH_EMBED_VC] Message 17771 already in memory - skipping [12:02:59] [PUSH] ⚑ Embedded message handled directly in ViewController [12:02:59] [PUSH] Parsed message_id: 17771 [12:02:59] [PUSH] Parsed operation_type: 0 [12:02:59] [PUSH] Taking direct action: opType=0, messageId=17771 [12:02:59] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17771 [12:02:59] [PUSH] ⚑ Message 17771 already in memory - skipping duplicate notification entirely [12:02:59] [PUSH_EMBED] Got evolution data for message 17771, saving to local DB [12:02:59] [PUSH_EMBED] Saved evolution data for message 17771 [12:02:59] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[17771, 17721, 17722, 17723, 17724] [12:02:59] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17770 β†’ 17771 [12:02:59] [CLIENT_SIG] Event received: type=0 messageId=17771 [12:02:59] [WS_EVENT] Received event: type=0, messageId=17771 [12:02:59] [WS_EVENT] πŸ“¨ New message notification (msgId=17771) - triggering incremental refresh, currentMsgCount=51 [12:02:59] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=51 [12:02:59] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17771 [12:03:00] [PUSH_EMBED] Got evolution data for message 17771, saving to local DB [12:03:00] [PUSH_EMBED] Saved evolution data for message 17771 [12:03:00] [INCREMENTAL_SYNC] βœ… No new messages [12:03:00] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=51 [12:03:01] [PUSH] Silent push received [12:03:01] [PUSH_EMBED] No embedded message_data in notification [12:03:01] [PUSH] No embedded data, pre-loading messages from server [12:03:01] [PUSH_PRELOAD] Fetching messages for instant display cache [12:03:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:03:01] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:03:01] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:03:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17771, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [12:03:01] [PUSH] Parsed message_id: 17771 [12:03:01] [PUSH] Parsed operation_type: 3 [12:03:01] [PUSH] Taking direct action: opType=3, messageId=17771 [12:03:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17771 [12:03:03] [CLIENT_SIG] Event received: type=3 messageId=17771 [12:03:03] [WS_EVENT] Received event: type=3, messageId=17771 [12:03:03] [WS_EVENT] Read receipt for message 17771 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:03:03] [SCROLL_BTN] Showing button - 305pt from bottom > half 223pt [12:03:06] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:03:06] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=51, isReloading=false [12:03:06] [SEND_MESSAGE] βœ… Added optimistic message id=-1 to arrays, newMsgCount=52 [12:03:06] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-1, 17771, 17770, 17769, 17768] [12:03:06] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:03:06] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:03:08] [CLIENT_SIG] Event received: type=0 messageId=17772 [12:03:08] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17772,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:03:06"} [12:03:08] [WS_EVENT] Received event: type=0, messageId=17772 [12:03:08] [WS_EVENT] πŸ“¨ New message notification (msgId=17772) - triggering incremental refresh, currentMsgCount=52 [12:03:08] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=52 [12:03:08] [CHAT] receive_message.php JSON: ["message_id": 17772, "session_id": ILUIWU, "datesent_utc": 2026-01-15 11:03:06, "file_name": , "ok": 1, "message_type": 0] [12:03:08] [DB_UPGRADE] Upgrading message ID: -1 β†’ 17772, preserveOriginalDate=false [12:03:08] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17771 [12:03:08] [DB_UPGRADE] βœ… Upgraded -1 β†’ 17772 with send_status=0, 1 row(s) affected [12:03:08] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -1 β†’ 17772 [12:03:08] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -1 β†’ 17772 [12:03:08] ReloadData 9 [12:03:08] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:03:08] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:03:08] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=52 [12:03:08] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:03:09] [PUSH] Silent push received [12:03:09] [PUSH_EMBED] No embedded message_data in notification [12:03:09] [PUSH] No embedded data, pre-loading messages from server [12:03:09] [PUSH_PRELOAD] Fetching messages for instant display cache [12:03:09] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:03:09] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [17722] [12:03:09] [PUSH_PRELOAD] ⚑ Pre-cached 51 messages for instant display (preserved 1 from push) [12:03:09] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:03:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17772, AnyHashable("operation_type"): 3] [12:03:09] [PUSH] Parsed message_id: 17772 [12:03:09] [PUSH] Parsed operation_type: 3 [12:03:09] [PUSH] Taking direct action: opType=3, messageId=17772 [12:03:09] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17772 [12:03:11] [CLIENT_SIG] Event received: type=3 messageId=17772 [12:03:11] [WS_EVENT] Received event: type=3, messageId=17772 [12:03:11] [WS_EVENT] Read receipt for message 17772 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:03:13] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:03:14] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:03:14 +0000 - type: unknown, operation_type: 0, message_id: 17773, session_id: ILUIWU, state: 0 [12:03:14] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17773, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:13"; "file_name" = ""; message = "He is in a call\Ud83e\Udd23"; "message_id" = 17773; "message_type" = 0; "prev_session_message_id" = 17772; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0] [12:03:14] [PUSH] App active - suppressing notification UI, posting internal event [12:03:14] [PUSH_EMBED] πŸ“© Received embedded message: id=17773, type=0, sender=Esra [12:03:14] [PUSH_EMBED] βœ… Saved message 17773 to local DB (sync) [12:03:14] [PUSH_EMBED] Inserted message 17773 into existing cache (now 52 messages) [12:03:14] [PUSH_EMBED] Fetching evolution data for message 17773 in background [12:03:14] [PUSH_EMBED] βœ… Fully processed message 17773 [12:03:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17773, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:13"; "file_name" = ""; message = "He is in a call\Ud83e\Udd23"; "message_id" = 17773; "message_type" = 0; "prev_session_message_id" = 17772; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0] [12:03:14] [PUSH_EMBED_VC] Processing embedded message: id=17773, type=0, sender=Esra, prevId=17772 [12:03:14] [PUSH_EMBED_VC] Inserted message 17773 into allMessagesWithReadBy (now 53 messages) [12:03:14] [PUSH_EMBED_VC] βœ… Previous message 17772 exists in memory [12:03:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:03:14] [PUSH] Parsed message_id: 17773 [12:03:14] [PUSH] Parsed operation_type: 0 [12:03:14] [PUSH] Taking direct action: opType=0, messageId=17773 [12:03:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17773 [12:03:14] [PUSH] ⚑ Message 17773 already in memory - skipping duplicate notification entirely [12:03:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:03:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:03:14] [PUSH_UI] Message 17773 already in memory - skipping insert [12:03:14] [PUSH_EMBED_VC] Saved message 17773 to local DB [12:03:14] [PUSH] Silent push received [12:03:14] [PUSH_EMBED] πŸ“© Received embedded message: id=17773, type=0, sender=Esra [12:03:14] [PUSH_EMBED] βœ… Saved message 17773 to local DB (sync) [12:03:14] [PUSH_EMBED] Fetching evolution data for message 17773 in background [12:03:14] [PUSH_EMBED] βœ… Fully processed message 17773 [12:03:14] [PUSH] Embedded message handled instantly from silent push [12:03:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:03:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:03:14] [PUSH_UI] Message 17773 already in memory - skipping insert [12:03:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17773, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:13"; "file_name" = ""; message = "He is in a call\Ud83e\Udd23"; "message_id" = 17773; "message_type" = 0; "prev_session_message_id" = 17772; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:03:14] [PUSH_EMBED_VC] Message 17773 already in memory - skipping [12:03:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:03:14] [PUSH] Parsed message_id: 17773 [12:03:14] [PUSH] Parsed operation_type: 0 [12:03:14] [PUSH] Taking direct action: opType=0, messageId=17773 [12:03:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17773 [12:03:14] [PUSH] ⚑ Message 17773 already in memory - skipping duplicate notification entirely [12:03:14] [PUSH] Silent push received [12:03:14] [PUSH_EMBED] πŸ“© Received embedded message: id=17773, type=0, sender=Esra [12:03:14] [PUSH_EMBED] βœ… Saved message 17773 to local DB (sync) [12:03:14] [PUSH_EMBED] Fetching evolution data for message 17773 in background [12:03:14] [PUSH_EMBED] βœ… Fully processed message 17773 [12:03:14] [PUSH] Embedded message handled instantly from silent push [12:03:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:03:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:03:14] [PUSH_UI] Message 17773 already in memory - skipping insert [12:03:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17773, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:13"; "file_name" = ""; message = "He is in a call\Ud83e\Udd23"; "message_id" = 17773; "message_type" = 0; "prev_session_message_id" = 17772; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:03:14] [PUSH_EMBED_VC] Message 17773 already in memory - skipping [12:03:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:03:14] [PUSH] Parsed message_id: 17773 [12:03:14] [PUSH] Parsed operation_type: 0 [12:03:14] [PUSH] Taking direct action: opType=0, messageId=17773 [12:03:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17773 [12:03:14] [PUSH] ⚑ Message 17773 already in memory - skipping duplicate notification entirely [12:03:14] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[17773, 17721, 17722, 17723, 17724] [12:03:14] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17772 β†’ 17773 [12:03:17] [SIG] agent_connected received for sessionId=iosILUIWU agentId=WzYn1NFr9V9tP-d7 [12:03:17] [VCC] ========== VideoConnectionClass INIT ========== [12:03:17] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: WzYn1NFr9V9tP-d7 [12:03:17] [DATA AUDIO] ========== setupWebRTC() START ========== [12:03:17] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:03:17] [DATA AUDIO] Creating encoder/decoder factories... [12:03:17] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:03:17] [CODEC] Viewer selected encoder: AV1 (best quality) [12:03:17] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:03:17] [DATA AUDIO] βœ… Factory created [12:03:17] [DATA AUDIO] RTCAudioSession locked [12:03:17] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:03:17] [DATA AUDIO] RTCAudioSession unlocked [12:03:17] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:03:17] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:03:17] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:03:17] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:03:17] [SIG] agents_list received: [["sessionId": iosILUIWU, "connected": 1, "agentId": WzYn1NFr9V9tP-d7]] [12:03:17] [CLIENT_SIG] Event received: type=0 messageId=17773 [12:03:17] [WS_EVENT] Received event: type=0, messageId=17773 [12:03:17] [WS_EVENT] πŸ“¨ New message notification (msgId=17773) - triggering incremental refresh, currentMsgCount=53 [12:03:17] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=53 [12:03:17] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17773 [12:03:17] [SIG] agent_connected received for sessionId=iosILUIWU agentId=WzYn1NFr9V9tP-d7 [12:03:17] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": WzYn1NFr9V9tP-d7, "connected": 1]] [12:03:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU [12:03:17] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:03:17] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:03:17] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:03:17] [PUSH_EMBED] Got evolution data for message 17773, saving to local DB [12:03:17] [PUSH_EMBED] Saved evolution data for message 17773 [12:03:17] new_session POST ok: token len=157 [12:03:17] HELLO β†’ sent (fetched token, role=viewer) [12:03:17] [SIG] hello_ok received for viewer connection [12:03:17] [NEGO] ========== startNegotiation() BEGIN ========== [12:03:17] [NEGO] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:03:17] [NEGO] ICE profile step: 0, forceRelayOnly: false [12:03:17] [NEGO] Current ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:03:17] [ICE] ========== CREATING PEER CONNECTION (profile step 0) ========== [12:03:17] [ICE] ICE servers (2 entries): [12:03:17] [ICE] [0] stun:stun.l.google.com:19302 (no credentials) [12:03:17] [ICE] [1] turn:crivello.dyndns.org:3478?transport=udp (with credentials) [12:03:17] [ICE] [1] turn:crivello.dyndns.org:3478?transport=tcp (with credentials) [12:03:17] [ICE] [1] turns:crivello.dyndns.org:5349?transport=tcp (with credentials) [12:03:17] [ICE] Reset candidate counters for new connection attempt [12:03:17] peerConnectionShouldNegotiate β†’ starting negotiation [12:03:17] …ignored (busy) [12:03:17] [WS AUDIO] Skipping data channel - audio received via WebSocket [12:03:17] [WS AUDIO] Session: rate=48000.0Hz, buffer=20.0ms [12:03:17] [INCREMENTAL_SYNC] βœ… No new messages [12:03:17] [WS AUDIO] Mixer actual format: 48000.0Hz, 2ch [12:03:17] [WS AUDIO] ⚠️ Mixer mismatch - will convert 48kHz mono β†’ 48000.0Hz 2ch [12:03:17] [PUSH_EMBED] Got evolution data for message 17773, saving to local DB [12:03:17] [PUSH_EMBED] Saved evolution data for message 17773 [12:03:17] [PUSH_EMBED] Got evolution data for message 17773, saving to local DB [12:03:17] [PUSH_EMBED] Saved evolution data for message 17773 [12:03:17] [WS AUDIO] βœ… Created converter: 48kHz mono β†’ 48000.0Hz 2ch [12:03:17] [WS AUDIO] βœ… Audio player ready (max 10 buffers) [12:03:17] [WS AUDIO] βœ… Audio player initialized - ready to receive via WebSocket [12:03:17] [DATA AUDIO] ========== createPeerConnection() END ========== [12:03:17] Before peerconnection [12:03:17] agentOnline [12:03:17] Within peerconnection [12:03:17] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:03:17] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=53, isReloading=true [12:03:17] OFFER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37"] [12:03:17] [ICE] local offer ufrag=u206 [12:03:17] [NEGO] βœ… Offer sent successfully, waiting for answer... [12:03:17] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates [12:03:17] [ICE] Gathering state β†’ 1 (RTCIceGatheringState(rawValue: 1)) [12:03:17] [ICE] Gathering state GATHERING - started collecting ICE candidates (timeout: 6s) [12:03:17] [ICE] viewer local HOST #1: 172.20.10.1:59834 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #2: 10.56.51.84:56234 (udp) β†’ sent [12:03:17] [ICE] viewer local SRFLX #3: 194.230.158.50:49374 (udp) β†’ sent [12:03:17] [ICE] viewer local SRFLX #4: 194.230.158.50:62381 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #5: 10.27.13.80:62547 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #6: 10.27.13.80:51227 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #7: 10.27.13.80:57810 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #8: 10.27.13.80:64308 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #9: 10.27.13.80:51156 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #10: fdbe:a661:6d7d::1:55493 (udp) β†’ sent [12:03:17] [ICE] viewer local RELAY #11: 192.168.1.31:62034 (udp) β†’ sent βœ… [12:03:17] [ICE] viewer local RELAY #12: 192.168.1.31:62579 (udp) β†’ sent βœ… [12:03:17] [ICE] viewer local HOST #13: 172.20.10.1:50663 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #14: 10.56.51.84:50664 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #15: 10.27.13.80:50665 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #16: 10.27.13.80:50666 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #17: 10.27.13.80:50667 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #18: 10.27.13.80:50668 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #19: 10.27.13.80:50669 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #20: fdbe:a661:6d7d::1:50670 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #21: 172.20.10.1:51565 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #22: 10.56.51.84:51695 (udp) β†’ sent [12:03:17] [SEND_MESSAGE] βœ… Added optimistic message id=-2 to arrays, newMsgCount=54 [12:03:17] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-2, 17773, 17772, 17771, 17770] [12:03:17] [ICE] viewer local SRFLX #23: 194.230.158.50:49377 (udp) β†’ sent [12:03:17] [ICE] viewer local SRFLX #24: 194.230.158.50:62380 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #25: 10.27.13.80:50499 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #26: 10.27.13.80:55299 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #27: 10.27.13.80:58589 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #28: 10.27.13.80:54563 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #29: 10.27.13.80:49368 (udp) β†’ sent [12:03:17] [ICE] viewer local HOST #30: fdbe:a661:6d7d::1:55788 (udp) β†’ sent [12:03:17] [ICE] viewer local RELAY #31: 192.168.1.31:56435 (udp) β†’ sent βœ… [12:03:17] [ICE] viewer local RELAY #32: 192.168.1.31:60120 (udp) β†’ sent βœ… [12:03:17] [ICE] viewer local HOST #33: 172.20.10.1:50671 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #34: 10.56.51.84:50672 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #35: 10.27.13.80:50673 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #36: 10.27.13.80:50674 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #37: 10.27.13.80:50675 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #38: 10.27.13.80:50676 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #39: 10.27.13.80:50677 (tcp) β†’ sent [12:03:17] [ICE] viewer local HOST #40: fdbe:a661:6d7d::1:50678 (tcp) β†’ sent [12:03:17] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:03:17] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:03:17] [SIG] send offer ok [12:03:17] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=54 [12:03:18] [WS AUDIO] First audio packet received: 9600 bytes (4800 samples, ~100ms) [12:03:18] [WS AUDIO] Status: buffers=0/10, playing=false [12:03:18] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:03:18] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:03:18] [SIG] agent_ready ignored - negotiation already active (inProgress=true, hasRemoteDesc=false, iceState=0) [12:03:18] [SIG] ⬇️ Answer received from agent! [12:03:18] [SIG] Answer SDP length: 4815 bytes [12:03:18] [SIG] answer SDP length=4815 (attempt=1) [12:03:18] [SDP] ANSWER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109"] [12:03:18] [SDP] ANSWER rtpmap count: 26 [12:03:18] [SDP] ANSWER direction attributes: ["a=sendonly", "a=sendonly"] [12:03:18] [SIG] setRemoteDescription(begin) [attempt=1] [12:03:18] [ICE] πŸ” Connection state β†’ CHECKING [agentId=WzYn1NFr9V9tP-d7, sessionId=iosILUIWU] [12:03:18] [ICE] Current candidate stats: local=40, hasRelay=true, hasSrflx=true [12:03:18] didStartReceivingOn: kind=video id=6f993c4e-1a00-475f-9803-02185be03542 direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:03:18] Setting up video track from transceiver: 6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] onReceiver: kind=video id=6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:03:18] [VIDEO] Video track 6f993c4e-1a00-475f-9803-02185be03542 - handled by didStartReceivingOn for PiP [12:03:18] didStartReceivingOn: kind=video id=f561b0fb-f2e1-421d-a709-80cb34724377 direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:03:18] Setting up video track from transceiver: f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:18] onReceiver: kind=video id=f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:18] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:03:18] [VIDEO] Video track f561b0fb-f2e1-421d-a709-80cb34724377 - handled by didStartReceivingOn for PiP [12:03:18] [SIG] setRemoteDescription(done) [12:03:18] [DEBUG] Total transceivers: 2 [12:03:18] [DEBUG] Transceiver 0: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] [DEBUG] βœ… Video transceiver has track: 6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:03:18] [DEBUG] Transceiver 1: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:18] [DEBUG] βœ… Video transceiver has track: f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:18] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.168.1.14:57134 [12:03:18] [ICE] Full: candidate:3529079602 1 udp 2122260223 192.168.1.14 57134 typ host generation 0 ufrag V06i network-id... [12:03:18] stats entries: 25 [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [TRACK] Stored track in allVideoTracks (total: 1) [12:03:18] [TRACK] Adding main track to PiP overlay: 6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] [PIP] βœ… PiP video view created [12:03:18] [PIP] Added track 6f993c4e-1a00-475f-9803-02185be03542, total: 1 [12:03:18] [PIP] Now displaying track 6f993c4e-1a00-475f-9803-02185be03542 (index 0) [12:03:18] [PIP] Now showing track: 6f993c4e-1a00-475f-9803-02185be03542 [12:03:18] [PIP] βœ… Added track 6f993c4e-1a00-475f-9803-02185be03542 to PiP, total tracks: 1 [12:03:18] [TRACK] βœ… Video track (main) routed to PiP [12:03:18] [TRACK] Stored track in allVideoTracks (total: 2) [12:03:18] [TRACK] Adding main track to PiP overlay: f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:18] [PIP] Added track f561b0fb-f2e1-421d-a709-80cb34724377, total: 2 [12:03:18] [PIP] βœ… Added track f561b0fb-f2e1-421d-a709-80cb34724377 to PiP, total tracks: 2 [12:03:18] [TRACK] βœ… Video track (main) routed to PiP [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 10.121.142.99:62395 [12:03:18] [ICE] Full: candidate:2746309956 1 udp 2122129151 10.121.142.99 62395 typ host generation 0 ufrag V06i network-i... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:55039 [12:03:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 55039 typ host generation 0 ufrag V06i network-id 5 ... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:55789 [12:03:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 55789 typ host generation 0 ufrag V06i network-id 8 ... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:51997 [12:03:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 51997 typ host generatio... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:53515 [12:03:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 53515 typ host generation... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:61464 [12:03:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 61464 typ host generation... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:58462 [12:03:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 58462 typ host generation... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:61291 [12:03:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 61291 typ host generation ... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:03:18] [WS AUDIO] Starting playback with 3 buffers [12:03:18] [ICE] ⬇️ Remote SRFLX candidate from agent: 212.252.117.163:26789 [12:03:18] [ICE] Full: candidate:2098436620 1 udp 1686052607 212.252.117.163 26789 typ srflx raddr 192.168.1.14 rport 57134... [12:03:18] [ICE] remote srflx β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.168.1.14:50072 [12:03:18] [ICE] Full: candidate:754167718 1 tcp 1518280447 192.168.1.14 50072 typ host tcptype passive generation 0 ufrag ... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 10.121.142.99:50080 [12:03:18] [ICE] Full: candidate:1562085840 1 tcp 1518149375 10.121.142.99 50080 typ host tcptype passive generation 0 ufra... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50088 [12:03:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50088 typ host tcptype passive generation 0 ufrag V06... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50096 [12:03:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50096 typ host tcptype passive generation 0 ufrag V06... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50104 [12:03:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50104 typ host tcptype p... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50106 [12:03:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50106 typ host tcptype pa... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50108 [12:03:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50108 typ host tcptype pa... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50110 [12:03:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50110 typ host tcptype pa... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50112 [12:03:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50112 typ host tcptype pas... [12:03:18] [ICE] remote host β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:03:18] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:53500 [12:03:18] [ICE] Full: candidate:523510315 1 udp 41886207 192.168.1.31 53500 typ relay raddr 212.252.117.163 rport 26789 ge... [12:03:18] [ICE] remote relay β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote SRFLX candidate from agent: 5.24.152.206:36985 [12:03:18] [ICE] Full: candidate:1652492814 1 udp 1685921535 5.24.152.206 36985 typ srflx raddr 10.121.142.99 rport 62395 g... [12:03:18] [ICE] remote srflx β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:03:18] [BROADCAST] Starting camera broadcast on session: iosILUIWU [12:03:18] Initing with camera 0 [12:03:18] [START] AgentController.start() called with session: iosILUIWU [12:03:18] [START] Cancelling any existing idle stop timer [12:03:18] [BROADCAST] Lightbulb shown at lower left, frame=(20.0, 800.0, 50.0, 50.0) [12:03:18] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:61449 [12:03:18] [ICE] Full: candidate:3785291455 1 udp 25108735 192.168.1.31 61449 typ relay raddr 212.252.117.163 rport 27286 g... [12:03:18] [ICE] remote relay β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:62776 [12:03:18] [ICE] Full: candidate:523510315 1 udp 41755135 192.168.1.31 62776 typ relay raddr 5.24.152.206 rport 36985 gener... [12:03:18] [ICE] remote relay β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] WS connected [12:03:18] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:64110 [12:03:18] [ICE] Full: candidate:3785291455 1 udp 24977663 192.168.1.31 64110 typ relay raddr 5.24.152.206 rport 36338 gene... [12:03:18] [ICE] remote relay β†’ applying [12:03:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:03:18] [PUSH] Silent push received [12:03:18] [PUSH_EMBED] No embedded message_data in notification [12:03:18] [PUSH] No embedded data, pre-loading messages from server [12:03:18] [PUSH_PRELOAD] Fetching messages for instant display cache [12:03:20] [MENU] dismissAnyExistingMenu called [12:03:20] [MENU] dismissAnyExistingMenu completed [12:03:20] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:03:20] [MENU] Created button 'Edit' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:03:20] [MENU] Created button 'Copy' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:03:20] [MENU] Created button 'Delete' at index 3, frame: (0.0, 132.0, 120.0, 44.0), userInteraction: true [12:03:20] [MENU] Menu added to view - frame: (172.0, 725.6, 96.0, 140.79999999999995), userInteraction: true [12:03:20] [MENU] Menu has 7 subviews (buttons + separators) [12:03:20] [ICE] βœ… Connection state β†’ CONNECTED [agentId=WzYn1NFr9V9tP-d7, sessionId=iosILUIWU] [12:03:20] [ICE] Current candidate stats: local=40, hasRelay=true, hasSrflx=true [12:03:20] [ICE] ========== CONNECTION SUCCESS ========== [12:03:20] [ICE] βœ… ICE connection established! [12:03:20] [ICE] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:03:20] [ICE] ICE profile step: 0 [12:03:20] [ICE] Local candidates: 40, hasRelay: true, hasSrflx: true [12:03:20] [ICE] Checking for video tracks... [12:03:20] Stats on connect: inbound video packets=-1, bytes=-1 [12:03:21] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17774,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:03:17"} [12:03:21] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "message_id": 17774, "datesent_utc": 2026-01-15 11:03:17, "file_name": , "ok": 1] [12:03:21] [DB_UPGRADE] Upgrading message ID: -2 β†’ 17774, preserveOriginalDate=false [12:03:21] [DB_UPGRADE] βœ… Upgraded -2 β†’ 17774 with send_status=0, 1 row(s) affected [12:03:21] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -2 β†’ 17774 [12:03:21] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -2 β†’ 17774 [12:03:21] ReloadData 9 [12:03:21] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:03:22] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [17724, 17723, 17722] [12:03:22] [PUSH_PRELOAD] ⚑ Pre-cached 53 messages for instant display (preserved 3 from push) [12:03:22] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:03:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17773] [12:03:22] [PUSH] Parsed message_id: 17773 [12:03:22] [PUSH] Parsed operation_type: 3 [12:03:22] [PUSH] Taking direct action: opType=3, messageId=17773 [12:03:22] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17773 [12:03:22] [MENU] dismissMenu gesture triggered - tap on blur view [12:03:22] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:03:23] [PUSH] Silent push received [12:03:23] [PUSH_EMBED] No embedded message_data in notification [12:03:23] [PUSH] No embedded data, pre-loading messages from server [12:03:23] [PUSH_PRELOAD] Fetching messages for instant display cache [12:03:23] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:03:23] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [17724, 17723, 17722] [12:03:23] [PUSH_PRELOAD] ⚑ Pre-cached 53 messages for instant display (preserved 3 from push) [12:03:23] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:03:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17774] [12:03:23] [PUSH] Parsed message_id: 17774 [12:03:23] [PUSH] Parsed operation_type: 3 [12:03:23] [PUSH] Taking direct action: opType=3, messageId=17774 [12:03:23] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17774 [12:03:23] [ICE] Watchdog fired: gatheringState=1, iceConnectionState=2, candidateCount=40, hasRelay=true, hasSrflx=true [12:03:23] [ICE] Watchdog: skipping fallback - ICE connection is RTCIceConnectionState(rawValue: 2) (making progress) [12:03:24] [SIG] agent_connected received for sessionId=iosILUIWU agentId=XwM6giwJRCk8J3DI [12:03:24] [NEGO] ========== startNegotiation() BEGIN ========== [12:03:24] [NEGO] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:03:24] [NEGO] ICE profile step: 0, forceRelayOnly: false [12:03:24] [NEGO] Current ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:03:24] Before peerconnection [12:03:24] [AGENTS] Skipping connection to broadcast session iosILUIWU - myAgentId not yet known [12:03:24] Within peerconnection [12:03:24] [SIG] agents_list received: [["sessionId": iosILUIWU, "connected": 1, "agentId": WzYn1NFr9V9tP-d7], ["sessionId": iosILUIWU, "agentId": XwM6giwJRCk8J3DI, "connected": 1]] [12:03:24] [CAM] βœ… Connected to signaling server. Session: iosILUIWU, agentId: XwM6giwJRCk8J3DI [12:03:24] [CAM] helloOK β†’ connected=true, myAgentId=XwM6giwJRCk8J3DI [12:03:24] [WEBRTC] Creating new WebRTC client [12:03:24] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1 [12:03:24] [CODEC] Agent selected encoder: AV1 (best quality) [12:03:24] OFFER m-lines: ["m=video 62034 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37", "m=video 56435 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37"] [12:03:24] [WS AUDIO] Initializing WebSocket audio sender... [12:03:24] [WS AUDIO] βœ… WebSocket audio sender initialized [12:03:24] [ICE] Agent using 4 ICE urls: - stun:stun.l.google.com:19302 - turn:crivello.dyndns.org:3478?transport=udp - turn:crivello.dyndns.org:3478?transport=tcp - turns:crivello.dyndns.org:5349?transport=tcp [12:03:24] [ICE] Using 2 ICE server entries [12:03:24] [SIG] agent_connect received for sessionId=iosILUIWU agentId=XwM6giwJRCk8J3DI [12:03:24] [SIG] agent_connected received for sessionId=iosILUIWU agentId=XwM6giwJRCk8J3DI [12:03:24] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:XwM6giwJRCk8J3DI [12:03:24] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:XwM6giwJRCk8J3DI [12:03:24] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": WzYn1NFr9V9tP-d7, "connected": 1], ["sessionId": iosILUIWU, "connected": 1, "agentId": XwM6giwJRCk8J3DI]] [12:03:24] [ICE] local offer ufrag=u206 [12:03:24] [SIG] send offer ok [12:03:24] [NEGO] βœ… Offer sent successfully, waiting for answer... [12:03:24] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates [12:03:24] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30 [12:03:24] [CAPTURE] Creating audio track [12:03:24] [CAPTURE] DataChannelAudioSender already exists [12:03:24] [CAPTURE] Creating front video source and track [12:03:24] [CAPTURE] Creating back video source and track [12:03:24] localVideoTrackFront ok [12:03:24] localVideoTrackBack ok [12:03:24] Marking tracks as ready and firing callbacks [12:03:24] [CAPTURE] βœ… Device supports MultiCam, starting dual camera session [12:03:24] [CAPTURE] configureAndStartMultiCamSession() starting... [12:03:24] Video capture stopped (audio still running) [12:03:24] [CAPTURE] Created MultiCamSession and began configuration [12:03:24] [CAPTURE] Looking for camera devices... [12:03:24] [CAPTURE] βœ… Found front camera: Front Camera [12:03:24] [CAPTURE] βœ… Found back camera: Back Camera [12:03:24] Selected camera format: 1920x1080, pixel format: 875704438 [12:03:24] [CAPTURE] Enabled continuous autofocus for front camera [12:03:24] Selected camera format: 1920x1080, pixel format: 875704438 [12:03:24] [CAPTURE] Enabled continuous autofocus for back camera [12:03:24] Selected camera format: 640x480, pixel format: 875704438 [12:03:24] Selected camera format: 640x480, pixel format: 875704438 [12:03:24] [iOS AUDIO] ========== START CAPTURE ========== [12:03:24] [iOS AUDIO] BEFORE - category: AVAudioSessionCategoryPlayAndRecord [12:03:24] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeVideoChat [12:03:24] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false [12:03:24] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"] [12:03:24] [iOS AUDIO] BEFORE - currentRoute.inputs: ["iPhone Microphone"] [12:03:24] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"] [12:03:24] [iOS AUDIO] βœ… Audio session already .playAndRecord - keeping current config [12:03:24] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord [12:03:24] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat [12:03:24] [iOS AUDIO] AFTER - currentRoute.inputs: ["iPhone Microphone"] [12:03:24] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"] [12:03:24] [iOS AUDIO] AFTER - recordPermission: 1735552628 [12:03:24] [iOS AUDIO] Creating AVAudioEngine... [12:03:24] [iOS AUDIO] Got inputNode: [12:03:24] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1 [12:03:24] [iOS AUDIO] Installing tap on inputNode... [12:03:24] [iOS AUDIO] βœ… Tap installed [12:03:24] [iOS AUDIO] Starting engine... [12:03:24] [iOS AUDIO] βœ… AVAudioEngine started [12:03:24] [iOS AUDIO] engine.isRunning: true [12:03:24] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false [12:03:24] [iOS AUDIO] ========== END START CAPTURE ========== [12:03:24] [CAPTURE] Configuration committed [12:03:24] [CAPTURE] Starting MultiCam session... [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #1: 9600 bytes (4800 samples, ~100ms) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #2: 9600 bytes (4800 samples, ~100ms) [12:03:25] [CAPTURE] βœ… AVCaptureMultiCamSession started successfully (front + back) [12:03:25] [CAPTURE] Session running: true [12:03:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:25] [WS AUDIO] Received 10 audio packets [12:03:25] [CLIENT_SIG] Event received: type=3 messageId=17774 [12:03:25] [WS_EVENT] Received event: type=3, messageId=17774 [12:03:25] [WS_EVENT] Read receipt for message 17774 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #3: 9600 bytes (4800 samples, ~100ms) [12:03:25] [CAM] viewerJoin β†’ session: iosILUIWU, viewerId: eQasKL0O7-ZPA0uZ [12:03:25] [WEBRTC] WebRTC client already exists, reusing it [12:03:25] [WEBRTC] WebRTC client already exists, reusing it [12:03:25] ensureCaptureStarted - adding peer [12:03:25] tracksReady = true [12:03:25] Added front video track to peer connection for eQasKL0O7-ZPA0uZ [12:03:25] Added back video track to peer connection for eQasKL0O7-ZPA0uZ [12:03:25] Added audio track to peer connection for eQasKL0O7-ZPA0uZ [12:03:25] localVideoTrackFront ok [12:03:25] localVideoTrackBack ok [12:03:25] tracks already marked as ready [12:03:25] Peer added with tracks, notifying viewer ready [12:03:25] notifyViewerReady called [12:03:25] notifyViewerReady -> Will send [12:03:25] [SIG] ⬇️ Answer received from agent! [12:03:25] [SIG] Answer SDP length: 8167 bytes [12:03:25] [SIG] answer SDP length=8167 (attempt=1) [12:03:25] [SDP] ANSWER m-lines: ["m=video 53500 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109"] [12:03:25] [SDP] ANSWER rtpmap count: 26 [12:03:25] [SDP] ANSWER direction attributes: ["a=sendonly", "a=sendonly"] [12:03:25] [SIG] setRemoteDescription(begin) [attempt=1] [12:03:25] [SIG] setRemoteDescription(done) [12:03:25] [DEBUG] Total transceivers: 2 [12:03:25] [DEBUG] Transceiver 0: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=6f993c4e-1a00-475f-9803-02185be03542 [12:03:25] [DEBUG] βœ… Video transceiver has track: 6f993c4e-1a00-475f-9803-02185be03542 [12:03:25] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:03:25] [DEBUG] Transceiver 1: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:25] [DEBUG] βœ… Video transceiver has track: f561b0fb-f2e1-421d-a709-80cb34724377 [12:03:25] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #4: 9600 bytes (4800 samples, ~100ms) [12:03:25] stats entries: 171 [12:03:25] [CAM] Offer β†’ session: iosILUIWU, viewerId: eQasKL0O7-ZPA0uZ [12:03:25] [WEBRTC] WebRTC client already exists, reusing it [12:03:25] [CAM] Peer connection ready, processing offer immediately [12:03:25] Creating answer for eQasKL0O7-ZPA0uZ. Found 3 transceivers: [12:03:25] Transceiver 0: video, direction=sendRecv, hasTrack=true [12:03:25] Transceiver 1: video, direction=sendRecv, hasTrack=true [12:03:25] Transceiver 2: audio, direction=sendRecv, hasTrack=true [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:1591338728 1 udp 2122260224 192.168.1.14 52076 typ host generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #5: 9600 bytes (4800 samples, ~100ms) [12:03:25] SEND answer for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] SDP length: 4817 [12:03:25] ICE gathering state: 1 [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:125442476 1 udp 2122129152 10.121.142.99 52068 typ host generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] ICE state for vid=eQasKL0O7-ZPA0uZ: 1 ( RTCIceConnectionState ) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2094575296 1 udp 2121670400 192.0.0.6 49851 typ host generation 0 ufrag HD+c network-id 5 network-cost 50 [12:03:25] [ICE] agent local host [12:03:25] [ICE] remote host β†’ applying [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 65508 typ host generation 0 ufrag dg/c network-id 1 network-cost 50"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:3556460054 1 udp 2122194687 10.56.51.84 56055 typ host generation 0 ufrag dg/c network-id 8 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 54080 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 55567 typ host generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMLineIndex": 0] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 52707 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 53829 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121801471 10.27.13.80 62603 typ host generation 0 ufrag dg/c network-id 5 network-cost 50"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:342557338 1 udp 2122068735 fdbe:a661:6d7d::1 55145 typ host generation 0 ufrag dg/c network-id 10 network-cost 50"] [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2094575296 1 udp 2121604864 192.0.0.6 57227 typ host generation 0 ufrag HD+c network-id 8 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2017553473 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 61358 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3991428132 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 59471 typ host generation 0 ufrag HD+c network-id 6 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:4222656776 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 59453 typ host generation 0 ufrag HD+c network-id 7 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:4222656776 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53608 typ host generation 0 ufrag HD+c network-id 9 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3401237981 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 60990 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:1591338728 1 udp 2122260224 192.168.1.14 61833 typ host generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:125442476 1 udp 2122129152 10.121.142.99 63116 typ host generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2094575296 1 udp 2121670400 192.0.0.6 59323 typ host generation 0 ufrag HD+c network-id 5 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2094575296 1 udp 2121604864 192.0.0.6 58717 typ host generation 0 ufrag HD+c network-id 8 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2017553473 1 udp 2122197248 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 61913 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3991428132 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 52616 typ host generation 0 ufrag HD+c network-id 6 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:4222656776 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 64917 typ host generation 0 ufrag HD+c network-id 7 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:4222656776 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55003 typ host generation 0 ufrag HD+c network-id 9 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3401237981 1 udp 2121869568 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 52652 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:505648193 1 udp 1686052607 212.252.117.163 26981 typ srflx raddr 192.168.1.14 rport 52076 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote srflx β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:505648193 1 udp 1686052607 212.252.117.163 27078 typ srflx raddr 192.168.1.14 rport 61833 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote srflx β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:538313840 1 tcp 1518280447 192.168.1.14 50148 typ host tcptype passive generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2041969460 1 tcp 1518149375 10.121.142.99 50149 typ host tcptype passive generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:35081304 1 tcp 1517690623 192.0.0.6 50150 typ host tcptype passive generation 0 ufrag HD+c network-id 5 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:35081304 1 tcp 1517625087 192.0.0.6 50151 typ host tcptype passive generation 0 ufrag HD+c network-id 8 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50152 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2468855484 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50153 typ host tcptype passive generation 0 ufrag HD+c network-id 6 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2239710096 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50154 typ host tcptype passive generation 0 ufrag HD+c network-id 7 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2239710096 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50155 typ host tcptype passive generation 0 ufrag HD+c network-id 9 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50156 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:538313840 1 tcp 1518280447 192.168.1.14 50158 typ host tcptype passive generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2041969460 1 tcp 1518149375 10.121.142.99 50159 typ host tcptype passive generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:35081304 1 tcp 1517690623 192.0.0.6 50160 typ host tcptype passive generation 0 ufrag HD+c network-id 5 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:35081304 1 tcp 1517625087 192.0.0.6 50161 typ host tcptype passive generation 0 ufrag HD+c network-id 8 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50162 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2468855484 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50163 typ host tcptype passive generation 0 ufrag HD+c network-id 6 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2239710096 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50164 typ host tcptype passive generation 0 ufrag HD+c network-id 7 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2239710096 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50165 typ host tcptype passive generation 0 ufrag HD+c network-id 9 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50166 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:03:25] [ICE] remote host β†’ applying [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [ICE] agent local srflx [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) srflx candidate [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2821781650 1 udp 1685921535 5.24.152.206 36598 typ srflx raddr 10.121.142.99 rport 52068 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote srflx β†’ applying [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:4135750140 1 udp 1685987071 194.230.158.50 49380 typ srflx raddr 10.56.51.84 rport 56055 generation 0 ufrag dg/c network-id 8 network-cost 900"] [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2821781650 1 udp 1685921535 5.24.152.206 35956 typ srflx raddr 10.121.142.99 rport 63116 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote srflx β†’ applying [12:03:25] [ICE] agent local srflx [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) srflx candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:4135750140 1 udp 1685987071 194.230.158.50 62383 typ srflx raddr 10.56.51.84 rport 56055 generation 0 ufrag dg/c network-id 8 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #6: 9600 bytes (4800 samples, ~100ms) [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 50760 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:2905908366 1 tcp 1518214911 10.56.51.84 50765 typ host tcptype passive generation 0 ufrag dg/c network-id 8 network-cost 900"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 50770 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 50775 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 50780 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 50785 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1517821695 10.27.13.80 50790 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50"] [12:03:25] [ICE] agent local host [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1789190146 1 tcp 1518088959 fdbe:a661:6d7d::1 50795 typ host tcptype passive generation 0 ufrag dg/c network-id 10 network-cost 50"] [12:03:25] [ICE] agent local relay β†’ ip=192.168.1.31 port=55152 [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) relay candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:271769434 1 udp 41820671 192.168.1.31 55152 typ relay raddr 194.230.158.50 rport 49380 generation 0 ufrag dg/c network-id 8 network-cost 900"] [12:03:25] [ICE] agent local relay β†’ ip=192.168.1.31 port=51374 [12:03:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) relay candidate [12:03:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:03:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1862090178 1 udp 25043199 192.168.1.31 51374 typ relay raddr 194.230.158.50 rport 24569 generation 0 ufrag dg/c network-id 8 network-cost 900"] [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3834014749 1 udp 41886207 192.168.1.31 57436 typ relay raddr 212.252.117.163 rport 26981 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=57436) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3834014749 1 udp 41886207 192.168.1.31 61326 typ relay raddr 212.252.117.163 rport 27078 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=61326) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #7: 9600 bytes (4800 samples, ~100ms) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3834014749 1 udp 41755135 192.168.1.31 51041 typ relay raddr 5.24.152.206 rport 36598 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=51041) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:3834014749 1 udp 41755135 192.168.1.31 51486 typ relay raddr 5.24.152.206 rport 35956 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=51486) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #8: 9600 bytes (4800 samples, ~100ms) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2588511877 1 udp 25108735 192.168.1.31 51848 typ relay raddr 212.252.117.163 rport 27071 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=51848) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2588511877 1 udp 25108735 192.168.1.31 62648 typ relay raddr 212.252.117.163 rport 27405 generation 0 ufrag HD+c network-id 1 network-cost 10 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=62648) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2588511877 1 udp 24977663 192.168.1.31 55615 typ relay raddr 5.24.152.206 rport 37067 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=55615) [12:03:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:03:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:03:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:03:25] Found s:candidate:2588511877 1 udp 24977663 192.168.1.31 52296 typ relay raddr 5.24.152.206 rport 36550 generation 0 ufrag HD+c network-id 12 network-cost 900 [12:03:25] [ICE] remote relay β†’ applying (ip=192.168.1.31 port=52296) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #9: 9600 bytes (4800 samples, ~100ms) [12:03:25] [iOS AUDIO] πŸ“€ Sent packet #10: 9600 bytes (4800 samples, ~100ms) [12:03:26] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:03:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:27] ICE state for vid=eQasKL0O7-ZPA0uZ: 2 ( RTCIceConnectionState ) [12:03:27] [STATS] starting poll for vid=eQasKL0O7-ZPA0uZ [12:03:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:29] [iOS AUDIO] βœ… Streaming: 50 packets sent [12:03:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:34] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:03:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:36] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:03:36 +0000 - type: unknown, operation_type: 0, message_id: 17775, session_id: ILUIWU, state: 0 [12:03:36] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17775, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:34"; "file_name" = ""; message = "Oki baby"; "message_id" = 17775; "message_type" = 0; "prev_session_message_id" = 17774; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU] [12:03:36] [PUSH] App active - suppressing notification UI, posting internal event [12:03:36] [PUSH_EMBED] πŸ“© Received embedded message: id=17775, type=0, sender=Esra [12:03:36] [PUSH_EMBED] βœ… Saved message 17775 to local DB (sync) [12:03:36] [PUSH_EMBED] Inserted message 17775 into existing cache (now 54 messages) [12:03:36] [PUSH_EMBED] Fetching evolution data for message 17775 in background [12:03:36] [PUSH_EMBED] βœ… Fully processed message 17775 [12:03:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17775, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:34"; "file_name" = ""; message = "Oki baby"; "message_id" = 17775; "message_type" = 0; "prev_session_message_id" = 17774; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU] [12:03:36] [PUSH_EMBED_VC] Processing embedded message: id=17775, type=0, sender=Esra, prevId=17774 [12:03:36] [PUSH_EMBED_VC] Inserted message 17775 into allMessagesWithReadBy (now 55 messages) [12:03:36] [PUSH_EMBED_VC] βœ… Previous message 17774 exists in memory [12:03:36] [PUSH] ⚑ Embedded message handled directly in ViewController [12:03:36] [PUSH] Parsed message_id: 17775 [12:03:36] [PUSH] Parsed operation_type: 0 [12:03:36] [PUSH] Taking direct action: opType=0, messageId=17775 [12:03:36] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17775 [12:03:36] [PUSH] ⚑ Message 17775 already in memory - skipping duplicate notification entirely [12:03:36] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:03:36] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:03:36] [PUSH_UI] Message 17775 already in memory - skipping insert [12:03:36] [PUSH_EMBED_VC] Saved message 17775 to local DB [12:03:36] [PUSH] Silent push received [12:03:36] [PUSH_EMBED] πŸ“© Received embedded message: id=17775, type=0, sender=Esra [12:03:36] [PUSH_EMBED] βœ… Saved message 17775 to local DB (sync) [12:03:36] [PUSH_EMBED] Fetching evolution data for message 17775 in background [12:03:36] [PUSH_EMBED] βœ… Fully processed message 17775 [12:03:36] [PUSH] Embedded message handled instantly from silent push [12:03:36] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:03:36] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:03:36] [PUSH_UI] Message 17775 already in memory - skipping insert [12:03:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17775, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:03:34"; "file_name" = ""; message = "Oki baby"; "message_id" = 17775; "message_type" = 0; "prev_session_message_id" = 17774; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:03:36] [PUSH_EMBED_VC] Message 17775 already in memory - skipping [12:03:36] [PUSH] ⚑ Embedded message handled directly in ViewController [12:03:36] [PUSH] Parsed message_id: 17775 [12:03:36] [PUSH] Parsed operation_type: 0 [12:03:36] [PUSH] Taking direct action: opType=0, messageId=17775 [12:03:36] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17775 [12:03:36] [PUSH] ⚑ Message 17775 already in memory - skipping duplicate notification entirely [12:03:36] [PUSH_EMBED] Got evolution data for message 17775, saving to local DB [12:03:36] [PUSH_EMBED] Saved evolution data for message 17775 [12:03:36] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[17775, 17774, 17773, 17772, 17771] [12:03:36] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17774 β†’ 17775 [12:03:37] [CLIENT_SIG] Event received: type=0 messageId=17775 [12:03:37] [WS_EVENT] Received event: type=0, messageId=17775 [12:03:37] [WS_EVENT] πŸ“¨ New message notification (msgId=17775) - triggering incremental refresh, currentMsgCount=55 [12:03:37] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=55 [12:03:37] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17775 [12:03:37] [PUSH_EMBED] Got evolution data for message 17775, saving to local DB [12:03:37] [PUSH_EMBED] Saved evolution data for message 17775 [12:03:37] [INCREMENTAL_SYNC] βœ… No new messages [12:03:37] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=55 [12:03:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:38] [PUSH] Silent push received [12:03:38] [PUSH_EMBED] No embedded message_data in notification [12:03:38] [PUSH] No embedded data, pre-loading messages from server [12:03:38] [PUSH_PRELOAD] Fetching messages for instant display cache [12:03:38] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:03:38] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [17725, 17724, 17723, 17722] [12:03:38] [PUSH_PRELOAD] ⚑ Pre-cached 54 messages for instant display (preserved 4 from push) [12:03:38] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:03:38] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17775, AnyHashable("session_id"): ILUIWU] [12:03:38] [PUSH] Parsed message_id: 17775 [12:03:38] [PUSH] Parsed operation_type: 3 [12:03:38] [PUSH] Taking direct action: opType=3, messageId=17775 [12:03:38] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17775 [12:03:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:39] [CLIENT_SIG] Event received: type=3 messageId=17775 [12:03:39] [WS_EVENT] Received event: type=3, messageId=17775 [12:03:39] [WS_EVENT] Read receipt for message 17775 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:03:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:03:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:14] [iOS AUDIO] πŸ“Š 500 audio packets sent [12:04:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:04:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:04] [iOS AUDIO] πŸ“Š 1000 audio packets sent [12:05:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:54] [iOS AUDIO] πŸ“Š 1500 audio packets sent [12:05:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:05:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:44] [iOS AUDIO] πŸ“Š 2000 audio packets sent [12:06:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 50841 typ host generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 53381 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 55950 typ host generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 53819 typ host generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMLineIndex": 0] [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 57348 typ host generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:06:59] [ICE] agent local host [12:06:59] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:06:59] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:06:59] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 49693 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMLineIndex": 0] [12:06:59] [ICE] viewer local HOST #1: 172.20.10.1:59633 (udp) β†’ sent [12:06:59] [ICE] viewer local HOST #2: 10.27.13.80:56717 (udp) β†’ sent [12:06:59] [ICE] viewer local HOST #3: 10.27.13.80:64941 (udp) β†’ sent [12:06:59] [ICE] viewer local HOST #4: 10.27.13.80:57190 (udp) β†’ sent [12:06:59] [ICE] viewer local HOST #5: 10.27.13.80:52452 (udp) β†’ sent [12:06:59] [ICE] viewer local HOST #6: 10.27.13.80:65453 (udp) β†’ sent [12:06:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:34] [iOS AUDIO] πŸ“Š 2500 audio packets sent [12:07:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:07:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:49428 [12:08:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 49428 typ host generation 0 ufrag V06i network-id 5 ... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:63546 [12:08:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 63546 typ host generation 0 ufrag V06i network-id 8 ... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:58649 [12:08:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 58649 typ host generatio... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:55161 [12:08:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 55161 typ host generation... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50264 [12:08:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50264 typ host generation... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:59753 [12:08:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 59753 typ host generation... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:55603 [12:08:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 55603 typ host generation ... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50323 [12:08:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50323 typ host tcptype passive generation 0 ufrag V06... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50331 [12:08:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50331 typ host tcptype passive generation 0 ufrag V06... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50339 [12:08:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50339 typ host tcptype p... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50341 [12:08:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50341 typ host tcptype pa... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50343 [12:08:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50343 typ host tcptype pa... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50345 [12:08:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50345 typ host tcptype pa... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50347 [12:08:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50347 typ host tcptype pas... [12:08:18] [ICE] remote host β†’ applying [12:08:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:08:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:24] [iOS AUDIO] πŸ“Š 3000 audio packets sent [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 56277 typ host generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 53657 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 65047 typ host generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 60817 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 60122 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 65356 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMLineIndex": 0] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 50833 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 50838 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 50843 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 50848 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 50853 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0] [12:08:25] [ICE] agent local host [12:08:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 50858 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50"] [12:08:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:25] Found s:candidate:2094575296 1 udp 2121670399 192.0.0.6 63553 typ host generation 0 ufrag HD+c network-id 5 network-cost 50 [12:08:25] [ICE] remote host β†’ applying [12:08:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:25] Found s:candidate:2094575296 1 udp 2121604863 192.0.0.6 52240 typ host generation 0 ufrag HD+c network-id 8 network-cost 50 [12:08:25] [ICE] remote host β†’ applying [12:08:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:25] Found s:candidate:2017553473 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 49603 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:08:25] [ICE] remote host β†’ applying [12:08:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:25] Found s:candidate:3401237981 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 61533 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:08:25] [ICE] remote host β†’ applying [12:08:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:26] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50377 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:08:26] [ICE] remote host β†’ applying [12:08:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:08:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:08:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:08:26] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50379 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:08:26] [ICE] remote host β†’ applying [12:08:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:37] [ICE] agent local host [12:08:37] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:37] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:37] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:3953320338 1 udp 2122068735 fde8:c522:ea89::1 57981 typ host generation 0 ufrag dg/c network-id 11 network-cost 50"] [12:08:37] [ICE] viewer local HOST #7: fde8:c522:ea89::1:52372 (udp) β†’ sent [12:08:37] [ICE] agent local host [12:08:37] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:08:37] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:08:37] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2506949386 1 tcp 1518088959 fde8:c522:ea89::1 50941 typ host tcptype passive generation 0 ufrag dg/c network-id 11 network-cost 50"] [12:08:37] [ICE] viewer local HOST #8: fde8:c522:ea89::1:50951 (tcp) β†’ sent [12:08:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:08:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:09] [ICE] agent local host [12:09:09] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:09:09] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:09:09] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:4268109987 1 udp 2122068735 fddf:6f93:acba::1 50388 typ host generation 0 ufrag dg/c network-id 12 network-cost 50"] [12:09:09] [ICE] viewer local HOST #9: fddf:6f93:acba::1:62409 (udp) β†’ sent [12:09:09] [ICE] agent local host [12:09:09] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:09:09] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:09:09] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:2158613051 1 tcp 1518088959 fddf:6f93:acba::1 51043 typ host tcptype passive generation 0 ufrag dg/c network-id 12 network-cost 50"] [12:09:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:09] [ICE] viewer local HOST #10: fddf:6f93:acba::1:51051 (tcp) β†’ sent [12:09:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:14] [iOS AUDIO] πŸ“Š 3500 audio packets sent [12:09:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:18] [SCROLL_BTN] Showing button - 296pt from bottom > half 223pt [12:09:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:31] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:09:31] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=55, isReloading=false [12:09:31] [SEND_MESSAGE] βœ… Added optimistic message id=-3 to arrays, newMsgCount=56 [12:09:31] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[-3, 17775, 17774, 17773, 17772] [12:09:31] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:09:31] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:09:32] [CLIENT_SIG] Event received: type=0 messageId=17776 [12:09:32] [WS_EVENT] Received event: type=0, messageId=17776 [12:09:32] [WS_EVENT] πŸ“¨ New message notification (msgId=17776) - triggering incremental refresh, currentMsgCount=56 [12:09:32] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=56 [12:09:32] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17775 [12:09:32] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17776,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:09:31"} [12:09:32] [CHAT] receive_message.php JSON: ["ok": 1, "session_id": ILUIWU, "file_name": , "datesent_utc": 2026-01-15 11:09:31, "message_id": 17776, "message_type": 0] [12:09:32] [DB_UPGRADE] Upgrading message ID: -3 β†’ 17776, preserveOriginalDate=false [12:09:32] [DB_UPGRADE] βœ… Upgraded -3 β†’ 17776 with send_status=0, 1 row(s) affected [12:09:32] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -3 β†’ 17776 [12:09:32] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -3 β†’ 17776 [12:09:32] ReloadData 9 [12:09:32] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:09:32] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:09:32] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=56 [12:09:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:32] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:09:33] [PUSH] Silent push received [12:09:33] [PUSH_EMBED] No embedded message_data in notification [12:09:33] [PUSH] No embedded data, pre-loading messages from server [12:09:33] [PUSH_PRELOAD] Fetching messages for instant display cache [12:09:33] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:09:33] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [17726, 17725, 17724, 17723, 17722] [12:09:33] [PUSH_PRELOAD] ⚑ Pre-cached 55 messages for instant display (preserved 5 from push) [12:09:33] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:09:33] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17776, AnyHashable("aps"): { "content-available" = 1; }] [12:09:33] [PUSH] Parsed message_id: 17776 [12:09:33] [PUSH] Parsed operation_type: 3 [12:09:33] [PUSH] Taking direct action: opType=3, messageId=17776 [12:09:33] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17776 [12:09:33] [CLIENT_SIG] Event received: type=3 messageId=17776 [12:09:33] [WS_EVENT] Received event: type=3, messageId=17776 [12:09:33] [WS_EVENT] Read receipt for message 17776 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:09:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:37] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:09:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:39] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:09:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:40] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:09:40 +0000 - type: unknown, operation_type: 0, message_id: 17777, session_id: ILUIWU, state: 0 [12:09:40] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:09:39"; "file_name" = ""; message = Nopee; "message_id" = 17777; "message_type" = 0; "prev_session_message_id" = 17776; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17777, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:09:40] [PUSH] App active - suppressing notification UI, posting internal event [12:09:40] [PUSH_EMBED] πŸ“© Received embedded message: id=17777, type=0, sender=Esra [12:09:40] [PUSH_EMBED] βœ… Saved message 17777 to local DB (sync) [12:09:40] [PUSH_EMBED] Inserted message 17777 into existing cache (now 56 messages) [12:09:40] [PUSH_EMBED] Fetching evolution data for message 17777 in background [12:09:40] [PUSH_EMBED] βœ… Fully processed message 17777 [12:09:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:09:39"; "file_name" = ""; message = Nopee; "message_id" = 17777; "message_type" = 0; "prev_session_message_id" = 17776; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17777, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:09:40] [PUSH_EMBED_VC] Processing embedded message: id=17777, type=0, sender=Esra, prevId=17776 [12:09:40] [PUSH_EMBED_VC] Inserted message 17777 into allMessagesWithReadBy (now 57 messages) [12:09:40] [PUSH_EMBED_VC] βœ… Previous message 17776 exists in memory [12:09:40] [PUSH] ⚑ Embedded message handled directly in ViewController [12:09:40] [PUSH] Parsed message_id: 17777 [12:09:40] [PUSH] Parsed operation_type: 0 [12:09:40] [PUSH] Taking direct action: opType=0, messageId=17777 [12:09:40] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17777 [12:09:40] [PUSH] ⚑ Message 17777 already in memory - skipping duplicate notification entirely [12:09:40] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:09:40] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:09:40] [PUSH_UI] Message 17777 already in memory - skipping insert [12:09:40] [PUSH_EMBED_VC] Saved message 17777 to local DB [12:09:40] [PUSH] Silent push received [12:09:40] [PUSH_EMBED] πŸ“© Received embedded message: id=17777, type=0, sender=Esra [12:09:40] [PUSH_EMBED] βœ… Saved message 17777 to local DB (sync) [12:09:40] [PUSH_EMBED] Fetching evolution data for message 17777 in background [12:09:40] [PUSH_EMBED] βœ… Fully processed message 17777 [12:09:40] [PUSH] Embedded message handled instantly from silent push [12:09:40] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:09:40] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:09:40] [PUSH_UI] Message 17777 already in memory - skipping insert [12:09:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:09:39"; "file_name" = ""; message = Nopee; "message_id" = 17777; "message_type" = 0; "prev_session_message_id" = 17776; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17777, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:09:40] [PUSH_EMBED_VC] Message 17777 already in memory - skipping [12:09:40] [PUSH] ⚑ Embedded message handled directly in ViewController [12:09:40] [PUSH] Parsed message_id: 17777 [12:09:40] [PUSH] Parsed operation_type: 0 [12:09:40] [PUSH] Taking direct action: opType=0, messageId=17777 [12:09:40] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17777 [12:09:40] [PUSH] ⚑ Message 17777 already in memory - skipping duplicate notification entirely [12:09:40] [PUSH_EMBED] Got evolution data for message 17777, saving to local DB [12:09:40] [PUSH_EMBED] Saved evolution data for message 17777 [12:09:40] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[17777, 17721, 17722, 17723, 17724] [12:09:40] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17776 β†’ 17777 [12:09:41] [CLIENT_SIG] Event received: type=0 messageId=17777 [12:09:41] [WS_EVENT] Received event: type=0, messageId=17777 [12:09:41] [WS_EVENT] πŸ“¨ New message notification (msgId=17777) - triggering incremental refresh, currentMsgCount=57 [12:09:41] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=57 [12:09:41] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17777 [12:09:41] [PUSH_EMBED] Got evolution data for message 17777, saving to local DB [12:09:41] [PUSH_EMBED] Saved evolution data for message 17777 [12:09:41] [INCREMENTAL_SYNC] βœ… No new messages [12:09:41] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=57 [12:09:42] [PUSH] Silent push received [12:09:42] [PUSH_EMBED] No embedded message_data in notification [12:09:42] [PUSH] No embedded data, pre-loading messages from server [12:09:42] [PUSH_PRELOAD] Fetching messages for instant display cache [12:09:42] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:09:42] [PRELOAD_CACHE] Preserving 6 push-inserted messages: [17727, 17726, 17725, 17724, 17723, 17722] [12:09:42] [PUSH_PRELOAD] ⚑ Pre-cached 56 messages for instant display (preserved 6 from push) [12:09:42] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:09:42] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17777, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [12:09:42] [PUSH] Parsed message_id: 17777 [12:09:42] [PUSH] Parsed operation_type: 3 [12:09:42] [PUSH] Taking direct action: opType=3, messageId=17777 [12:09:42] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17777 [12:09:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:42] [CLIENT_SIG] Event received: type=3 messageId=17777 [12:09:42] [WS_EVENT] Received event: type=3, messageId=17777 [12:09:42] [WS_EVENT] Read receipt for message 17777 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:09:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:09:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:03] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:10:03] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=57, isReloading=false [12:10:03] [SEND_MESSAGE] βœ… Added optimistic message id=-4 to arrays, newMsgCount=58 [12:10:03] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[-4, 17777, 17776, 17775, 17774] [12:10:03] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:10:03] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:10:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:04] [CLIENT_SIG] Event received: type=0 messageId=17778 [12:10:04] [WS_EVENT] Received event: type=0, messageId=17778 [12:10:04] [WS_EVENT] πŸ“¨ New message notification (msgId=17778) - triggering incremental refresh, currentMsgCount=58 [12:10:04] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=58 [12:10:04] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17777 [12:10:04] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17778,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:10:03"} [12:10:04] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-15 11:10:03, "file_name": , "message_type": 0, "message_id": 17778, "session_id": ILUIWU, "ok": 1] [12:10:04] [DB_UPGRADE] Upgrading message ID: -4 β†’ 17778, preserveOriginalDate=false [12:10:04] [DB_UPGRADE] βœ… Upgraded -4 β†’ 17778 with send_status=0, 1 row(s) affected [12:10:04] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -4 β†’ 17778 [12:10:04] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -4 β†’ 17778 [12:10:04] ReloadData 9 [12:10:04] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:10:04] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:10:04] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=58 [12:10:04] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:10:04] [iOS AUDIO] πŸ“Š 4000 audio packets sent [12:10:05] [PUSH] Silent push received [12:10:05] [PUSH_EMBED] No embedded message_data in notification [12:10:05] [PUSH] No embedded data, pre-loading messages from server [12:10:05] [PUSH_PRELOAD] Fetching messages for instant display cache [12:10:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:05] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:10:05] [PRELOAD_CACHE] Preserving 7 push-inserted messages: [17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:10:05] [PUSH_PRELOAD] ⚑ Pre-cached 57 messages for instant display (preserved 7 from push) [12:10:05] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:10:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17778, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [12:10:05] [PUSH] Parsed message_id: 17778 [12:10:05] [PUSH] Parsed operation_type: 3 [12:10:05] [PUSH] Taking direct action: opType=3, messageId=17778 [12:10:05] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17778 [12:10:06] [CLIENT_SIG] Event received: type=3 messageId=17778 [12:10:06] [WS_EVENT] Received event: type=3, messageId=17778 [12:10:06] [WS_EVENT] Read receipt for message 17778 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:13] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:28] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:28] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:30] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:31] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:10:31 +0000 - type: unknown, operation_type: 0, message_id: 17779, session_id: ILUIWU, state: 0 [12:10:31] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17779, AnyHashable("message_data"): { datesent = "2026-01-15 11:10:30"; "file_name" = ""; message = "Mentally or physically? \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17779; "message_type" = 0; "prev_session_message_id" = 17778; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:10:31] [PUSH] App active - suppressing notification UI, posting internal event [12:10:31] [PUSH_EMBED] πŸ“© Received embedded message: id=17779, type=0, sender=Esra [12:10:31] [PUSH_EMBED] βœ… Saved message 17779 to local DB (sync) [12:10:31] [PUSH_EMBED] Inserted message 17779 into existing cache (now 58 messages) [12:10:31] [PUSH_EMBED] Fetching evolution data for message 17779 in background [12:10:31] [PUSH_EMBED] βœ… Fully processed message 17779 [12:10:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17779, AnyHashable("message_data"): { datesent = "2026-01-15 11:10:30"; "file_name" = ""; message = "Mentally or physically? \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17779; "message_type" = 0; "prev_session_message_id" = 17778; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:10:31] [PUSH_EMBED_VC] Processing embedded message: id=17779, type=0, sender=Esra, prevId=17778 [12:10:31] [PUSH_EMBED_VC] Inserted message 17779 into allMessagesWithReadBy (now 59 messages) [12:10:31] [PUSH_EMBED_VC] βœ… Previous message 17778 exists in memory [12:10:31] [PUSH] ⚑ Embedded message handled directly in ViewController [12:10:31] [PUSH] Parsed message_id: 17779 [12:10:31] [PUSH] Parsed operation_type: 0 [12:10:31] [PUSH] Taking direct action: opType=0, messageId=17779 [12:10:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17779 [12:10:31] [PUSH] ⚑ Message 17779 already in memory - skipping duplicate notification entirely [12:10:31] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:10:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:10:31] [PUSH_UI] Message 17779 already in memory - skipping insert [12:10:31] [PUSH_EMBED_VC] Saved message 17779 to local DB [12:10:31] [PUSH] Silent push received [12:10:31] [PUSH_EMBED] πŸ“© Received embedded message: id=17779, type=0, sender=Esra [12:10:31] [PUSH_EMBED] βœ… Saved message 17779 to local DB (sync) [12:10:31] [PUSH_EMBED] Fetching evolution data for message 17779 in background [12:10:31] [PUSH_EMBED] βœ… Fully processed message 17779 [12:10:31] [PUSH] Embedded message handled instantly from silent push [12:10:31] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:10:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:10:31] [PUSH_UI] Message 17779 already in memory - skipping insert [12:10:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:10:30"; "file_name" = ""; message = "Mentally or physically? \Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17779; "message_type" = 0; "prev_session_message_id" = 17778; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17779, AnyHashable("session_id"): ILUIWU] [12:10:31] [PUSH_EMBED_VC] Message 17779 already in memory - skipping [12:10:31] [PUSH] ⚑ Embedded message handled directly in ViewController [12:10:31] [PUSH] Parsed message_id: 17779 [12:10:31] [PUSH] Parsed operation_type: 0 [12:10:31] [PUSH] Taking direct action: opType=0, messageId=17779 [12:10:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17779 [12:10:31] [PUSH] ⚑ Message 17779 already in memory - skipping duplicate notification entirely [12:10:31] [PUSH_EMBED] Got evolution data for message 17779, saving to local DB [12:10:31] [PUSH_EMBED] Saved evolution data for message 17779 [12:10:31] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[17779, 17721, 17722, 17723, 17724] [12:10:31] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17778 β†’ 17779 [12:10:31] [CLIENT_SIG] Event received: type=0 messageId=17779 [12:10:31] [WS_EVENT] Received event: type=0, messageId=17779 [12:10:31] [WS_EVENT] πŸ“¨ New message notification (msgId=17779) - triggering incremental refresh, currentMsgCount=59 [12:10:31] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=59 [12:10:31] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17779 [12:10:31] [PUSH_EMBED] Got evolution data for message 17779, saving to local DB [12:10:31] [PUSH_EMBED] Saved evolution data for message 17779 [12:10:31] [INCREMENTAL_SYNC] βœ… No new messages [12:10:31] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=59 [12:10:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:32] [PUSH] Silent push received [12:10:32] [PUSH_EMBED] No embedded message_data in notification [12:10:32] [PUSH] No embedded data, pre-loading messages from server [12:10:32] [PUSH_PRELOAD] Fetching messages for instant display cache [12:10:32] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:10:32] [PRELOAD_CACHE] Preserving 8 push-inserted messages: [17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:10:32] [PUSH_PRELOAD] ⚑ Pre-cached 58 messages for instant display (preserved 8 from push) [12:10:32] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:10:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17779, AnyHashable("aps"): { "content-available" = 1; }] [12:10:32] [PUSH] Parsed message_id: 17779 [12:10:32] [PUSH] Parsed operation_type: 3 [12:10:32] [PUSH] Taking direct action: opType=3, messageId=17779 [12:10:32] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17779 [12:10:33] [CLIENT_SIG] Event received: type=3 messageId=17779 [12:10:33] [WS_EVENT] Received event: type=3, messageId=17779 [12:10:33] [WS_EVENT] Read receipt for message 17779 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:10:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:51] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:10:51] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=59, isReloading=false [12:10:51] [SEND_MESSAGE] βœ… Added optimistic message id=-5 to arrays, newMsgCount=60 [12:10:51] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[-5, 17779, 17778, 17777, 17776] [12:10:51] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:10:51] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:10:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:52] [CLIENT_SIG] Event received: type=0 messageId=17780 [12:10:52] [WS_EVENT] Received event: type=0, messageId=17780 [12:10:52] [WS_EVENT] πŸ“¨ New message notification (msgId=17780) - triggering incremental refresh, currentMsgCount=60 [12:10:52] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=60 [12:10:52] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17780,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:10:51"} [12:10:52] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17779 [12:10:52] [CHAT] receive_message.php JSON: ["ok": 1, "session_id": ILUIWU, "file_name": , "datesent_utc": 2026-01-15 11:10:51, "message_id": 17780, "message_type": 0] [12:10:52] [DB_UPGRADE] Upgrading message ID: -5 β†’ 17780, preserveOriginalDate=false [12:10:52] [DB_UPGRADE] βœ… Upgraded -5 β†’ 17780 with send_status=0, 1 row(s) affected [12:10:52] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -5 β†’ 17780 [12:10:52] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -5 β†’ 17780 [12:10:52] ReloadData 9 [12:10:52] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:10:52] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:10:52] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=60 [12:10:52] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:10:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:53] [PUSH] Silent push received [12:10:53] [PUSH_EMBED] No embedded message_data in notification [12:10:53] [PUSH] No embedded data, pre-loading messages from server [12:10:53] [PUSH_PRELOAD] Fetching messages for instant display cache [12:10:53] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:10:53] [PRELOAD_CACHE] Preserving 9 push-inserted messages: [17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:10:53] [PUSH_PRELOAD] ⚑ Pre-cached 59 messages for instant display (preserved 9 from push) [12:10:53] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:10:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17780, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [12:10:53] [PUSH] Parsed message_id: 17780 [12:10:53] [PUSH] Parsed operation_type: 3 [12:10:53] [PUSH] Taking direct action: opType=3, messageId=17780 [12:10:53] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17780 [12:10:54] [CLIENT_SIG] Event received: type=3 messageId=17780 [12:10:54] [WS_EVENT] Received event: type=3, messageId=17780 [12:10:54] [WS_EVENT] Read receipt for message 17780 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:10:54] [iOS AUDIO] πŸ“Š 4500 audio packets sent [12:10:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:10:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:06] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:11] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:19] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:21] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:22] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:11:22 +0000 - type: unknown, operation_type: 0, message_id: 17781, session_id: ILUIWU, state: 0 [12:11:22] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17781, AnyHashable("message_data"): { datesent = "2026-01-15 11:11:22"; "file_name" = ""; message = "\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17781; "message_type" = 0; "prev_session_message_id" = 17780; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:11:22] [PUSH] App active - suppressing notification UI, posting internal event [12:11:22] [PUSH_EMBED] πŸ“© Received embedded message: id=17781, type=0, sender=Esra [12:11:22] [PUSH_EMBED] βœ… Saved message 17781 to local DB (sync) [12:11:22] [PUSH_EMBED] Inserted message 17781 into existing cache (now 60 messages) [12:11:22] [PUSH_EMBED] Fetching evolution data for message 17781 in background [12:11:22] [PUSH_EMBED] βœ… Fully processed message 17781 [12:11:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17781, AnyHashable("message_data"): { datesent = "2026-01-15 11:11:22"; "file_name" = ""; message = "\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17781; "message_type" = 0; "prev_session_message_id" = 17780; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:11:22] [PUSH_EMBED_VC] Processing embedded message: id=17781, type=0, sender=Esra, prevId=17780 [12:11:22] [PUSH_EMBED_VC] Inserted message 17781 into allMessagesWithReadBy (now 61 messages) [12:11:22] [PUSH_EMBED_VC] βœ… Previous message 17780 exists in memory [12:11:22] [PUSH] ⚑ Embedded message handled directly in ViewController [12:11:22] [PUSH] Parsed message_id: 17781 [12:11:22] [PUSH] Parsed operation_type: 0 [12:11:22] [PUSH] Taking direct action: opType=0, messageId=17781 [12:11:22] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17781 [12:11:22] [PUSH] ⚑ Message 17781 already in memory - skipping duplicate notification entirely [12:11:22] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:11:22] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:11:22] [PUSH_UI] Message 17781 already in memory - skipping insert [12:11:22] [PUSH_EMBED_VC] Saved message 17781 to local DB [12:11:22] [PUSH] Silent push received [12:11:22] [PUSH_EMBED] πŸ“© Received embedded message: id=17781, type=0, sender=Esra [12:11:22] [PUSH_EMBED] βœ… Saved message 17781 to local DB (sync) [12:11:22] [PUSH_EMBED] Fetching evolution data for message 17781 in background [12:11:22] [PUSH_EMBED] βœ… Fully processed message 17781 [12:11:22] [PUSH] Embedded message handled instantly from silent push [12:11:22] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:11:22] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:11:22] [PUSH_UI] Message 17781 already in memory - skipping insert [12:11:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17781, AnyHashable("message_data"): { datesent = "2026-01-15 11:11:22"; "file_name" = ""; message = "\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17781; "message_type" = 0; "prev_session_message_id" = 17780; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:11:22] [PUSH_EMBED_VC] Message 17781 already in memory - skipping [12:11:22] [PUSH] ⚑ Embedded message handled directly in ViewController [12:11:22] [PUSH] Parsed message_id: 17781 [12:11:22] [PUSH] Parsed operation_type: 0 [12:11:22] [PUSH] Taking direct action: opType=0, messageId=17781 [12:11:22] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17781 [12:11:22] [PUSH] ⚑ Message 17781 already in memory - skipping duplicate notification entirely [12:11:23] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[17781, 17721, 17722, 17723, 17724] [12:11:23] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17780 β†’ 17781 [12:11:23] [CLIENT_SIG] Event received: type=0 messageId=17781 [12:11:23] [WS_EVENT] Received event: type=0, messageId=17781 [12:11:23] [WS_EVENT] πŸ“¨ New message notification (msgId=17781) - triggering incremental refresh, currentMsgCount=61 [12:11:23] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=61 [12:11:23] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17781 [12:11:23] [PUSH_EMBED] Got evolution data for message 17781, saving to local DB [12:11:23] [PUSH_EMBED] Saved evolution data for message 17781 [12:11:23] [PUSH_EMBED] Got evolution data for message 17781, saving to local DB [12:11:23] [PUSH_EMBED] Saved evolution data for message 17781 [12:11:23] [INCREMENTAL_SYNC] βœ… No new messages [12:11:23] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=61 [12:11:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:24] [PUSH] Silent push received [12:11:24] [PUSH_EMBED] No embedded message_data in notification [12:11:24] [PUSH] No embedded data, pre-loading messages from server [12:11:24] [PUSH_PRELOAD] Fetching messages for instant display cache [12:11:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:11:24] [PRELOAD_CACHE] Preserving 10 push-inserted messages: [17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:11:24] [PUSH_PRELOAD] ⚑ Pre-cached 60 messages for instant display (preserved 10 from push) [12:11:24] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:11:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17781, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [12:11:24] [PUSH] Parsed message_id: 17781 [12:11:24] [PUSH] Parsed operation_type: 3 [12:11:24] [PUSH] Taking direct action: opType=3, messageId=17781 [12:11:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17781 [12:11:25] [CLIENT_SIG] Event received: type=3 messageId=17781 [12:11:25] [WS_EVENT] Received event: type=3, messageId=17781 [12:11:25] [WS_EVENT] Read receipt for message 17781 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:11:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:39] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt [12:11:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:44] [iOS AUDIO] πŸ“Š 5000 audio packets sent [12:11:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:46] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:11:46] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=61, isReloading=false [12:11:46] [SEND_MESSAGE] βœ… Added optimistic message id=-6 to arrays, newMsgCount=62 [12:11:46] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[-6, 17781, 17780, 17779, 17778] [12:11:46] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:11:46] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:11:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:47] [CLIENT_SIG] Event received: type=0 messageId=17782 [12:11:47] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17782,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:11:46"} [12:11:47] [WS_EVENT] Received event: type=0, messageId=17782 [12:11:47] [WS_EVENT] πŸ“¨ New message notification (msgId=17782) - triggering incremental refresh, currentMsgCount=62 [12:11:47] [CHAT] receive_message.php JSON: ["file_name": , "ok": 1, "session_id": ILUIWU, "message_id": 17782, "datesent_utc": 2026-01-15 11:11:46, "message_type": 0] [12:11:47] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=62 [12:11:47] [DB_UPGRADE] Upgrading message ID: -6 β†’ 17782, preserveOriginalDate=false [12:11:47] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17781 [12:11:47] [DB_UPGRADE] βœ… Upgraded -6 β†’ 17782 with send_status=0, 1 row(s) affected [12:11:47] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -6 β†’ 17782 [12:11:47] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -6 β†’ 17782 [12:11:47] ReloadData 9 [12:11:47] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:11:47] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:11:47] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=62 [12:11:47] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:11:48] [PUSH] Silent push received [12:11:48] [PUSH_EMBED] No embedded message_data in notification [12:11:48] [PUSH] No embedded data, pre-loading messages from server [12:11:48] [PUSH_PRELOAD] Fetching messages for instant display cache [12:11:48] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:11:48] [PRELOAD_CACHE] Preserving 11 push-inserted messages: [17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:11:48] [PUSH_PRELOAD] ⚑ Pre-cached 61 messages for instant display (preserved 11 from push) [12:11:48] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:11:48] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17782, AnyHashable("session_id"): ILUIWU] [12:11:48] [PUSH] Parsed message_id: 17782 [12:11:48] [PUSH] Parsed operation_type: 3 [12:11:48] [PUSH] Taking direct action: opType=3, messageId=17782 [12:11:48] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17782 [12:11:49] [CLIENT_SIG] Event received: type=3 messageId=17782 [12:11:49] [WS_EVENT] Received event: type=3, messageId=17782 [12:11:49] [WS_EVENT] Read receipt for message 17782 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:54] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:11:54] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=62, isReloading=false [12:11:54] [SEND_MESSAGE] βœ… Added optimistic message id=-7 to arrays, newMsgCount=63 [12:11:54] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=63, first5Ids=[-7, 17782, 17781, 17780, 17779] [12:11:54] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:11:54] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:11:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:55] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17783,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:11:55"} [12:11:55] [CHAT] receive_message.php JSON: ["file_name": , "datesent_utc": 2026-01-15 11:11:55, "message_type": 0, "session_id": ILUIWU, "ok": 1, "message_id": 17783] [12:11:55] [CLIENT_SIG] Event received: type=0 messageId=17783 [12:11:55] [DB_UPGRADE] Upgrading message ID: -7 β†’ 17783, preserveOriginalDate=false [12:11:55] [WS_EVENT] Received event: type=0, messageId=17783 [12:11:55] [WS_EVENT] πŸ“¨ New message notification (msgId=17783) - triggering incremental refresh, currentMsgCount=63 [12:11:55] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=63 [12:11:55] [DB_UPGRADE] βœ… Upgraded -7 β†’ 17783 with send_status=0, 1 row(s) affected [12:11:55] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17783 [12:11:55] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -7 β†’ 17783 [12:11:55] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -7 β†’ 17783 [12:11:55] ReloadData 9 [12:11:55] [INCREMENTAL_SYNC] βœ… No new messages [12:11:55] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=63 [12:11:56] [PUSH] Silent push received [12:11:56] [PUSH_EMBED] No embedded message_data in notification [12:11:56] [PUSH] No embedded data, pre-loading messages from server [12:11:56] [PUSH_PRELOAD] Fetching messages for instant display cache [12:11:56] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:11:56] [PRELOAD_CACHE] Preserving 12 push-inserted messages: [17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:11:56] [PUSH_PRELOAD] ⚑ Pre-cached 62 messages for instant display (preserved 12 from push) [12:11:56] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:11:56] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17783, AnyHashable("session_id"): ILUIWU] [12:11:56] [PUSH] Parsed message_id: 17783 [12:11:56] [PUSH] Parsed operation_type: 3 [12:11:56] [PUSH] Taking direct action: opType=3, messageId=17783 [12:11:56] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17783 [12:11:57] [CLIENT_SIG] Event received: type=3 messageId=17783 [12:11:57] [WS_EVENT] Received event: type=3, messageId=17783 [12:11:57] [WS_EVENT] Read receipt for message 17783 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:11:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:11:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:00] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:04] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:05] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:12:05 +0000 - type: unknown, operation_type: 0, message_id: 17784, session_id: ILUIWU, state: 0 [12:12:05] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:04"; "file_name" = ""; message = "Reallyyyy??!"; "message_id" = 17784; "message_type" = 0; "prev_session_message_id" = 17783; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17784] [12:12:05] [PUSH] App active - suppressing notification UI, posting internal event [12:12:05] [PUSH_EMBED] πŸ“© Received embedded message: id=17784, type=0, sender=Esra [12:12:05] [PUSH_EMBED] βœ… Saved message 17784 to local DB (sync) [12:12:05] [PUSH_EMBED] Inserted message 17784 into existing cache (now 63 messages) [12:12:05] [PUSH_EMBED] Fetching evolution data for message 17784 in background [12:12:05] [PUSH_EMBED] βœ… Fully processed message 17784 [12:12:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:04"; "file_name" = ""; message = "Reallyyyy??!"; "message_id" = 17784; "message_type" = 0; "prev_session_message_id" = 17783; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17784] [12:12:05] [PUSH_EMBED_VC] Processing embedded message: id=17784, type=0, sender=Esra, prevId=17783 [12:12:05] [PUSH_EMBED_VC] Inserted message 17784 into allMessagesWithReadBy (now 64 messages) [12:12:05] [PUSH_EMBED_VC] βœ… Previous message 17783 exists in memory [12:12:05] [PUSH] ⚑ Embedded message handled directly in ViewController [12:12:05] [PUSH] Parsed message_id: 17784 [12:12:05] [PUSH] Parsed operation_type: 0 [12:12:05] [PUSH] Taking direct action: opType=0, messageId=17784 [12:12:05] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17784 [12:12:05] [PUSH] ⚑ Message 17784 already in memory - skipping duplicate notification entirely [12:12:05] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:12:05] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:12:05] [PUSH_UI] Message 17784 already in memory - skipping insert [12:12:05] [PUSH_EMBED_VC] Saved message 17784 to local DB [12:12:05] [PUSH] Silent push received [12:12:05] [PUSH_EMBED] πŸ“© Received embedded message: id=17784, type=0, sender=Esra [12:12:05] [PUSH_EMBED] βœ… Saved message 17784 to local DB (sync) [12:12:05] [PUSH_EMBED] Fetching evolution data for message 17784 in background [12:12:05] [PUSH_EMBED] βœ… Fully processed message 17784 [12:12:05] [PUSH] Embedded message handled instantly from silent push [12:12:05] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:12:05] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:12:05] [PUSH_UI] Message 17784 already in memory - skipping insert [12:12:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17784, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:04"; "file_name" = ""; message = "Reallyyyy??!"; "message_id" = 17784; "message_type" = 0; "prev_session_message_id" = 17783; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:12:05] [PUSH_EMBED_VC] Message 17784 already in memory - skipping [12:12:05] [PUSH] ⚑ Embedded message handled directly in ViewController [12:12:05] [PUSH] Parsed message_id: 17784 [12:12:05] [PUSH] Parsed operation_type: 0 [12:12:05] [PUSH] Taking direct action: opType=0, messageId=17784 [12:12:05] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17784 [12:12:05] [PUSH] ⚑ Message 17784 already in memory - skipping duplicate notification entirely [12:12:05] [PUSH_EMBED] Got evolution data for message 17784, saving to local DB [12:12:05] [PUSH_EMBED] Saved evolution data for message 17784 [12:12:05] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=64, first5Ids=[17784, 17783, 17782, 17781, 17780] [12:12:05] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17783 β†’ 17784 [12:12:05] [CLIENT_SIG] Event received: type=0 messageId=17784 [12:12:05] [WS_EVENT] Received event: type=0, messageId=17784 [12:12:05] [WS_EVENT] πŸ“¨ New message notification (msgId=17784) - triggering incremental refresh, currentMsgCount=64 [12:12:05] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=64 [12:12:05] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17784 [12:12:05] [INCREMENTAL_SYNC] βœ… No new messages [12:12:05] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=64 [12:12:05] [PUSH_EMBED] Got evolution data for message 17784, saving to local DB [12:12:05] [PUSH_EMBED] Saved evolution data for message 17784 [12:12:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:06] [PUSH] Silent push received [12:12:06] [PUSH_EMBED] No embedded message_data in notification [12:12:06] [PUSH] No embedded data, pre-loading messages from server [12:12:06] [PUSH_PRELOAD] Fetching messages for instant display cache [12:12:06] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:12:06] [PRELOAD_CACHE] Preserving 13 push-inserted messages: [17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:12:06] [PUSH_PRELOAD] ⚑ Pre-cached 63 messages for instant display (preserved 13 from push) [12:12:06] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:12:06] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17784] [12:12:06] [PUSH] Parsed message_id: 17784 [12:12:06] [PUSH] Parsed operation_type: 3 [12:12:06] [PUSH] Taking direct action: opType=3, messageId=17784 [12:12:06] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17784 [12:12:07] [CLIENT_SIG] Event received: type=3 messageId=17784 [12:12:07] [WS_EVENT] Received event: type=3, messageId=17784 [12:12:07] [WS_EVENT] Read receipt for message 17784 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:12:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:08] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:16] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:25] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:12:25] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=64, isReloading=false [12:12:25] [SEND_MESSAGE] βœ… Added optimistic message id=-8 to arrays, newMsgCount=65 [12:12:25] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[-8, 17784, 17783, 17782, 17781] [12:12:25] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:12:25] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:12:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:28] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17785,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:12:26"} [12:12:28] [CHAT] receive_message.php JSON: ["ok": 1, "session_id": ILUIWU, "message_id": 17785, "datesent_utc": 2026-01-15 11:12:26, "message_type": 0, "file_name": ] [12:12:28] [DB_UPGRADE] Upgrading message ID: -8 β†’ 17785, preserveOriginalDate=false [12:12:28] [CLIENT_SIG] Event received: type=0 messageId=17785 [12:12:28] [WS_EVENT] Received event: type=0, messageId=17785 [12:12:28] [WS_EVENT] πŸ“¨ New message notification (msgId=17785) - triggering incremental refresh, currentMsgCount=65 [12:12:28] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=65 [12:12:28] [DB_UPGRADE] βœ… Upgraded -8 β†’ 17785 with send_status=0, 1 row(s) affected [12:12:28] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17785 [12:12:28] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -8 β†’ 17785 [12:12:28] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -8 β†’ 17785 [12:12:28] ReloadData 9 [12:12:28] [INCREMENTAL_SYNC] βœ… No new messages [12:12:28] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=65 [12:12:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:29] [PUSH] Silent push received [12:12:29] [PUSH_EMBED] No embedded message_data in notification [12:12:29] [PUSH] No embedded data, pre-loading messages from server [12:12:29] [PUSH_PRELOAD] Fetching messages for instant display cache [12:12:29] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:12:29] [PRELOAD_CACHE] Preserving 14 push-inserted messages: [17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:12:29] [PUSH_PRELOAD] ⚑ Pre-cached 64 messages for instant display (preserved 14 from push) [12:12:29] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:12:29] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17785, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [12:12:29] [PUSH] Parsed message_id: 17785 [12:12:29] [PUSH] Parsed operation_type: 3 [12:12:29] [PUSH] Taking direct action: opType=3, messageId=17785 [12:12:29] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17785 [12:12:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:31] [CLIENT_SIG] Event received: type=3 messageId=17785 [12:12:31] [WS_EVENT] Received event: type=3, messageId=17785 [12:12:31] [WS_EVENT] Read receipt for message 17785 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:34] [iOS AUDIO] πŸ“Š 5500 audio packets sent [12:12:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:37] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:38] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:39] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:12:39 +0000 - type: unknown, operation_type: 0, message_id: 17786, session_id: ILUIWU, state: 0 [12:12:39] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:38"; "file_name" = ""; message = "\Ud83e\Udee0"; "message_id" = 17786; "message_type" = 0; "prev_session_message_id" = 17785; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17786] [12:12:39] [PUSH] App active - suppressing notification UI, posting internal event [12:12:39] [PUSH_EMBED] πŸ“© Received embedded message: id=17786, type=0, sender=Esra [12:12:39] [PUSH_EMBED] βœ… Saved message 17786 to local DB (sync) [12:12:39] [PUSH_EMBED] Inserted message 17786 into existing cache (now 65 messages) [12:12:39] [PUSH_EMBED] Fetching evolution data for message 17786 in background [12:12:39] [PUSH_EMBED] βœ… Fully processed message 17786 [12:12:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:38"; "file_name" = ""; message = "\Ud83e\Udee0"; "message_id" = 17786; "message_type" = 0; "prev_session_message_id" = 17785; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17786] [12:12:39] [PUSH_EMBED_VC] Processing embedded message: id=17786, type=0, sender=Esra, prevId=17785 [12:12:39] [PUSH_EMBED_VC] Inserted message 17786 into allMessagesWithReadBy (now 66 messages) [12:12:39] [PUSH_EMBED_VC] βœ… Previous message 17785 exists in memory [12:12:39] [PUSH] ⚑ Embedded message handled directly in ViewController [12:12:39] [PUSH] Parsed message_id: 17786 [12:12:39] [PUSH] Parsed operation_type: 0 [12:12:39] [PUSH] Taking direct action: opType=0, messageId=17786 [12:12:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17786 [12:12:39] [PUSH] ⚑ Message 17786 already in memory - skipping duplicate notification entirely [12:12:39] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:12:39] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:12:39] [PUSH_UI] Message 17786 already in memory - skipping insert [12:12:39] [PUSH_EMBED_VC] Saved message 17786 to local DB [12:12:39] [PUSH] Silent push received [12:12:39] [PUSH_EMBED] πŸ“© Received embedded message: id=17786, type=0, sender=Esra [12:12:39] [PUSH_EMBED] βœ… Saved message 17786 to local DB (sync) [12:12:39] [PUSH_EMBED] Fetching evolution data for message 17786 in background [12:12:39] [PUSH_EMBED] βœ… Fully processed message 17786 [12:12:39] [PUSH] Embedded message handled instantly from silent push [12:12:39] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:12:39] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:12:39] [PUSH_UI] Message 17786 already in memory - skipping insert [12:12:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:12:38"; "file_name" = ""; message = "\Ud83e\Udee0"; "message_id" = 17786; "message_type" = 0; "prev_session_message_id" = 17785; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17786, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:12:39] [PUSH_EMBED_VC] Message 17786 already in memory - skipping [12:12:39] [PUSH] ⚑ Embedded message handled directly in ViewController [12:12:39] [PUSH] Parsed message_id: 17786 [12:12:39] [PUSH] Parsed operation_type: 0 [12:12:39] [PUSH] Taking direct action: opType=0, messageId=17786 [12:12:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17786 [12:12:39] [PUSH] ⚑ Message 17786 already in memory - skipping duplicate notification entirely [12:12:40] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[17786, 17785, 17784, 17783, 17782] [12:12:40] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17785 β†’ 17786 [12:12:40] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:12:40] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=66, isReloading=false [12:12:40] [SEND_MESSAGE] βœ… Added optimistic message id=-9 to arrays, newMsgCount=67 [12:12:40] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[-9, 17786, 17785, 17784, 17783] [12:12:40] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:12:40] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:12:40] [CLIENT_SIG] Event received: type=0 messageId=17786 [12:12:40] [WS_EVENT] Received event: type=0, messageId=17786 [12:12:40] [WS_EVENT] πŸ“¨ New message notification (msgId=17786) - triggering incremental refresh, currentMsgCount=67 [12:12:40] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=67 [12:12:40] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17786 [12:12:40] [PUSH_EMBED] Got evolution data for message 17786, saving to local DB [12:12:40] [PUSH_EMBED] Saved evolution data for message 17786 [12:12:40] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:12:40] [INCREMENTAL_SYNC] Replaced optimistic message (id=-9) with server message (id=17787) [12:12:40] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:12:40] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=67 [12:12:40] [PUSH_EMBED] Got evolution data for message 17786, saving to local DB [12:12:40] [PUSH_EMBED] Saved evolution data for message 17786 [12:12:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:41] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:12:42] [CLIENT_SIG] Event received: type=0 messageId=17787 [12:12:42] [WS_EVENT] Received event: type=0, messageId=17787 [12:12:42] [WS_EVENT] πŸ“¨ New message notification (msgId=17787) - triggering incremental refresh, currentMsgCount=67 [12:12:42] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=67 [12:12:42] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17787 [12:12:42] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17787,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:12:40"} [12:12:42] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "message_id": 17787, "datesent_utc": 2026-01-15 11:12:40, "file_name": , "ok": 1] [12:12:42] [DB_UPGRADE] Upgrading message ID: -9 β†’ 17787, preserveOriginalDate=false [12:12:42] [DB_UPGRADE] ⚠️ No rows affected - message -9 not found in DB [12:12:42] [SEND_UPGRADE] ⚠️ Server ID 17787 already exists - removing provisional entry -9 [12:12:42] ReloadData 9 [12:12:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:43] [INCREMENTAL_SYNC] βœ… No new messages [12:12:43] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=67 [12:12:44] [PUSH] Silent push received [12:12:44] [PUSH_EMBED] No embedded message_data in notification [12:12:44] [PUSH] No embedded data, pre-loading messages from server [12:12:44] [PUSH_PRELOAD] Fetching messages for instant display cache [12:12:44] [PUSH] Silent push received [12:12:44] [PUSH_EMBED] No embedded message_data in notification [12:12:44] [PUSH] No embedded data, pre-loading messages from server [12:12:44] [PUSH_PRELOAD] Fetching messages for instant display cache [12:12:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:12:44] [PRELOAD_CACHE] Preserving 16 push-inserted messages: [17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:12:44] [PUSH_PRELOAD] ⚑ Pre-cached 66 messages for instant display (preserved 16 from push) [12:12:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:12:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17786] [12:12:44] [PUSH] Parsed message_id: 17786 [12:12:44] [PUSH] Parsed operation_type: 3 [12:12:44] [PUSH] Taking direct action: opType=3, messageId=17786 [12:12:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17786 [12:12:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:12:44] [PRELOAD_CACHE] Preserving 16 push-inserted messages: [17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:12:44] [PUSH_PRELOAD] ⚑ Pre-cached 66 messages for instant display (preserved 16 from push) [12:12:44] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:12:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17787, AnyHashable("aps"): { "content-available" = 1; }] [12:12:44] [PUSH] Parsed message_id: 17787 [12:12:44] [PUSH] Parsed operation_type: 3 [12:12:44] [PUSH] Taking direct action: opType=3, messageId=17787 [12:12:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17787 [12:12:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:46] [CLIENT_SIG] Event received: type=3 messageId=17787 [12:12:46] [WS_EVENT] Received event: type=3, messageId=17787 [12:12:46] [WS_EVENT] Read receipt for message 17787 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:46] [CLIENT_SIG] Event received: type=3 messageId=17786 [12:12:46] [WS_EVENT] Received event: type=3, messageId=17786 [12:12:46] [WS_EVENT] Read receipt for message 17786 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:12:47] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:12:47] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=67, isReloading=false [12:12:47] [SEND_MESSAGE] βœ… Added optimistic message id=-10 to arrays, newMsgCount=68 [12:12:47] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[-10, 17787, 17786, 17785, 17784] [12:12:47] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:12:47] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:12:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:49] [CLIENT_SIG] Event received: type=0 messageId=17788 [12:12:49] [WS_EVENT] Received event: type=0, messageId=17788 [12:12:49] [WS_EVENT] πŸ“¨ New message notification (msgId=17788) - triggering incremental refresh, currentMsgCount=68 [12:12:49] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=68 [12:12:49] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17787 [12:12:49] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17788,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:12:47"} [12:12:49] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-15 11:12:47, "session_id": ILUIWU, "message_id": 17788, "message_type": 0, "ok": 1, "file_name": ] [12:12:49] [DB_UPGRADE] Upgrading message ID: -10 β†’ 17788, preserveOriginalDate=false [12:12:49] [DB_UPGRADE] βœ… Upgraded -10 β†’ 17788 with send_status=0, 1 row(s) affected [12:12:49] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -10 β†’ 17788 [12:12:49] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -10 β†’ 17788 [12:12:49] ReloadData 9 [12:12:49] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:12:49] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:12:49] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=68 [12:12:49] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:12:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:52] ICE state for vid=eQasKL0O7-ZPA0uZ: 5 ( RTCIceConnectionState ) [12:12:52] [STATS] stopped poll for vid=eQasKL0O7-ZPA0uZ [12:12:52] ICE state for vid=eQasKL0O7-ZPA0uZ: 2 ( RTCIceConnectionState ) [12:12:52] [STATS] starting poll for vid=eQasKL0O7-ZPA0uZ [12:12:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:54] [PUSH] Silent push received [12:12:54] [PUSH_EMBED] No embedded message_data in notification [12:12:54] [PUSH] No embedded data, pre-loading messages from server [12:12:54] [PUSH_PRELOAD] Fetching messages for instant display cache [12:12:54] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:12:54] [PRELOAD_CACHE] Preserving 17 push-inserted messages: [17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:12:54] [PUSH_PRELOAD] ⚑ Pre-cached 67 messages for instant display (preserved 17 from push) [12:12:54] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:12:54] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17788, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }] [12:12:54] [PUSH] Parsed message_id: 17788 [12:12:54] [PUSH] Parsed operation_type: 3 [12:12:54] [PUSH] Taking direct action: opType=3, messageId=17788 [12:12:54] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17788 [12:12:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:56] [CLIENT_SIG] Event received: type=3 messageId=17788 [12:12:56] [WS_EVENT] Received event: type=3, messageId=17788 [12:12:56] [WS_EVENT] Read receipt for message 17788 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:12:57] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:12:57] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=68, isReloading=false [12:12:57] [SEND_MESSAGE] βœ… Added optimistic message id=-11 to arrays, newMsgCount=69 [12:12:57] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[-11, 17788, 17787, 17786, 17785] [12:12:57] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:12:57] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:12:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:12:59] [CLIENT_SIG] Event received: type=0 messageId=17789 [12:12:59] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17789,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:12:57"} [12:12:59] [WS_EVENT] Received event: type=0, messageId=17789 [12:12:59] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "datesent_utc": 2026-01-15 11:12:57, "ok": 1, "file_name": , "message_type": 0, "message_id": 17789] [12:12:59] [WS_EVENT] πŸ“¨ New message notification (msgId=17789) - triggering incremental refresh, currentMsgCount=69 [12:12:59] [DB_UPGRADE] Upgrading message ID: -11 β†’ 17789, preserveOriginalDate=false [12:12:59] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=69 [12:12:59] [DB_UPGRADE] βœ… Upgraded -11 β†’ 17789 with send_status=0, 1 row(s) affected [12:12:59] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17789 [12:12:59] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -11 β†’ 17789 [12:12:59] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -11 β†’ 17789 [12:12:59] ReloadData 9 [12:12:59] [INCREMENTAL_SYNC] βœ… No new messages [12:12:59] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=69 [12:13:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:01] [PUSH] Silent push received [12:13:01] [PUSH_EMBED] No embedded message_data in notification [12:13:01] [PUSH] No embedded data, pre-loading messages from server [12:13:01] [PUSH_PRELOAD] Fetching messages for instant display cache [12:13:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:13:01] [PRELOAD_CACHE] Preserving 18 push-inserted messages: [17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:13:01] [PUSH_PRELOAD] ⚑ Pre-cached 68 messages for instant display (preserved 18 from push) [12:13:01] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:13:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17789] [12:13:01] [PUSH] Parsed message_id: 17789 [12:13:01] [PUSH] Parsed operation_type: 3 [12:13:01] [PUSH] Taking direct action: opType=3, messageId=17789 [12:13:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17789 [12:13:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:02] [CLIENT_SIG] Event received: type=3 messageId=17789 [12:13:02] [WS_EVENT] Received event: type=3, messageId=17789 [12:13:02] [WS_EVENT] Read receipt for message 17789 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:15] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:51657 [12:13:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 51657 typ host generation 0 ufrag V06i network-id 5 ... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:55520 [12:13:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 55520 typ host generation 0 ufrag V06i network-id 8 ... [12:13:18] [ICE] viewer local HOST #11: 172.20.10.1:57019 (udp) β†’ sent [12:13:18] [ICE] viewer local HOST #12: 10.27.13.80:62768 (udp) β†’ sent [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] viewer local HOST #13: 10.27.13.80:61655 (udp) β†’ sent [12:13:18] [ICE] viewer local HOST #14: 10.27.13.80:61450 (udp) β†’ sent [12:13:18] [ICE] viewer local HOST #15: 10.27.13.80:62516 (udp) β†’ sent [12:13:18] [ICE] viewer local HOST #16: 10.27.13.80:59055 (udp) β†’ sent [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:62350 [12:13:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 62350 typ host generatio... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:51449 [12:13:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 51449 typ host generation... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:57064 [12:13:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 57064 typ host generation... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:62354 [12:13:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 62354 typ host generation... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:60695 [12:13:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 60695 typ host generation ... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50415 [12:13:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50415 typ host tcptype passive generation 0 ufrag V06... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50423 [12:13:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50423 typ host tcptype passive generation 0 ufrag V06... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50431 [12:13:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50431 typ host tcptype p... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50435 [12:13:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50435 typ host tcptype pa... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50439 [12:13:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50439 typ host tcptype pa... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50443 [12:13:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50443 typ host tcptype pa... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50447 [12:13:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50447 typ host tcptype pas... [12:13:18] [ICE] remote host β†’ applying [12:13:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:13:18] [ICE] viewer local HOST #17: 172.20.10.1:51076 (tcp) β†’ sent [12:13:18] [ICE] viewer local HOST #18: 10.27.13.80:51085 (tcp) β†’ sent [12:13:18] [ICE] viewer local HOST #19: 10.27.13.80:51094 (tcp) β†’ sent [12:13:18] [ICE] viewer local HOST #20: 10.27.13.80:51103 (tcp) β†’ sent [12:13:18] [ICE] viewer local HOST #21: 10.27.13.80:51112 (tcp) β†’ sent [12:13:18] [ICE] viewer local HOST #22: 10.27.13.80:51121 (tcp) β†’ sent [12:13:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:20] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:13:20] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=69, isReloading=false [12:13:20] [SEND_MESSAGE] βœ… Added optimistic message id=-12 to arrays, newMsgCount=70 [12:13:20] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=70, first5Ids=[-12, 17789, 17788, 17787, 17786] [12:13:20] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:13:20] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:13:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:22] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17790,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:13:20"} [12:13:22] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-15 11:13:20, "ok": 1, "message_type": 0, "session_id": ILUIWU, "file_name": , "message_id": 17790] [12:13:22] [DB_UPGRADE] Upgrading message ID: -12 β†’ 17790, preserveOriginalDate=false [12:13:22] [CLIENT_SIG] Event received: type=0 messageId=17790 [12:13:22] [WS_EVENT] Received event: type=0, messageId=17790 [12:13:22] [WS_EVENT] πŸ“¨ New message notification (msgId=17790) - triggering incremental refresh, currentMsgCount=70 [12:13:22] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=70 [12:13:22] [DB_UPGRADE] βœ… Upgraded -12 β†’ 17790 with send_status=0, 1 row(s) affected [12:13:22] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17790 [12:13:22] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -12 β†’ 17790 [12:13:22] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -12 β†’ 17790 [12:13:22] ReloadData 9 [12:13:22] [INCREMENTAL_SYNC] βœ… No new messages [12:13:22] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=70 [12:13:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:24] [PUSH] Silent push received [12:13:24] [PUSH_EMBED] No embedded message_data in notification [12:13:24] [PUSH] No embedded data, pre-loading messages from server [12:13:24] [PUSH_PRELOAD] Fetching messages for instant display cache [12:13:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:13:24] [PRELOAD_CACHE] Preserving 19 push-inserted messages: [17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:13:24] [PUSH_PRELOAD] ⚑ Pre-cached 69 messages for instant display (preserved 19 from push) [12:13:24] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:13:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17790, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [12:13:24] [PUSH] Parsed message_id: 17790 [12:13:24] [PUSH] Parsed operation_type: 3 [12:13:24] [PUSH] Taking direct action: opType=3, messageId=17790 [12:13:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17790 [12:13:24] [iOS AUDIO] πŸ“Š 6000 audio packets sent [12:13:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 54051 typ host generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 64051 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 63243 typ host generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 53664 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 53264 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 61716 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 51142 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51147 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51152 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51157 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0")] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51162 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:13:25] [ICE] agent local host [12:13:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:13:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:13:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 51167 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:13:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:13:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:13:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:13:25] Found s:candidate:2017553473 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 55888 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:13:25] [ICE] remote host β†’ applying [12:13:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:13:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:13:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:13:25] Found s:candidate:3401237981 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 51288 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:13:25] [ICE] remote host β†’ applying [12:13:25] [CLIENT_SIG] Event received: type=3 messageId=17790 [12:13:25] [WS_EVENT] Received event: type=3, messageId=17790 [12:13:25] [WS_EVENT] Read receipt for message 17790 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:13:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:13:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:13:26] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50503 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:13:26] [ICE] remote host β†’ applying [12:13:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:13:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:13:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:13:26] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50507 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:13:26] [ICE] remote host β†’ applying [12:13:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:29] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:31] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:31] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:13:31 +0000 - type: unknown, operation_type: 0, message_id: 17791, session_id: ILUIWU, state: 0 [12:13:31] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17791, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:29"; "file_name" = ""; message = "But prefer naked, right?"; "message_id" = 17791; "message_type" = 0; "prev_session_message_id" = 17790; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:13:31] [PUSH] App active - suppressing notification UI, posting internal event [12:13:31] [PUSH_EMBED] πŸ“© Received embedded message: id=17791, type=0, sender=Esra [12:13:31] [PUSH_EMBED] βœ… Saved message 17791 to local DB (sync) [12:13:31] [PUSH_EMBED] Inserted message 17791 into existing cache (now 70 messages) [12:13:31] [PUSH_EMBED] Fetching evolution data for message 17791 in background [12:13:31] [PUSH_EMBED] βœ… Fully processed message 17791 [12:13:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17791, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:29"; "file_name" = ""; message = "But prefer naked, right?"; "message_id" = 17791; "message_type" = 0; "prev_session_message_id" = 17790; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:13:31] [PUSH_EMBED_VC] Processing embedded message: id=17791, type=0, sender=Esra, prevId=17790 [12:13:31] [PUSH_EMBED_VC] Inserted message 17791 into allMessagesWithReadBy (now 71 messages) [12:13:31] [PUSH_EMBED_VC] βœ… Previous message 17790 exists in memory [12:13:31] [PUSH] ⚑ Embedded message handled directly in ViewController [12:13:31] [PUSH] Parsed message_id: 17791 [12:13:31] [PUSH] Parsed operation_type: 0 [12:13:31] [PUSH] Taking direct action: opType=0, messageId=17791 [12:13:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17791 [12:13:31] [PUSH] ⚑ Message 17791 already in memory - skipping duplicate notification entirely [12:13:31] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:13:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:13:31] [PUSH_UI] Message 17791 already in memory - skipping insert [12:13:31] [PUSH_EMBED_VC] Saved message 17791 to local DB [12:13:31] [PUSH] Silent push received [12:13:31] [PUSH_EMBED] πŸ“© Received embedded message: id=17791, type=0, sender=Esra [12:13:31] [PUSH_EMBED] βœ… Saved message 17791 to local DB (sync) [12:13:31] [PUSH_EMBED] Fetching evolution data for message 17791 in background [12:13:31] [PUSH_EMBED] βœ… Fully processed message 17791 [12:13:31] [PUSH] Embedded message handled instantly from silent push [12:13:31] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:13:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:13:31] [PUSH_UI] Message 17791 already in memory - skipping insert [12:13:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17791, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:29"; "file_name" = ""; message = "But prefer naked, right?"; "message_id" = 17791; "message_type" = 0; "prev_session_message_id" = 17790; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:13:31] [PUSH_EMBED_VC] Message 17791 already in memory - skipping [12:13:31] [PUSH] ⚑ Embedded message handled directly in ViewController [12:13:31] [PUSH] Parsed message_id: 17791 [12:13:31] [PUSH] Parsed operation_type: 0 [12:13:31] [PUSH] Taking direct action: opType=0, messageId=17791 [12:13:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17791 [12:13:31] [PUSH] ⚑ Message 17791 already in memory - skipping duplicate notification entirely [12:13:31] [PUSH_EMBED] Got evolution data for message 17791, saving to local DB [12:13:31] [PUSH_EMBED] Saved evolution data for message 17791 [12:13:31] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=71, first5Ids=[17791, 17790, 17789, 17788, 17787] [12:13:31] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17790 β†’ 17791 [12:13:31] [CLIENT_SIG] Event received: type=0 messageId=17791 [12:13:31] [WS_EVENT] Received event: type=0, messageId=17791 [12:13:31] [WS_EVENT] πŸ“¨ New message notification (msgId=17791) - triggering incremental refresh, currentMsgCount=71 [12:13:31] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=71 [12:13:31] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17791 [12:13:31] [INCREMENTAL_SYNC] βœ… No new messages [12:13:31] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=71 [12:13:31] [PUSH_EMBED] Got evolution data for message 17791, saving to local DB [12:13:31] [PUSH_EMBED] Saved evolution data for message 17791 [12:13:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:33] [PUSH] Silent push received [12:13:33] [PUSH_EMBED] No embedded message_data in notification [12:13:33] [PUSH] No embedded data, pre-loading messages from server [12:13:33] [PUSH_PRELOAD] Fetching messages for instant display cache [12:13:33] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:13:33] [PRELOAD_CACHE] Preserving 20 push-inserted messages: [17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:13:33] [PUSH_PRELOAD] ⚑ Pre-cached 70 messages for instant display (preserved 20 from push) [12:13:33] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:13:33] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17791, AnyHashable("aps"): { "content-available" = 1; }] [12:13:33] [PUSH] Parsed message_id: 17791 [12:13:33] [PUSH] Parsed operation_type: 3 [12:13:33] [PUSH] Taking direct action: opType=3, messageId=17791 [12:13:33] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17791 [12:13:33] [CLIENT_SIG] Event received: type=3 messageId=17791 [12:13:33] [WS_EVENT] Received event: type=3, messageId=17791 [12:13:33] [WS_EVENT] Read receipt for message 17791 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:13:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:43] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:13:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:44] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:13:44 +0000 - type: unknown, operation_type: 0, message_id: 17792, session_id: ILUIWU, state: 0 [12:13:44] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17792, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:43"; "file_name" = ""; message = "Just be honest\Ud83e\Udd2a\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17792; "message_type" = 0; "prev_session_message_id" = 17791; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:13:44] [PUSH] App active - suppressing notification UI, posting internal event [12:13:44] [PUSH_EMBED] πŸ“© Received embedded message: id=17792, type=0, sender=Esra [12:13:44] [PUSH_EMBED] βœ… Saved message 17792 to local DB (sync) [12:13:44] [PUSH_EMBED] Inserted message 17792 into existing cache (now 71 messages) [12:13:44] [PUSH_EMBED] Fetching evolution data for message 17792 in background [12:13:44] [PUSH_EMBED] βœ… Fully processed message 17792 [12:13:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17792, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:43"; "file_name" = ""; message = "Just be honest\Ud83e\Udd2a\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17792; "message_type" = 0; "prev_session_message_id" = 17791; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:13:44] [PUSH_EMBED_VC] Processing embedded message: id=17792, type=0, sender=Esra, prevId=17791 [12:13:44] [PUSH_EMBED_VC] Inserted message 17792 into allMessagesWithReadBy (now 72 messages) [12:13:44] [PUSH_EMBED_VC] βœ… Previous message 17791 exists in memory [12:13:44] [PUSH] ⚑ Embedded message handled directly in ViewController [12:13:44] [PUSH] Parsed message_id: 17792 [12:13:44] [PUSH] Parsed operation_type: 0 [12:13:44] [PUSH] Taking direct action: opType=0, messageId=17792 [12:13:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17792 [12:13:44] [PUSH] ⚑ Message 17792 already in memory - skipping duplicate notification entirely [12:13:44] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:13:44] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:13:44] [PUSH_UI] Message 17792 already in memory - skipping insert [12:13:44] [PUSH_EMBED_VC] Saved message 17792 to local DB [12:13:44] [PUSH] Silent push received [12:13:44] [PUSH_EMBED] πŸ“© Received embedded message: id=17792, type=0, sender=Esra [12:13:44] [PUSH_EMBED] βœ… Saved message 17792 to local DB (sync) [12:13:44] [PUSH_EMBED] Fetching evolution data for message 17792 in background [12:13:44] [PUSH_EMBED] βœ… Fully processed message 17792 [12:13:44] [PUSH] Embedded message handled instantly from silent push [12:13:44] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:13:44] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:13:44] [PUSH_UI] Message 17792 already in memory - skipping insert [12:13:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:13:43"; "file_name" = ""; message = "Just be honest\Ud83e\Udd2a\Ud83e\Udd2a\Ud83e\Udd2a"; "message_id" = 17792; "message_type" = 0; "prev_session_message_id" = 17791; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 17792, AnyHashable("session_id"): ILUIWU] [12:13:44] [PUSH_EMBED_VC] Message 17792 already in memory - skipping [12:13:44] [PUSH] ⚑ Embedded message handled directly in ViewController [12:13:44] [PUSH] Parsed message_id: 17792 [12:13:44] [PUSH] Parsed operation_type: 0 [12:13:44] [PUSH] Taking direct action: opType=0, messageId=17792 [12:13:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17792 [12:13:44] [PUSH] ⚑ Message 17792 already in memory - skipping duplicate notification entirely [12:13:44] [PUSH_EMBED] Got evolution data for message 17792, saving to local DB [12:13:44] [PUSH_EMBED] Saved evolution data for message 17792 [12:13:44] [PUSH_EMBED] Got evolution data for message 17792, saving to local DB [12:13:44] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=72, first5Ids=[17792, 17791, 17790, 17789, 17788] [12:13:44] [PUSH_EMBED] Saved evolution data for message 17792 [12:13:44] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17791 β†’ 17792 [12:13:45] [CLIENT_SIG] Event received: type=0 messageId=17792 [12:13:45] [WS_EVENT] Received event: type=0, messageId=17792 [12:13:45] [WS_EVENT] πŸ“¨ New message notification (msgId=17792) - triggering incremental refresh, currentMsgCount=72 [12:13:45] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=72 [12:13:45] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17792 [12:13:45] [INCREMENTAL_SYNC] βœ… No new messages [12:13:45] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=72 [12:13:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:46] [PUSH] Silent push received [12:13:46] [PUSH_EMBED] No embedded message_data in notification [12:13:46] [PUSH] No embedded data, pre-loading messages from server [12:13:46] [PUSH_PRELOAD] Fetching messages for instant display cache [12:13:46] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:13:46] [PRELOAD_CACHE] Preserving 21 push-inserted messages: [17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:13:46] [PUSH_PRELOAD] ⚑ Pre-cached 71 messages for instant display (preserved 21 from push) [12:13:46] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:13:46] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17792, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [12:13:46] [PUSH] Parsed message_id: 17792 [12:13:46] [PUSH] Parsed operation_type: 3 [12:13:46] [PUSH] Taking direct action: opType=3, messageId=17792 [12:13:46] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17792 [12:13:47] [CLIENT_SIG] Event received: type=3 messageId=17792 [12:13:47] [WS_EVENT] Received event: type=3, messageId=17792 [12:13:47] [WS_EVENT] Read receipt for message 17792 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:13:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:13:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:14] [iOS AUDIO] πŸ“Š 6500 audio packets sent [12:14:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:29] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:14:29] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=72, isReloading=false [12:14:29] [SEND_MESSAGE] βœ… Added optimistic message id=-13 to arrays, newMsgCount=73 [12:14:29] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=73, first5Ids=[-13, 17792, 17791, 17790, 17789] [12:14:29] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:14:29] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:14:30] [CLIENT_SIG] Event received: type=0 messageId=17793 [12:14:30] [WS_EVENT] Received event: type=0, messageId=17793 [12:14:30] [WS_EVENT] πŸ“¨ New message notification (msgId=17793) - triggering incremental refresh, currentMsgCount=73 [12:14:30] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=73 [12:14:30] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17792 [12:14:30] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17793,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:14:29"} [12:14:30] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 17793, "datesent_utc": 2026-01-15 11:14:29, "session_id": ILUIWU, "file_name": , "message_type": 0] [12:14:30] [DB_UPGRADE] Upgrading message ID: -13 β†’ 17793, preserveOriginalDate=false [12:14:30] [DB_UPGRADE] βœ… Upgraded -13 β†’ 17793 with send_status=0, 1 row(s) affected [12:14:30] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -13 β†’ 17793 [12:14:30] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -13 β†’ 17793 [12:14:30] ReloadData 9 [12:14:30] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:14:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:30] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:14:30] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=73 [12:14:30] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=73, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:14:32] [PUSH] Silent push received [12:14:32] [PUSH_EMBED] No embedded message_data in notification [12:14:32] [PUSH] No embedded data, pre-loading messages from server [12:14:32] [PUSH_PRELOAD] Fetching messages for instant display cache [12:14:32] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:14:32] [PRELOAD_CACHE] Preserving 22 push-inserted messages: [17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:14:32] [PUSH_PRELOAD] ⚑ Pre-cached 72 messages for instant display (preserved 22 from push) [12:14:32] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:14:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17793] [12:14:32] [PUSH] Parsed message_id: 17793 [12:14:32] [PUSH] Parsed operation_type: 3 [12:14:32] [PUSH] Taking direct action: opType=3, messageId=17793 [12:14:32] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17793 [12:14:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:33] [CLIENT_SIG] Event received: type=3 messageId=17793 [12:14:33] [WS_EVENT] Received event: type=3, messageId=17793 [12:14:33] [WS_EVENT] Read receipt for message 17793 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:14:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:55] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:14:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:14:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:02] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:15:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:03] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:15:04] [iOS AUDIO] πŸ“Š 7000 audio packets sent [12:15:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:14] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:15:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:16] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:15:16] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:15:16 +0000 - type: unknown, operation_type: 0, message_id: 17794, session_id: ILUIWU, state: 0 [12:15:16] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17794, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:15:14"; "file_name" = ""; message = "Babyyyy\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0"; "message_id" = 17794; "message_type" = 0; "prev_session_message_id" = 17793; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:15:16] [PUSH] App active - suppressing notification UI, posting internal event [12:15:16] [PUSH_EMBED] πŸ“© Received embedded message: id=17794, type=0, sender=Esra [12:15:16] [PUSH_EMBED] βœ… Saved message 17794 to local DB (sync) [12:15:16] [PUSH_EMBED] Inserted message 17794 into existing cache (now 73 messages) [12:15:16] [PUSH_EMBED] Fetching evolution data for message 17794 in background [12:15:16] [PUSH_EMBED] βœ… Fully processed message 17794 [12:15:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17794, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:15:14"; "file_name" = ""; message = "Babyyyy\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0"; "message_id" = 17794; "message_type" = 0; "prev_session_message_id" = 17793; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:15:16] [PUSH_EMBED_VC] Processing embedded message: id=17794, type=0, sender=Esra, prevId=17793 [12:15:16] [PUSH_EMBED_VC] Inserted message 17794 into allMessagesWithReadBy (now 74 messages) [12:15:16] [PUSH_EMBED_VC] βœ… Previous message 17793 exists in memory [12:15:16] [PUSH] ⚑ Embedded message handled directly in ViewController [12:15:16] [PUSH] Parsed message_id: 17794 [12:15:16] [PUSH] Parsed operation_type: 0 [12:15:16] [PUSH] Taking direct action: opType=0, messageId=17794 [12:15:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17794 [12:15:16] [PUSH] ⚑ Message 17794 already in memory - skipping duplicate notification entirely [12:15:16] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:15:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:15:16] [PUSH_UI] Message 17794 already in memory - skipping insert [12:15:16] [PUSH_EMBED_VC] Saved message 17794 to local DB [12:15:16] [PUSH] Silent push received [12:15:16] [PUSH_EMBED] πŸ“© Received embedded message: id=17794, type=0, sender=Esra [12:15:16] [PUSH_EMBED] βœ… Saved message 17794 to local DB (sync) [12:15:16] [PUSH_EMBED] Fetching evolution data for message 17794 in background [12:15:16] [PUSH_EMBED] βœ… Fully processed message 17794 [12:15:16] [PUSH] Embedded message handled instantly from silent push [12:15:16] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:15:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:15:16] [PUSH_UI] Message 17794 already in memory - skipping insert [12:15:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17794, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:15:14"; "file_name" = ""; message = "Babyyyy\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0\Ud83e\Udee0"; "message_id" = 17794; "message_type" = 0; "prev_session_message_id" = 17793; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:15:16] [PUSH_EMBED_VC] Message 17794 already in memory - skipping [12:15:16] [PUSH] ⚑ Embedded message handled directly in ViewController [12:15:16] [PUSH] Parsed message_id: 17794 [12:15:16] [PUSH] Parsed operation_type: 0 [12:15:16] [PUSH] Taking direct action: opType=0, messageId=17794 [12:15:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17794 [12:15:16] [PUSH] ⚑ Message 17794 already in memory - skipping duplicate notification entirely [12:15:16] [PUSH_EMBED] Got evolution data for message 17794, saving to local DB [12:15:16] [PUSH_EMBED] Saved evolution data for message 17794 [12:15:16] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=74, first5Ids=[17794, 17721, 17722, 17723, 17724] [12:15:16] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17793 β†’ 17794 [12:15:17] [CLIENT_SIG] Event received: type=0 messageId=17794 [12:15:17] [WS_EVENT] Received event: type=0, messageId=17794 [12:15:17] [WS_EVENT] πŸ“¨ New message notification (msgId=17794) - triggering incremental refresh, currentMsgCount=74 [12:15:17] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=74 [12:15:17] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17794 [12:15:17] [PUSH_EMBED] Got evolution data for message 17794, saving to local DB [12:15:17] [PUSH_EMBED] Saved evolution data for message 17794 [12:15:17] [INCREMENTAL_SYNC] βœ… No new messages [12:15:17] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=74 [12:15:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:18] [PUSH] Silent push received [12:15:18] [PUSH_EMBED] No embedded message_data in notification [12:15:18] [PUSH] No embedded data, pre-loading messages from server [12:15:18] [PUSH_PRELOAD] Fetching messages for instant display cache [12:15:18] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:15:18] [PRELOAD_CACHE] Preserving 23 push-inserted messages: [17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:15:18] [PUSH_PRELOAD] ⚑ Pre-cached 73 messages for instant display (preserved 23 from push) [12:15:18] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:15:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17794, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [12:15:18] [PUSH] Parsed message_id: 17794 [12:15:18] [PUSH] Parsed operation_type: 3 [12:15:18] [PUSH] Taking direct action: opType=3, messageId=17794 [12:15:18] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17794 [12:15:19] [CLIENT_SIG] Event received: type=3 messageId=17794 [12:15:19] [WS_EVENT] Received event: type=3, messageId=17794 [12:15:19] [WS_EVENT] Read receipt for message 17794 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:15:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:24] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:15:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:26] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:15:26 +0000 - type: unknown, operation_type: 0, message_id: 17795, session_id: ILUIWU, state: 0 [12:15:26] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:15:25"; "file_name" = ""; message = "Thank you thank you thank you \U2665\Ufe0f\U2665\Ufe0f"; "message_id" = 17795; "message_type" = 0; "prev_session_message_id" = 17794; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17795, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [12:15:26] [PUSH] App active - suppressing notification UI, posting internal event [12:15:26] [PUSH_EMBED] πŸ“© Received embedded message: id=17795, type=0, sender=Esra [12:15:26] [PUSH_EMBED] βœ… Saved message 17795 to local DB (sync) [12:15:26] [PUSH_EMBED] Inserted message 17795 into existing cache (now 74 messages) [12:15:26] [PUSH_EMBED] Fetching evolution data for message 17795 in background [12:15:26] [PUSH_EMBED] βœ… Fully processed message 17795 [12:15:26] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:15:25"; "file_name" = ""; message = "Thank you thank you thank you \U2665\Ufe0f\U2665\Ufe0f"; "message_id" = 17795; "message_type" = 0; "prev_session_message_id" = 17794; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17795, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [12:15:26] [PUSH_EMBED_VC] Processing embedded message: id=17795, type=0, sender=Esra, prevId=17794 [12:15:26] [PUSH_EMBED_VC] Inserted message 17795 into allMessagesWithReadBy (now 75 messages) [12:15:26] [PUSH_EMBED_VC] βœ… Previous message 17794 exists in memory [12:15:26] [PUSH] ⚑ Embedded message handled directly in ViewController [12:15:26] [PUSH] Parsed message_id: 17795 [12:15:26] [PUSH] Parsed operation_type: 0 [12:15:26] [PUSH] Taking direct action: opType=0, messageId=17795 [12:15:26] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17795 [12:15:26] [PUSH] ⚑ Message 17795 already in memory - skipping duplicate notification entirely [12:15:26] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:15:26] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:15:26] [PUSH_UI] Message 17795 already in memory - skipping insert [12:15:26] [PUSH_EMBED_VC] Saved message 17795 to local DB [12:15:26] [PUSH] Silent push received [12:15:26] [PUSH_EMBED] πŸ“© Received embedded message: id=17795, type=0, sender=Esra [12:15:26] [PUSH_EMBED] βœ… Saved message 17795 to local DB (sync) [12:15:26] [PUSH_EMBED] Fetching evolution data for message 17795 in background [12:15:26] [PUSH_EMBED] βœ… Fully processed message 17795 [12:15:26] [PUSH] Embedded message handled instantly from silent push [12:15:26] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:15:26] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:15:26] [PUSH_UI] Message 17795 already in memory - skipping insert [12:15:26] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:15:25"; "file_name" = ""; message = "Thank you thank you thank you \U2665\Ufe0f\U2665\Ufe0f"; "message_id" = 17795; "message_type" = 0; "prev_session_message_id" = 17794; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17795, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [12:15:26] [PUSH_EMBED_VC] Message 17795 already in memory - skipping [12:15:26] [PUSH] ⚑ Embedded message handled directly in ViewController [12:15:26] [PUSH] Parsed message_id: 17795 [12:15:26] [PUSH] Parsed operation_type: 0 [12:15:26] [PUSH] Taking direct action: opType=0, messageId=17795 [12:15:26] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17795 [12:15:26] [PUSH] ⚑ Message 17795 already in memory - skipping duplicate notification entirely [12:15:26] [PUSH_EMBED] Got evolution data for message 17795, saving to local DB [12:15:26] [PUSH_EMBED] Saved evolution data for message 17795 [12:15:26] [PUSH_EMBED] Got evolution data for message 17795, saving to local DB [12:15:26] [PUSH_EMBED] Saved evolution data for message 17795 [12:15:26] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=75, first5Ids=[17795, 17794, 17721, 17722, 17723] [12:15:26] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17794 β†’ 17795 [12:15:26] [CLIENT_SIG] Event received: type=0 messageId=17795 [12:15:26] [WS_EVENT] Received event: type=0, messageId=17795 [12:15:26] [WS_EVENT] πŸ“¨ New message notification (msgId=17795) - triggering incremental refresh, currentMsgCount=75 [12:15:26] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=75 [12:15:26] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17795 [12:15:26] [INCREMENTAL_SYNC] βœ… No new messages [12:15:26] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=75 [12:15:28] [PUSH] Silent push received [12:15:28] [PUSH_EMBED] No embedded message_data in notification [12:15:28] [PUSH] No embedded data, pre-loading messages from server [12:15:28] [PUSH_PRELOAD] Fetching messages for instant display cache [12:15:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:15:28] [PRELOAD_CACHE] Preserving 24 push-inserted messages: [17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:15:28] [PUSH_PRELOAD] ⚑ Pre-cached 74 messages for instant display (preserved 24 from push) [12:15:28] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:15:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17795, AnyHashable("aps"): { "content-available" = 1; }] [12:15:28] [PUSH] Parsed message_id: 17795 [12:15:28] [PUSH] Parsed operation_type: 3 [12:15:28] [PUSH] Taking direct action: opType=3, messageId=17795 [12:15:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17795 [12:15:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:29] [CLIENT_SIG] Event received: type=3 messageId=17795 [12:15:29] [WS_EVENT] Received event: type=3, messageId=17795 [12:15:29] [WS_EVENT] Read receipt for message 17795 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:15:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:54] [iOS AUDIO] πŸ“Š 7500 audio packets sent [12:15:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:15:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:25] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:16:25] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=75, isReloading=false [12:16:25] [SEND_MESSAGE] βœ… Added optimistic message id=-14 to arrays, newMsgCount=76 [12:16:25] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[-14, 17795, 17794, 17793, 17792] [12:16:25] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:16:25] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:16:26] [CLIENT_SIG] Event received: type=0 messageId=17796 [12:16:26] [WS_EVENT] Received event: type=0, messageId=17796 [12:16:26] [WS_EVENT] πŸ“¨ New message notification (msgId=17796) - triggering incremental refresh, currentMsgCount=76 [12:16:26] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=76 [12:16:26] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17795 [12:16:26] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17796,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:16:25"} [12:16:26] [CHAT] receive_message.php JSON: ["file_name": , "session_id": ILUIWU, "message_id": 17796, "message_type": 0, "datesent_utc": 2026-01-15 11:16:25, "ok": 1] [12:16:26] [DB_UPGRADE] Upgrading message ID: -14 β†’ 17796, preserveOriginalDate=false [12:16:26] [DB_UPGRADE] βœ… Upgraded -14 β†’ 17796 with send_status=0, 1 row(s) affected [12:16:26] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -14 β†’ 17796 [12:16:26] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -14 β†’ 17796 [12:16:26] ReloadData 9 [12:16:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:26] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:16:26] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:16:26] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=76 [12:16:26] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:16:27] [PUSH] Silent push received [12:16:27] [PUSH_EMBED] No embedded message_data in notification [12:16:27] [PUSH] No embedded data, pre-loading messages from server [12:16:27] [PUSH_PRELOAD] Fetching messages for instant display cache [12:16:27] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:16:27] [PRELOAD_CACHE] Preserving 25 push-inserted messages: [17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:16:27] [PUSH_PRELOAD] ⚑ Pre-cached 75 messages for instant display (preserved 25 from push) [12:16:27] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:16:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17796, AnyHashable("session_id"): ILUIWU] [12:16:27] [PUSH] Parsed message_id: 17796 [12:16:27] [PUSH] Parsed operation_type: 3 [12:16:27] [PUSH] Taking direct action: opType=3, messageId=17796 [12:16:27] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17796 [12:16:27] [CLIENT_SIG] Event received: type=3 messageId=17796 [12:16:27] [WS_EVENT] Received event: type=3, messageId=17796 [12:16:27] [WS_EVENT] Read receipt for message 17796 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:16:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:33] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:16:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:44] [iOS AUDIO] πŸ“Š 8000 audio packets sent [12:16:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:16:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:07] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:17:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:10] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:17:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:12] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:17:13] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:17:13 +0000 - type: unknown, operation_type: 0, message_id: 17797, session_id: ILUIWU, state: 0 [12:17:13] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:17:13"; "file_name" = ""; message = "Ha ha \Ud83e\Udd23 you are good at this, I got my kissess already \Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17797; "message_type" = 0; "prev_session_message_id" = 17796; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17797] [12:17:13] [PUSH] App active - suppressing notification UI, posting internal event [12:17:13] [PUSH_EMBED] πŸ“© Received embedded message: id=17797, type=0, sender=Esra [12:17:13] [PUSH_EMBED] βœ… Saved message 17797 to local DB (sync) [12:17:13] [PUSH_EMBED] Inserted message 17797 into existing cache (now 76 messages) [12:17:13] [PUSH_EMBED] Fetching evolution data for message 17797 in background [12:17:13] [PUSH_EMBED] βœ… Fully processed message 17797 [12:17:13] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:17:13"; "file_name" = ""; message = "Ha ha \Ud83e\Udd23 you are good at this, I got my kissess already \Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17797; "message_type" = 0; "prev_session_message_id" = 17796; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17797] [12:17:13] [PUSH_EMBED_VC] Processing embedded message: id=17797, type=0, sender=Esra, prevId=17796 [12:17:13] [PUSH_EMBED_VC] Inserted message 17797 into allMessagesWithReadBy (now 77 messages) [12:17:13] [PUSH_EMBED_VC] βœ… Previous message 17796 exists in memory [12:17:13] [PUSH] ⚑ Embedded message handled directly in ViewController [12:17:13] [PUSH] Parsed message_id: 17797 [12:17:13] [PUSH] Parsed operation_type: 0 [12:17:13] [PUSH] Taking direct action: opType=0, messageId=17797 [12:17:13] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17797 [12:17:13] [PUSH] ⚑ Message 17797 already in memory - skipping duplicate notification entirely [12:17:13] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:17:13] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:17:13] [PUSH_UI] Message 17797 already in memory - skipping insert [12:17:13] [PUSH_EMBED_VC] Saved message 17797 to local DB [12:17:13] [PUSH] Silent push received [12:17:13] [PUSH_EMBED] πŸ“© Received embedded message: id=17797, type=0, sender=Esra [12:17:14] [PUSH_EMBED] βœ… Saved message 17797 to local DB (sync) [12:17:14] [PUSH_EMBED] Fetching evolution data for message 17797 in background [12:17:14] [PUSH_EMBED] βœ… Fully processed message 17797 [12:17:14] [PUSH] Embedded message handled instantly from silent push [12:17:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:17:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:17:14] [PUSH_UI] Message 17797 already in memory - skipping insert [12:17:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17797, AnyHashable("message_data"): { datesent = "2026-01-15 11:17:13"; "file_name" = ""; message = "Ha ha \Ud83e\Udd23 you are good at this, I got my kissess already \Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 17797; "message_type" = 0; "prev_session_message_id" = 17796; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:17:14] [PUSH_EMBED_VC] Message 17797 already in memory - skipping [12:17:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:17:14] [PUSH] Parsed message_id: 17797 [12:17:14] [PUSH] Parsed operation_type: 0 [12:17:14] [PUSH] Taking direct action: opType=0, messageId=17797 [12:17:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17797 [12:17:14] [PUSH] ⚑ Message 17797 already in memory - skipping duplicate notification entirely [12:17:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:14] [PUSH_EMBED] Got evolution data for message 17797, saving to local DB [12:17:14] [PUSH_EMBED] Saved evolution data for message 17797 [12:17:14] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=77, first5Ids=[17797, 17721, 17722, 17723, 17724] [12:17:14] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17796 β†’ 17797 [12:17:14] [CLIENT_SIG] Event received: type=0 messageId=17797 [12:17:14] [WS_EVENT] Received event: type=0, messageId=17797 [12:17:14] [WS_EVENT] πŸ“¨ New message notification (msgId=17797) - triggering incremental refresh, currentMsgCount=77 [12:17:14] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=77 [12:17:14] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17797 [12:17:14] [PUSH_EMBED] Got evolution data for message 17797, saving to local DB [12:17:14] [PUSH_EMBED] Saved evolution data for message 17797 [12:17:14] [INCREMENTAL_SYNC] βœ… No new messages [12:17:14] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=77 [12:17:15] [PUSH] Silent push received [12:17:15] [PUSH_EMBED] No embedded message_data in notification [12:17:15] [PUSH] No embedded data, pre-loading messages from server [12:17:15] [PUSH_PRELOAD] Fetching messages for instant display cache [12:17:15] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:17:15] [PRELOAD_CACHE] Preserving 26 push-inserted messages: [17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:17:15] [PUSH_PRELOAD] ⚑ Pre-cached 76 messages for instant display (preserved 26 from push) [12:17:15] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:17:15] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17797, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [12:17:15] [PUSH] Parsed message_id: 17797 [12:17:15] [PUSH] Parsed operation_type: 3 [12:17:15] [PUSH] Taking direct action: opType=3, messageId=17797 [12:17:15] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17797 [12:17:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:16] [CLIENT_SIG] Event received: type=3 messageId=17797 [12:17:16] [WS_EVENT] Received event: type=3, messageId=17797 [12:17:16] [WS_EVENT] Read receipt for message 17797 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:17:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:34] [iOS AUDIO] πŸ“Š 8500 audio packets sent [12:17:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:17:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:52910 [12:18:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 52910 typ host generation 0 ufrag V06i network-id 5 ... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:61978 [12:18:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 61978 typ host generation 0 ufrag V06i network-id 8 ... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:61102 [12:18:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 61102 typ host generatio... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:57399 [12:18:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 57399 typ host generation... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:53980 [12:18:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53980 typ host generation... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:64623 [12:18:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 64623 typ host generation... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:62505 [12:18:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 62505 typ host generation ... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50526 [12:18:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50526 typ host tcptype passive generation 0 ufrag V06... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50540 [12:18:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50540 typ host tcptype passive generation 0 ufrag V06... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50554 [12:18:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50554 typ host tcptype p... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50558 [12:18:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50558 typ host tcptype pa... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50562 [12:18:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50562 typ host tcptype pa... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50566 [12:18:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50566 typ host tcptype pa... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50570 [12:18:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50570 typ host tcptype pas... [12:18:18] [ICE] remote host β†’ applying [12:18:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:18:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:24] [iOS AUDIO] πŸ“Š 9000 audio packets sent [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 51660 typ host generation 0 ufrag dg/c network-id 1 network-cost 50"] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 55475 typ host generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMLineIndex": 0] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 56463 typ host generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 65468 typ host generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0")] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 59688 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 51830 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0")] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 51198 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51203 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMLineIndex": 0] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51208 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMid": Optional("0")] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51213 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0")] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51218 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:18:25] [ICE] agent local host [12:18:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:18:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:18:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 51223 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:18:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:18:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:18:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:18:25] Found s:candidate:2017553473 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 61225 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:18:25] [ICE] remote host β†’ applying [12:18:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:18:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:18:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:18:25] Found s:candidate:3401237981 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49326 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:18:25] [ICE] remote host β†’ applying [12:18:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:18:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:18:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:18:26] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50602 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:18:26] [ICE] remote host β†’ applying [12:18:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:18:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:18:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:18:26] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50606 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:18:26] [ICE] remote host β†’ applying [12:18:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:34] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:18:34] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=77, isReloading=false [12:18:34] [SEND_MESSAGE] βœ… Added optimistic message id=-15 to arrays, newMsgCount=78 [12:18:34] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=78, first5Ids=[-15, 17797, 17796, 17795, 17794] [12:18:35] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:18:35] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:18:35] [CLIENT_SIG] Event received: type=0 messageId=17798 [12:18:35] [WS_EVENT] Received event: type=0, messageId=17798 [12:18:35] [WS_EVENT] πŸ“¨ New message notification (msgId=17798) - triggering incremental refresh, currentMsgCount=78 [12:18:35] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=78 [12:18:35] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17798,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:18:35"} [12:18:35] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17797 [12:18:35] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 17798, "message_type": 0, "datesent_utc": 2026-01-15 11:18:35, "file_name": , "session_id": ILUIWU] [12:18:35] [DB_UPGRADE] Upgrading message ID: -15 β†’ 17798, preserveOriginalDate=false [12:18:35] [DB_UPGRADE] βœ… Upgraded -15 β†’ 17798 with send_status=0, 1 row(s) affected [12:18:35] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -15 β†’ 17798 [12:18:35] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -15 β†’ 17798 [12:18:35] ReloadData 9 [12:18:36] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:18:36] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:18:36] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=78 [12:18:36] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=78, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:18:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:37] [PUSH] Silent push received [12:18:37] [PUSH_EMBED] No embedded message_data in notification [12:18:37] [PUSH] No embedded data, pre-loading messages from server [12:18:37] [PUSH_PRELOAD] Fetching messages for instant display cache [12:18:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:18:37] [PRELOAD_CACHE] Preserving 27 push-inserted messages: [17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:18:37] [PUSH_PRELOAD] ⚑ Pre-cached 77 messages for instant display (preserved 27 from push) [12:18:37] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:18:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17798, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }] [12:18:37] [PUSH] Parsed message_id: 17798 [12:18:37] [PUSH] Parsed operation_type: 3 [12:18:37] [PUSH] Taking direct action: opType=3, messageId=17798 [12:18:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17798 [12:18:37] [CLIENT_SIG] Event received: type=3 messageId=17798 [12:18:37] [WS_EVENT] Received event: type=3, messageId=17798 [12:18:37] [WS_EVENT] Read receipt for message 17798 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:18:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:18:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:14] [iOS AUDIO] πŸ“Š 9500 audio packets sent [12:19:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:19:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:04] [iOS AUDIO] πŸ“Š 10000 audio packets sent [12:20:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:54] [iOS AUDIO] πŸ“Š 10500 audio packets sent [12:20:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:20:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:44] [iOS AUDIO] πŸ“Š 11000 audio packets sent [12:21:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:21:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:31] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:22:33] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:22:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:34] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:22:34 +0000 - type: unknown, operation_type: 0, message_id: 17799, session_id: ILUIWU, state: 0 [12:22:34] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:22:32"; "file_name" = ""; message = "\U2763\Ufe0f"; "message_id" = 17799; "message_type" = 0; "prev_session_message_id" = 17798; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17799, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:22:34] [PUSH] App active - suppressing notification UI, posting internal event [12:22:34] [PUSH_EMBED] πŸ“© Received embedded message: id=17799, type=0, sender=Esra [12:22:34] [PUSH_EMBED] βœ… Saved message 17799 to local DB (sync) [12:22:34] [PUSH_EMBED] Inserted message 17799 into existing cache (now 78 messages) [12:22:34] [PUSH_EMBED] Fetching evolution data for message 17799 in background [12:22:34] [PUSH_EMBED] βœ… Fully processed message 17799 [12:22:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:22:32"; "file_name" = ""; message = "\U2763\Ufe0f"; "message_id" = 17799; "message_type" = 0; "prev_session_message_id" = 17798; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17799, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:22:34] [PUSH_EMBED_VC] Processing embedded message: id=17799, type=0, sender=Esra, prevId=17798 [12:22:34] [PUSH_EMBED_VC] Inserted message 17799 into allMessagesWithReadBy (now 79 messages) [12:22:34] [PUSH_EMBED_VC] βœ… Previous message 17798 exists in memory [12:22:34] [PUSH] ⚑ Embedded message handled directly in ViewController [12:22:34] [PUSH] Parsed message_id: 17799 [12:22:34] [PUSH] Parsed operation_type: 0 [12:22:34] [PUSH] Taking direct action: opType=0, messageId=17799 [12:22:34] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17799 [12:22:34] [PUSH] ⚑ Message 17799 already in memory - skipping duplicate notification entirely [12:22:34] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:22:34] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:22:34] [PUSH_UI] Message 17799 already in memory - skipping insert [12:22:34] [PUSH_EMBED_VC] Saved message 17799 to local DB [12:22:34] [PUSH] Silent push received [12:22:34] [PUSH_EMBED] πŸ“© Received embedded message: id=17799, type=0, sender=Esra [12:22:34] [PUSH_EMBED] βœ… Saved message 17799 to local DB (sync) [12:22:34] [PUSH_EMBED] Fetching evolution data for message 17799 in background [12:22:34] [PUSH_EMBED] βœ… Fully processed message 17799 [12:22:34] [PUSH] Embedded message handled instantly from silent push [12:22:34] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:22:34] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:22:34] [PUSH_UI] Message 17799 already in memory - skipping insert [12:22:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 11:22:32"; "file_name" = ""; message = "\U2763\Ufe0f"; "message_id" = 17799; "message_type" = 0; "prev_session_message_id" = 17798; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17799] [12:22:34] [PUSH_EMBED_VC] Message 17799 already in memory - skipping [12:22:34] [PUSH] ⚑ Embedded message handled directly in ViewController [12:22:34] [PUSH] Parsed message_id: 17799 [12:22:34] [PUSH] Parsed operation_type: 0 [12:22:34] [PUSH] Taking direct action: opType=0, messageId=17799 [12:22:34] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17799 [12:22:34] [PUSH] ⚑ Message 17799 already in memory - skipping duplicate notification entirely [12:22:34] [iOS AUDIO] πŸ“Š 11500 audio packets sent [12:22:34] [PUSH_EMBED] Got evolution data for message 17799, saving to local DB [12:22:34] [PUSH_EMBED] Saved evolution data for message 17799 [12:22:34] [PUSH_EMBED] Got evolution data for message 17799, saving to local DB [12:22:34] [PUSH_EMBED] Saved evolution data for message 17799 [12:22:34] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=79, first5Ids=[17799, 17721, 17722, 17723, 17724] [12:22:35] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17798 β†’ 17799 [12:22:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:35] [CLIENT_SIG] Event received: type=0 messageId=17799 [12:22:35] [WS_EVENT] Received event: type=0, messageId=17799 [12:22:35] [WS_EVENT] πŸ“¨ New message notification (msgId=17799) - triggering incremental refresh, currentMsgCount=79 [12:22:35] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=79 [12:22:35] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17799 [12:22:35] [INCREMENTAL_SYNC] βœ… No new messages [12:22:35] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=79 [12:22:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:37] [PUSH] Silent push received [12:22:37] [PUSH_EMBED] No embedded message_data in notification [12:22:37] [PUSH] No embedded data, pre-loading messages from server [12:22:37] [PUSH_PRELOAD] Fetching messages for instant display cache [12:22:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:22:37] [PRELOAD_CACHE] Preserving 28 push-inserted messages: [17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:22:37] [PUSH_PRELOAD] ⚑ Pre-cached 78 messages for instant display (preserved 28 from push) [12:22:37] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:22:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17799, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [12:22:37] [PUSH] Parsed message_id: 17799 [12:22:37] [PUSH] Parsed operation_type: 3 [12:22:37] [PUSH] Taking direct action: opType=3, messageId=17799 [12:22:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17799 [12:22:38] [CLIENT_SIG] Event received: type=3 messageId=17799 [12:22:38] [WS_EVENT] Received event: type=3, messageId=17799 [12:22:38] [WS_EVENT] Read receipt for message 17799 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:22:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:03] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt [12:23:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:12] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:14] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:14] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:23:14] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=79, isReloading=false [12:23:14] [SEND_MESSAGE] βœ… Added optimistic message id=-16 to arrays, newMsgCount=80 [12:23:14] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=80, first5Ids=[-16, 17799, 17798, 17797, 17796] [12:23:14] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:23:14] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:23:16] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:16] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17800,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:23:14"} [12:23:16] [CHAT] receive_message.php JSON: ["message_type": 0, "file_name": , "datesent_utc": 2026-01-15 11:23:14, "message_id": 17800, "ok": 1, "session_id": ILUIWU] [12:23:16] [DB_UPGRADE] Upgrading message ID: -16 β†’ 17800, preserveOriginalDate=false [12:23:16] [CLIENT_SIG] Event received: type=0 messageId=17800 [12:23:16] [WS_EVENT] Received event: type=0, messageId=17800 [12:23:16] [WS_EVENT] πŸ“¨ New message notification (msgId=17800) - triggering incremental refresh, currentMsgCount=80 [12:23:16] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=80 [12:23:16] [DB_UPGRADE] βœ… Upgraded -16 β†’ 17800 with send_status=0, 1 row(s) affected [12:23:16] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17800 [12:23:16] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -16 β†’ 17800 [12:23:16] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -16 β†’ 17800 [12:23:16] ReloadData 9 [12:23:16] [INCREMENTAL_SYNC] βœ… No new messages [12:23:16] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=80 [12:23:17] [PUSH] Silent push received [12:23:17] [PUSH_EMBED] No embedded message_data in notification [12:23:17] [PUSH] No embedded data, pre-loading messages from server [12:23:17] [PUSH_PRELOAD] Fetching messages for instant display cache [12:23:17] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:23:17] [PRELOAD_CACHE] Preserving 29 push-inserted messages: [17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:23:17] [PUSH_PRELOAD] ⚑ Pre-cached 79 messages for instant display (preserved 29 from push) [12:23:17] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:23:17] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17800, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU] [12:23:17] [PUSH] Parsed message_id: 17800 [12:23:17] [PUSH] Parsed operation_type: 3 [12:23:17] [PUSH] Taking direct action: opType=3, messageId=17800 [12:23:17] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17800 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:51429 [12:23:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 51429 typ host generation 0 ufrag V06i network-id 5 ... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:52164 [12:23:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 52164 typ host generation 0 ufrag V06i network-id 8 ... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:51699 [12:23:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 51699 typ host generatio... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:63357 [12:23:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 63357 typ host generation... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:62338 [12:23:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 62338 typ host generation... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50283 [12:23:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50283 typ host generation... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:49966 [12:23:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49966 typ host generation ... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50624 [12:23:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50624 typ host tcptype passive generation 0 ufrag V06... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50638 [12:23:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50638 typ host tcptype passive generation 0 ufrag V06... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50652 [12:23:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50652 typ host tcptype p... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50656 [12:23:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50656 typ host tcptype pa... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50660 [12:23:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50660 typ host tcptype pa... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50664 [12:23:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50664 typ host tcptype pa... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50668 [12:23:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50668 typ host tcptype pas... [12:23:18] [ICE] remote host β†’ applying [12:23:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:23:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:19] [CLIENT_SIG] Event received: type=3 messageId=17800 [12:23:19] [WS_EVENT] Received event: type=3, messageId=17800 [12:23:19] [WS_EVENT] Read receipt for message 17800 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:23:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:24] [iOS AUDIO] πŸ“Š 12000 audio packets sent [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 49261 typ host generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 58119 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 54102 typ host generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 55737 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 61760 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 51073 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 51254 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50", "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51259 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51264 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51269 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51274 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [ICE] agent local host [12:23:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:23:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:23:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 51279 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:23:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:23:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:23:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:23:25] Found s:candidate:2017553473 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 63060 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:23:25] [ICE] remote host β†’ applying [12:23:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:23:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:23:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:23:25] Found s:candidate:3401237981 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 49689 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:23:25] [ICE] remote host β†’ applying [12:23:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:23:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:23:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:23:26] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50700 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:23:26] [ICE] remote host β†’ applying [12:23:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:23:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:23:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:23:26] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50704 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:23:26] [ICE] remote host β†’ applying [12:23:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:28] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:23:28] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=80, isReloading=false [12:23:28] [SEND_MESSAGE] βœ… Added optimistic message id=-17 to arrays, newMsgCount=81 [12:23:28] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=81, first5Ids=[-17, 17800, 17799, 17798, 17797] [12:23:29] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:23:29] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:23:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:30] [CLIENT_SIG] Event received: type=0 messageId=17801 [12:23:30] [WS_EVENT] Received event: type=0, messageId=17801 [12:23:30] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17801,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:23:29"} [12:23:30] [WS_EVENT] πŸ“¨ New message notification (msgId=17801) - triggering incremental refresh, currentMsgCount=81 [12:23:30] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=81 [12:23:30] [CHAT] receive_message.php JSON: ["file_name": , "ok": 1, "session_id": ILUIWU, "message_id": 17801, "datesent_utc": 2026-01-15 11:23:29, "message_type": 0] [12:23:30] [DB_UPGRADE] Upgrading message ID: -17 β†’ 17801, preserveOriginalDate=false [12:23:30] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17800 [12:23:30] [DB_UPGRADE] βœ… Upgraded -17 β†’ 17801 with send_status=0, 1 row(s) affected [12:23:30] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -17 β†’ 17801 [12:23:30] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -17 β†’ 17801 [12:23:30] ReloadData 9 [12:23:30] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:23:30] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:23:30] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=81 [12:23:30] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=81, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:23:31] [PUSH] Silent push received [12:23:31] [PUSH_EMBED] No embedded message_data in notification [12:23:31] [PUSH] No embedded data, pre-loading messages from server [12:23:31] [PUSH_PRELOAD] Fetching messages for instant display cache [12:23:31] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:23:31] [PRELOAD_CACHE] Preserving 30 push-inserted messages: [17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:23:31] [PUSH_PRELOAD] ⚑ Pre-cached 80 messages for instant display (preserved 30 from push) [12:23:31] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:23:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17801, AnyHashable("session_id"): ILUIWU] [12:23:31] [PUSH] Parsed message_id: 17801 [12:23:31] [PUSH] Parsed operation_type: 3 [12:23:31] [PUSH] Taking direct action: opType=3, messageId=17801 [12:23:31] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17801 [12:23:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:33] [CLIENT_SIG] Event received: type=3 messageId=17801 [12:23:33] [WS_EVENT] Received event: type=3, messageId=17801 [12:23:33] [WS_EVENT] Read receipt for message 17801 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:23:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:23:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:14] [iOS AUDIO] πŸ“Š 12500 audio packets sent [12:24:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:18] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:20] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:24:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:04] [iOS AUDIO] πŸ“Š 13000 audio packets sent [12:25:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:22] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:24] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:24] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt [12:25:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:43] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:25:43] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=81, isReloading=false [12:25:43] [SEND_MESSAGE] βœ… Added optimistic message id=-18 to arrays, newMsgCount=82 [12:25:43] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=82, first5Ids=[-18, 17801, 17800, 17799, 17798] [12:25:43] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:25:43] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:25:44] [CLIENT_SIG] Event received: type=0 messageId=17802 [12:25:44] [WS_EVENT] Received event: type=0, messageId=17802 [12:25:44] [WS_EVENT] πŸ“¨ New message notification (msgId=17802) - triggering incremental refresh, currentMsgCount=82 [12:25:44] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=82 [12:25:44] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17801 [12:25:44] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17802,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:25:43"} [12:25:44] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "message_id": 17802, "file_name": , "message_type": 0, "datesent_utc": 2026-01-15 11:25:43, "ok": 1] [12:25:44] [DB_UPGRADE] Upgrading message ID: -18 β†’ 17802, preserveOriginalDate=false [12:25:44] [DB_UPGRADE] βœ… Upgraded -18 β†’ 17802 with send_status=0, 1 row(s) affected [12:25:44] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -18 β†’ 17802 [12:25:44] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -18 β†’ 17802 [12:25:44] ReloadData 9 [12:25:44] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:25:44] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:25:44] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=82 [12:25:44] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=82, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:25:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:45] [PUSH] Silent push received [12:25:45] [PUSH_EMBED] No embedded message_data in notification [12:25:45] [PUSH] No embedded data, pre-loading messages from server [12:25:45] [PUSH_PRELOAD] Fetching messages for instant display cache [12:25:45] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:25:45] [PRELOAD_CACHE] Preserving 31 push-inserted messages: [17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:25:45] [PUSH_PRELOAD] ⚑ Pre-cached 81 messages for instant display (preserved 31 from push) [12:25:45] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:25:45] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17802, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [12:25:45] [PUSH] Parsed message_id: 17802 [12:25:45] [PUSH] Parsed operation_type: 3 [12:25:45] [PUSH] Taking direct action: opType=3, messageId=17802 [12:25:45] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17802 [12:25:46] [CLIENT_SIG] Event received: type=3 messageId=17802 [12:25:46] [WS_EVENT] Received event: type=3, messageId=17802 [12:25:46] [WS_EVENT] Read receipt for message 17802 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:25:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:53] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:54] [iOS AUDIO] πŸ“Š 13500 audio packets sent [12:25:55] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:57] [WS AUDIO] Status: buffers=0/10, playing=true [12:25:58] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:25:59] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:34] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:26:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:36] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:26:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:44] [iOS AUDIO] πŸ“Š 14000 audio packets sent [12:26:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:49] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:26:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:51] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:26:51 +0000 - type: unknown, operation_type: 0, message_id: 17803, session_id: ILUIWU, state: 0 [12:26:51] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17803, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:26:50"; "file_name" = ""; message = "But if its an important one that you need to focus, you wouldn\U2019t connect \Ud83d\Ude0f I know youuu\Ud83e\Udd2d"; "message_id" = 17803; "message_type" = 0; "prev_session_message_id" = 17802; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:26:51] [PUSH] App active - suppressing notification UI, posting internal event [12:26:51] [PUSH_EMBED] πŸ“© Received embedded message: id=17803, type=0, sender=Esra [12:26:51] [PUSH_EMBED] βœ… Saved message 17803 to local DB (sync) [12:26:51] [PUSH_EMBED] Inserted message 17803 into existing cache (now 82 messages) [12:26:51] [PUSH_EMBED] Fetching evolution data for message 17803 in background [12:26:51] [PUSH_EMBED] βœ… Fully processed message 17803 [12:26:51] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17803, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:26:50"; "file_name" = ""; message = "But if its an important one that you need to focus, you wouldn\U2019t connect \Ud83d\Ude0f I know youuu\Ud83e\Udd2d"; "message_id" = 17803; "message_type" = 0; "prev_session_message_id" = 17802; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:26:51] [PUSH_EMBED_VC] Processing embedded message: id=17803, type=0, sender=Esra, prevId=17802 [12:26:51] [PUSH_EMBED_VC] Inserted message 17803 into allMessagesWithReadBy (now 83 messages) [12:26:51] [PUSH_EMBED_VC] βœ… Previous message 17802 exists in memory [12:26:51] [PUSH] ⚑ Embedded message handled directly in ViewController [12:26:51] [PUSH] Parsed message_id: 17803 [12:26:51] [PUSH] Parsed operation_type: 0 [12:26:51] [PUSH] Taking direct action: opType=0, messageId=17803 [12:26:51] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17803 [12:26:51] [PUSH] ⚑ Message 17803 already in memory - skipping duplicate notification entirely [12:26:51] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:26:51] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:26:51] [PUSH_UI] Message 17803 already in memory - skipping insert [12:26:51] [PUSH_EMBED_VC] Saved message 17803 to local DB [12:26:51] [PUSH] Silent push received [12:26:51] [PUSH_EMBED] πŸ“© Received embedded message: id=17803, type=0, sender=Esra [12:26:51] [PUSH_EMBED] βœ… Saved message 17803 to local DB (sync) [12:26:51] [PUSH_EMBED] Fetching evolution data for message 17803 in background [12:26:51] [PUSH_EMBED] βœ… Fully processed message 17803 [12:26:51] [PUSH] Embedded message handled instantly from silent push [12:26:51] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:26:51] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:26:51] [PUSH_UI] Message 17803 already in memory - skipping insert [12:26:51] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17803, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-15 11:26:50"; "file_name" = ""; message = "But if its an important one that you need to focus, you wouldn\U2019t connect \Ud83d\Ude0f I know youuu\Ud83e\Udd2d"; "message_id" = 17803; "message_type" = 0; "prev_session_message_id" = 17802; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:26:51] [PUSH_EMBED_VC] Message 17803 already in memory - skipping [12:26:51] [PUSH] ⚑ Embedded message handled directly in ViewController [12:26:51] [PUSH] Parsed message_id: 17803 [12:26:51] [PUSH] Parsed operation_type: 0 [12:26:51] [PUSH] Taking direct action: opType=0, messageId=17803 [12:26:51] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17803 [12:26:51] [PUSH] ⚑ Message 17803 already in memory - skipping duplicate notification entirely [12:26:51] [PUSH_EMBED] Got evolution data for message 17803, saving to local DB [12:26:51] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=83, first5Ids=[17803, 17721, 17722, 17723, 17724] [12:26:51] [PUSH_EMBED] Saved evolution data for message 17803 [12:26:51] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17802 β†’ 17803 [12:26:52] [CLIENT_SIG] Event received: type=0 messageId=17803 [12:26:52] [WS_EVENT] Received event: type=0, messageId=17803 [12:26:52] [WS_EVENT] πŸ“¨ New message notification (msgId=17803) - triggering incremental refresh, currentMsgCount=83 [12:26:52] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=83 [12:26:52] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17803 [12:26:52] [PUSH_EMBED] Got evolution data for message 17803, saving to local DB [12:26:52] [PUSH_EMBED] Saved evolution data for message 17803 [12:26:52] [INCREMENTAL_SYNC] βœ… No new messages [12:26:52] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=83 [12:26:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:53] [PUSH] Silent push received [12:26:53] [PUSH_EMBED] No embedded message_data in notification [12:26:53] [PUSH] No embedded data, pre-loading messages from server [12:26:53] [PUSH_PRELOAD] Fetching messages for instant display cache [12:26:53] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:26:53] [PRELOAD_CACHE] Preserving 32 push-inserted messages: [17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:26:53] [PUSH_PRELOAD] ⚑ Pre-cached 82 messages for instant display (preserved 32 from push) [12:26:53] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:26:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17803] [12:26:53] [PUSH] Parsed message_id: 17803 [12:26:53] [PUSH] Parsed operation_type: 3 [12:26:53] [PUSH] Taking direct action: opType=3, messageId=17803 [12:26:53] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17803 [12:26:54] [CLIENT_SIG] Event received: type=3 messageId=17803 [12:26:54] [WS_EVENT] Received event: type=3, messageId=17803 [12:26:54] [WS_EVENT] Read receipt for message 17803 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:26:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:26:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:01] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:03] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:05] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:07] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:34] [iOS AUDIO] πŸ“Š 14500 audio packets sent [12:27:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:27:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:11] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:28:11] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=83, isReloading=false [12:28:11] [SEND_MESSAGE] βœ… Added optimistic message id=-19 to arrays, newMsgCount=84 [12:28:11] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=84, first5Ids=[-19, 17803, 17802, 17801, 17800] [12:28:11] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:28:11] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:28:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:13] [CLIENT_SIG] Event received: type=0 messageId=17804 [12:28:13] [WS_EVENT] Received event: type=0, messageId=17804 [12:28:13] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17804,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:28:11"} [12:28:13] [WS_EVENT] πŸ“¨ New message notification (msgId=17804) - triggering incremental refresh, currentMsgCount=84 [12:28:13] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=84 [12:28:13] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "message_id": 17804, "file_name": , "ok": 1, "datesent_utc": 2026-01-15 11:28:11, "message_type": 0] [12:28:13] [DB_UPGRADE] Upgrading message ID: -19 β†’ 17804, preserveOriginalDate=false [12:28:13] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17803 [12:28:13] [DB_UPGRADE] βœ… Upgraded -19 β†’ 17804 with send_status=0, 1 row(s) affected [12:28:13] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -19 β†’ 17804 [12:28:13] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -19 β†’ 17804 [12:28:13] ReloadData 9 [12:28:13] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:28:13] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:28:13] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=84 [12:28:13] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=84, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:28:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:16] [PUSH] Silent push received [12:28:16] [PUSH_EMBED] No embedded message_data in notification [12:28:16] [PUSH] No embedded data, pre-loading messages from server [12:28:16] [PUSH_PRELOAD] Fetching messages for instant display cache [12:28:16] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:28:16] [PRELOAD_CACHE] Preserving 33 push-inserted messages: [17754, 17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:28:16] [PUSH_PRELOAD] ⚑ Pre-cached 83 messages for instant display (preserved 33 from push) [12:28:16] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:28:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17804, AnyHashable("operation_type"): 3] [12:28:16] [PUSH] Parsed message_id: 17804 [12:28:16] [PUSH] Parsed operation_type: 3 [12:28:16] [PUSH] Taking direct action: opType=3, messageId=17804 [12:28:16] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17804 [12:28:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:65295 [12:28:18] [ICE] Full: candidate:3889091200 1 udp 2121670399 192.0.0.6 65295 typ host generation 0 ufrag V06i network-id 5 ... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:55014 [12:28:18] [ICE] Full: candidate:3889091200 1 udp 2121604863 192.0.0.6 55014 typ host generation 0 ufrag V06i network-id 8 ... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:60731 [12:28:18] [ICE] Full: candidate:2104883444 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 60731 typ host generatio... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:63556 [12:28:18] [ICE] Full: candidate:1077462035 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 63556 typ host generation... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:59540 [12:28:18] [ICE] Full: candidate:1928785933 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 59540 typ host generation... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:58198 [12:28:18] [ICE] Full: candidate:1928785933 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 58198 typ host generation... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:52809 [12:28:18] [ICE] Full: candidate:2222906418 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 52809 typ host generation ... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50722 [12:28:18] [ICE] Full: candidate:425985556 1 tcp 1517690623 192.0.0.6 50722 typ host tcptype passive generation 0 ufrag V06... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:50736 [12:28:18] [ICE] Full: candidate:425985556 1 tcp 1517625087 192.0.0.6 50736 typ host tcptype passive generation 0 ufrag V06... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:50750 [12:28:18] [ICE] Full: candidate:2212441184 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50750 typ host tcptype p... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:50754 [12:28:18] [ICE] Full: candidate:3197243527 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50754 typ host tcptype pa... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50758 [12:28:18] [ICE] Full: candidate:2354848921 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50758 typ host tcptype pa... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:50762 [12:28:18] [ICE] Full: candidate:2354848921 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 50762 typ host tcptype pa... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:50766 [12:28:18] [ICE] Full: candidate:2060716198 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50766 typ host tcptype pas... [12:28:18] [ICE] remote host β†’ applying [12:28:18] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:28:18] [CLIENT_SIG] Event received: type=3 messageId=17804 [12:28:18] [WS_EVENT] Received event: type=3, messageId=17804 [12:28:18] [WS_EVENT] Read receipt for message 17804 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:28:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:24] [iOS AUDIO] πŸ“Š 15000 audio packets sent [12:28:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3849683114 1 udp 2122260223 172.20.10.1 56450 typ host generation 0 ufrag dg/c network-id 1 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 49682 typ host generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 49362 typ host generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 52079 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 49790 typ host generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121867007 10.27.13.80 59220 typ host generation 0 ufrag dg/c network-id 5 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:2612683314 1 tcp 1518280447 172.20.10.1 51310 typ host tcptype passive generation 0 ufrag dg/c network-id 1 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51315 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51320 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMLineIndex": 0] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51325 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51330 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:28:25] [ICE] agent local host [12:28:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:28:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:28:25] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:256267563 1 tcp 1517887231 10.27.13.80 51335 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50"] [12:28:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:28:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:28:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:28:25] Found s:candidate:2017553473 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 65273 typ host generation 0 ufrag HD+c network-id 13 network-cost 900 [12:28:25] [ICE] remote host β†’ applying [12:28:25] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:28:25] [CAM] Peer connection ready, processing ICE candidate immediately [12:28:25] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:28:25] Found s:candidate:3401237981 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 61499 typ host generation 0 ufrag HD+c network-id 2 network-cost 50 [12:28:25] [ICE] remote host β†’ applying [12:28:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:28:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:28:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:28:26] Found s:candidate:110005977 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 50798 typ host tcptype passive generation 0 ufrag HD+c network-id 13 network-cost 900 [12:28:26] [ICE] remote host β†’ applying [12:28:26] [CAM] iceFromViewer viewerId=eQasKL0O7-ZPA0uZ [12:28:26] [CAM] Peer connection ready, processing ICE candidate immediately [12:28:26] addRemoteCandidate for vid=eQasKL0O7-ZPA0uZ [12:28:26] Found s:candidate:3027576645 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 50802 typ host tcptype passive generation 0 ufrag HD+c network-id 2 network-cost 50 [12:28:26] [ICE] remote host β†’ applying [12:28:26] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:28:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:28:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:05] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:29:06] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:29:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:09] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:11] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:13] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:29:14] [iOS AUDIO] πŸ“Š 15500 audio packets sent [12:29:14] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:29:14 +0000 - type: unknown, operation_type: 0, message_id: 17805, session_id: ILUIWU, state: 0 [12:29:14] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17805, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:29:14"; "file_name" = ""; message = "Ha ha, agreee! But I need find a good one from your calendar \Ud83e\Udd13"; "message_id" = 17805; "message_type" = 0; "prev_session_message_id" = 17804; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:29:14] [PUSH] App active - suppressing notification UI, posting internal event [12:29:14] [PUSH_EMBED] πŸ“© Received embedded message: id=17805, type=0, sender=Esra [12:29:14] [PUSH_EMBED] βœ… Saved message 17805 to local DB (sync) [12:29:14] [PUSH_EMBED] Inserted message 17805 into existing cache (now 84 messages) [12:29:14] [PUSH_EMBED] Fetching evolution data for message 17805 in background [12:29:14] [PUSH_EMBED] βœ… Fully processed message 17805 [12:29:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 17805, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:29:14"; "file_name" = ""; message = "Ha ha, agreee! But I need find a good one from your calendar \Ud83e\Udd13"; "message_id" = 17805; "message_type" = 0; "prev_session_message_id" = 17804; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:29:14] [PUSH_EMBED_VC] Processing embedded message: id=17805, type=0, sender=Esra, prevId=17804 [12:29:14] [PUSH_EMBED_VC] Inserted message 17805 into allMessagesWithReadBy (now 85 messages) [12:29:14] [PUSH_EMBED_VC] βœ… Previous message 17804 exists in memory [12:29:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:29:14] [PUSH] Parsed message_id: 17805 [12:29:14] [PUSH] Parsed operation_type: 0 [12:29:14] [PUSH] Taking direct action: opType=0, messageId=17805 [12:29:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17805 [12:29:14] [PUSH] ⚑ Message 17805 already in memory - skipping duplicate notification entirely [12:29:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:29:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:29:14] [PUSH_UI] Message 17805 already in memory - skipping insert [12:29:14] [PUSH_EMBED_VC] Saved message 17805 to local DB [12:29:14] [PUSH] Silent push received [12:29:14] [PUSH_EMBED] πŸ“© Received embedded message: id=17805, type=0, sender=Esra [12:29:14] [PUSH_EMBED] βœ… Saved message 17805 to local DB (sync) [12:29:14] [PUSH_EMBED] Fetching evolution data for message 17805 in background [12:29:14] [PUSH_EMBED] βœ… Fully processed message 17805 [12:29:14] [PUSH] Embedded message handled instantly from silent push [12:29:14] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:29:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:29:14] [PUSH_UI] Message 17805 already in memory - skipping insert [12:29:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-15 11:29:14"; "file_name" = ""; message = "Ha ha, agreee! But I need find a good one from your calendar \Ud83e\Udd13"; "message_id" = 17805; "message_type" = 0; "prev_session_message_id" = 17804; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17805, AnyHashable("session_id"): ILUIWU] [12:29:14] [PUSH_EMBED_VC] Message 17805 already in memory - skipping [12:29:14] [PUSH] ⚑ Embedded message handled directly in ViewController [12:29:14] [PUSH] Parsed message_id: 17805 [12:29:14] [PUSH] Parsed operation_type: 0 [12:29:14] [PUSH] Taking direct action: opType=0, messageId=17805 [12:29:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17805 [12:29:14] [PUSH] ⚑ Message 17805 already in memory - skipping duplicate notification entirely [12:29:15] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=85, first5Ids=[17805, 17721, 17722, 17723, 17724] [12:29:15] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17804 β†’ 17805 [12:29:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:15] [CLIENT_SIG] Event received: type=0 messageId=17805 [12:29:15] [WS_EVENT] Received event: type=0, messageId=17805 [12:29:15] [WS_EVENT] πŸ“¨ New message notification (msgId=17805) - triggering incremental refresh, currentMsgCount=85 [12:29:15] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=85 [12:29:15] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17805 [12:29:15] [PUSH_EMBED] Got evolution data for message 17805, saving to local DB [12:29:15] [PUSH_EMBED] Saved evolution data for message 17805 [12:29:15] [PUSH_EMBED] Got evolution data for message 17805, saving to local DB [12:29:15] [PUSH_EMBED] Saved evolution data for message 17805 [12:29:15] [INCREMENTAL_SYNC] βœ… No new messages [12:29:15] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=85 [12:29:16] [PUSH] Silent push received [12:29:16] [PUSH_EMBED] No embedded message_data in notification [12:29:16] [PUSH] No embedded data, pre-loading messages from server [12:29:16] [PUSH_PRELOAD] Fetching messages for instant display cache [12:29:16] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:29:16] [PRELOAD_CACHE] Preserving 34 push-inserted messages: [17755, 17754, 17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:29:16] [PUSH_PRELOAD] ⚑ Pre-cached 84 messages for instant display (preserved 34 from push) [12:29:16] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:29:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17805, AnyHashable("aps"): { "content-available" = 1; }] [12:29:16] [PUSH] Parsed message_id: 17805 [12:29:16] [PUSH] Parsed operation_type: 3 [12:29:16] [PUSH] Taking direct action: opType=3, messageId=17805 [12:29:16] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17805 [12:29:16] [CLIENT_SIG] Event received: type=3 messageId=17805 [12:29:16] [WS_EVENT] Received event: type=3, messageId=17805 [12:29:16] [WS_EVENT] Read receipt for message 17805 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:29:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:42] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:43] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:29:43] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=85, isReloading=false [12:29:43] [SEND_MESSAGE] βœ… Added optimistic message id=-20 to arrays, newMsgCount=86 [12:29:43] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=86, first5Ids=[-20, 17805, 17804, 17803, 17802] [12:29:43] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:29:43] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:29:44] [CLIENT_SIG] Event received: type=0 messageId=17806 [12:29:44] [WS_EVENT] Received event: type=0, messageId=17806 [12:29:44] [WS_EVENT] πŸ“¨ New message notification (msgId=17806) - triggering incremental refresh, currentMsgCount=86 [12:29:44] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=86 [12:29:44] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17805 [12:29:44] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17806,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:29:43"} [12:29:44] [CHAT] receive_message.php JSON: ["ok": 1, "file_name": , "session_id": ILUIWU, "message_id": 17806, "datesent_utc": 2026-01-15 11:29:43, "message_type": 0] [12:29:44] [DB_UPGRADE] Upgrading message ID: -20 β†’ 17806, preserveOriginalDate=false [12:29:44] [DB_UPGRADE] βœ… Upgraded -20 β†’ 17806 with send_status=0, 1 row(s) affected [12:29:44] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -20 β†’ 17806 [12:29:44] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -20 β†’ 17806 [12:29:44] ReloadData 9 [12:29:44] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:29:44] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:29:44] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=86 [12:29:44] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:44] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=86, first5Ids=[17721, 17722, 17723, 17724, 17725] [12:29:46] [PUSH] Silent push received [12:29:46] [PUSH_EMBED] No embedded message_data in notification [12:29:46] [PUSH] No embedded data, pre-loading messages from server [12:29:46] [PUSH_PRELOAD] Fetching messages for instant display cache [12:29:46] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:46] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:29:46] [PRELOAD_CACHE] Preserving 35 push-inserted messages: [17756, 17755, 17754, 17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:29:46] [PUSH_PRELOAD] ⚑ Pre-cached 85 messages for instant display (preserved 35 from push) [12:29:46] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:29:46] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17806] [12:29:46] [PUSH] Parsed message_id: 17806 [12:29:46] [PUSH] Parsed operation_type: 3 [12:29:46] [PUSH] Taking direct action: opType=3, messageId=17806 [12:29:46] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17806 [12:29:48] [CLIENT_SIG] Event received: type=3 messageId=17806 [12:29:48] [WS_EVENT] Received event: type=3, messageId=17806 [12:29:48] [WS_EVENT] Read receipt for message 17806 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:29:48] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:50] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:51] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:29:52] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:29:58] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:00] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:30:00] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:02] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:02] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:30:02 +0000 - type: unknown, operation_type: 0, message_id: 17807, session_id: ILUIWU, state: 0 [12:30:02] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:30:00"; "file_name" = ""; message = "Deal \Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b"; "message_id" = 17807; "message_type" = 0; "prev_session_message_id" = 17806; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17807] [12:30:02] [PUSH] App active - suppressing notification UI, posting internal event [12:30:02] [PUSH_EMBED] πŸ“© Received embedded message: id=17807, type=0, sender=Esra [12:30:02] [PUSH_EMBED] βœ… Saved message 17807 to local DB (sync) [12:30:02] [PUSH_EMBED] Inserted message 17807 into existing cache (now 86 messages) [12:30:02] [PUSH_EMBED] Fetching evolution data for message 17807 in background [12:30:02] [PUSH_EMBED] βœ… Fully processed message 17807 [12:30:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:30:00"; "file_name" = ""; message = "Deal \Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b"; "message_id" = 17807; "message_type" = 0; "prev_session_message_id" = 17806; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 17807] [12:30:02] [PUSH_EMBED_VC] Processing embedded message: id=17807, type=0, sender=Esra, prevId=17806 [12:30:02] [PUSH_EMBED_VC] Inserted message 17807 into allMessagesWithReadBy (now 87 messages) [12:30:02] [PUSH_EMBED_VC] βœ… Previous message 17806 exists in memory [12:30:02] [PUSH] ⚑ Embedded message handled directly in ViewController [12:30:02] [PUSH] Parsed message_id: 17807 [12:30:02] [PUSH] Parsed operation_type: 0 [12:30:02] [PUSH] Taking direct action: opType=0, messageId=17807 [12:30:02] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17807 [12:30:02] [PUSH] ⚑ Message 17807 already in memory - skipping duplicate notification entirely [12:30:02] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:30:02] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:02] [PUSH_UI] Message 17807 already in memory - skipping insert [12:30:02] [PUSH_EMBED_VC] Saved message 17807 to local DB [12:30:02] [PUSH] Silent push received [12:30:02] [PUSH_EMBED] πŸ“© Received embedded message: id=17807, type=0, sender=Esra [12:30:02] [PUSH_EMBED] βœ… Saved message 17807 to local DB (sync) [12:30:02] [PUSH_EMBED] Fetching evolution data for message 17807 in background [12:30:02] [PUSH_EMBED] βœ… Fully processed message 17807 [12:30:02] [PUSH] Embedded message handled instantly from silent push [12:30:02] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:30:02] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:02] [PUSH_UI] Message 17807 already in memory - skipping insert [12:30:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-15 11:30:00"; "file_name" = ""; message = "Deal \Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b"; "message_id" = 17807; "message_type" = 0; "prev_session_message_id" = 17806; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17807] [12:30:02] [PUSH_EMBED_VC] Message 17807 already in memory - skipping [12:30:02] [PUSH] ⚑ Embedded message handled directly in ViewController [12:30:02] [PUSH] Parsed message_id: 17807 [12:30:02] [PUSH] Parsed operation_type: 0 [12:30:02] [PUSH] Taking direct action: opType=0, messageId=17807 [12:30:02] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17807 [12:30:02] [PUSH] ⚑ Message 17807 already in memory - skipping duplicate notification entirely [12:30:02] [PUSH] Silent push received [12:30:02] [PUSH_EMBED] πŸ“© Received embedded message: id=17807, type=0, sender=Esra [12:30:02] [PUSH_EMBED] βœ… Saved message 17807 to local DB (sync) [12:30:02] [PUSH_EMBED] Fetching evolution data for message 17807 in background [12:30:02] [PUSH_EMBED] βœ… Fully processed message 17807 [12:30:02] [PUSH] Embedded message handled instantly from silent push [12:30:02] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:30:02] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:02] [PUSH_UI] Message 17807 already in memory - skipping insert [12:30:02] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17807, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:30:00"; "file_name" = ""; message = "Deal \Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b\Ud83d\Ude3b"; "message_id" = 17807; "message_type" = 0; "prev_session_message_id" = 17806; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU] [12:30:02] [PUSH_EMBED_VC] Message 17807 already in memory - skipping [12:30:02] [PUSH] ⚑ Embedded message handled directly in ViewController [12:30:02] [PUSH] Parsed message_id: 17807 [12:30:02] [PUSH] Parsed operation_type: 0 [12:30:02] [PUSH] Taking direct action: opType=0, messageId=17807 [12:30:02] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17807 [12:30:02] [PUSH] ⚑ Message 17807 already in memory - skipping duplicate notification entirely [12:30:03] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=87, first5Ids=[17807, 17721, 17722, 17723, 17724] [12:30:03] [PUSH_EMBED] Got evolution data for message 17807, saving to local DB [12:30:03] [PUSH_EMBED] Saved evolution data for message 17807 [12:30:03] [PUSH_EMBED] Got evolution data for message 17807, saving to local DB [12:30:03] [PUSH_EMBED] Saved evolution data for message 17807 [12:30:03] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17806 β†’ 17807 [12:30:03] [CLIENT_SIG] Event received: type=0 messageId=17807 [12:30:03] [WS_EVENT] Received event: type=0, messageId=17807 [12:30:03] [WS_EVENT] πŸ“¨ New message notification (msgId=17807) - triggering incremental refresh, currentMsgCount=87 [12:30:03] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=87 [12:30:03] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17807 [12:30:03] [INCREMENTAL_SYNC] βœ… No new messages [12:30:03] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=87 [12:30:03] [PUSH_EMBED] Got evolution data for message 17807, saving to local DB [12:30:03] [PUSH_EMBED] Saved evolution data for message 17807 [12:30:04] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:04] [iOS AUDIO] πŸ“Š 16000 audio packets sent [12:30:05] [PUSH] Silent push received [12:30:05] [PUSH_EMBED] No embedded message_data in notification [12:30:05] [PUSH] No embedded data, pre-loading messages from server [12:30:05] [PUSH_PRELOAD] Fetching messages for instant display cache [12:30:06] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:30:06] [PRELOAD_CACHE] Preserving 36 push-inserted messages: [17757, 17756, 17755, 17754, 17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:30:06] [PUSH_PRELOAD] ⚑ Pre-cached 86 messages for instant display (preserved 36 from push) [12:30:06] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:30:06] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17807, AnyHashable("operation_type"): 3] [12:30:06] [PUSH] Parsed message_id: 17807 [12:30:06] [PUSH] Parsed operation_type: 3 [12:30:06] [PUSH] Taking direct action: opType=3, messageId=17807 [12:30:06] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17807 [12:30:06] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:07] [CLIENT_SIG] Event received: type=3 messageId=17807 [12:30:07] [WS_EVENT] Received event: type=3, messageId=17807 [12:30:07] [WS_EVENT] Read receipt for message 17807 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:30:08] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:10] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:13] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:15] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:17] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:19] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:21] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:23] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:25] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:27] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:29] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:31] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:33] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:35] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:35] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:30:35] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=87, isReloading=false [12:30:35] [SEND_MESSAGE] βœ… Added optimistic message id=-21 to arrays, newMsgCount=88 [12:30:35] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=88, first5Ids=[-21, 17807, 17806, 17805, 17804] [12:30:36] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:30:36] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:30:37] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:37] [CLIENT_SIG] Event received: type=0 messageId=17808 [12:30:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":17808,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:30:36"} [12:30:37] [WS_EVENT] Received event: type=0, messageId=17808 [12:30:37] [CHAT] receive_message.php JSON: ["ok": 1, "file_name": , "message_id": 17808, "message_type": 0, "session_id": ILUIWU, "datesent_utc": 2026-01-15 11:30:36] [12:30:37] [WS_EVENT] πŸ“¨ New message notification (msgId=17808) - triggering incremental refresh, currentMsgCount=88 [12:30:37] [DB_UPGRADE] Upgrading message ID: -21 β†’ 17808, preserveOriginalDate=false [12:30:37] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=88 [12:30:37] [DB_UPGRADE] βœ… Upgraded -21 β†’ 17808 with send_status=0, 1 row(s) affected [12:30:37] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17808 [12:30:37] [SEND_UPGRADE] βœ… Updated chatMessages[0].id: -21 β†’ 17808 [12:30:37] [SEND_UPGRADE] βœ… Updated allMessagesWithReadBy[0].id: -21 β†’ 17808 [12:30:37] ReloadData 9 [12:30:37] [INCREMENTAL_SYNC] βœ… No new messages [12:30:37] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=88 [12:30:39] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:40] [PUSH] Silent push received [12:30:40] [PUSH_EMBED] No embedded message_data in notification [12:30:40] [PUSH] No embedded data, pre-loading messages from server [12:30:40] [PUSH_PRELOAD] Fetching messages for instant display cache [12:30:40] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:30:40] [PRELOAD_CACHE] Preserving 37 push-inserted messages: [17758, 17757, 17756, 17755, 17754, 17753, 17752, 17751, 17750, 17749, 17748, 17747, 17746, 17745, 17744, 17743, 17742, 17741, 17740, 17739, 17738, 17737, 17736, 17735, 17734, 17733, 17732, 17731, 17730, 17729, 17728, 17727, 17726, 17725, 17724, 17723, 17722] [12:30:40] [PUSH_PRELOAD] ⚑ Pre-cached 87 messages for instant display (preserved 37 from push) [12:30:40] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:30:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17808, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [12:30:40] [PUSH] Parsed message_id: 17808 [12:30:40] [PUSH] Parsed operation_type: 3 [12:30:40] [PUSH] Taking direct action: opType=3, messageId=17808 [12:30:40] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17808 [12:30:41] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:42] [CLIENT_SIG] Event received: type=3 messageId=17808 [12:30:42] [WS_EVENT] Received event: type=3, messageId=17808 [12:30:42] [WS_EVENT] Read receipt for message 17808 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:30:43] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:45] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:47] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:49] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:51] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:54] [WS AUDIO] Status: buffers=0/10, playing=true [12:30:54] [iOS AUDIO] πŸ“Š 16500 audio packets sent [12:30:56] [WS AUDIO] Status: buffers=0/10, playing=true [12:31:44] [iOS AUDIO] πŸ“Š 17000 audio packets sent [12:32:34] [iOS AUDIO] πŸ“Š 17500 audio packets sent [12:33:18] [ICE] viewer local HOST #23: 10.27.13.80:54437 (udp) β†’ sent [12:33:18] [ICE] viewer local HOST #24: 10.27.13.80:50085 (udp) β†’ sent [12:33:18] [ICE] viewer local HOST #25: 10.27.13.80:59928 (udp) β†’ sent [12:33:18] [ICE] viewer local HOST #26: 10.27.13.80:54297 (udp) β†’ sent [12:33:18] [ICE] viewer local HOST #27: 10.27.13.80:54140 (udp) β†’ sent [12:33:18] [ICE] viewer local HOST #28: 10.27.13.80:51350 (tcp) β†’ sent [12:33:18] [ICE] viewer local HOST #29: 10.27.13.80:51365 (tcp) β†’ sent [12:33:18] [ICE] viewer local HOST #30: 10.27.13.80:51380 (tcp) β†’ sent [12:33:18] [ICE] viewer local HOST #31: 10.27.13.80:51395 (tcp) β†’ sent [12:33:18] [ICE] viewer local HOST #32: 10.27.13.80:51410 (tcp) β†’ sent [12:33:24] [iOS AUDIO] πŸ“Š 18000 audio packets sent [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122194687 10.27.13.80 62671 typ host generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 56710 typ host generation 0 ufrag dg/c network-id 2 network-cost 50"] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 62957 typ host generation 0 ufrag dg/c network-id 3 network-cost 50"] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 56899 typ host generation 0 ufrag dg/c network-id 4 network-cost 50"] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 62169 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518214911 10.27.13.80 51435 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51440 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51445 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51450 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMid": Optional("0")] [12:33:25] [ICE] agent local host [12:33:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:33:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:33:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51455 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0] [12:34:14] [iOS AUDIO] πŸ“Š 18500 audio packets sent [12:35:04] [iOS AUDIO] πŸ“Š 19000 audio packets sent [12:35:54] [iOS AUDIO] πŸ“Š 19500 audio packets sent [12:36:44] [iOS AUDIO] πŸ“Š 20000 audio packets sent [12:37:34] [iOS AUDIO] πŸ“Š 20500 audio packets sent [12:38:18] [ICE] viewer local HOST #33: 10.27.13.80:58809 (udp) β†’ sent [12:38:18] [ICE] viewer local HOST #34: 10.27.13.80:49456 (udp) β†’ sent [12:38:18] [ICE] viewer local HOST #35: 10.27.13.80:60862 (udp) β†’ sent [12:38:18] [ICE] viewer local HOST #36: 10.27.13.80:56448 (udp) β†’ sent [12:38:18] [ICE] viewer local HOST #37: 10.27.13.80:51779 (udp) β†’ sent [12:38:18] [ICE] viewer local HOST #38: 10.27.13.80:51470 (tcp) β†’ sent [12:38:18] [ICE] viewer local HOST #39: 10.27.13.80:51485 (tcp) β†’ sent [12:38:18] [ICE] viewer local HOST #40: 10.27.13.80:51500 (tcp) β†’ sent [12:38:18] [ICE] viewer local HOST #41: 10.27.13.80:51515 (tcp) β†’ sent [12:38:18] [ICE] viewer local HOST #42: 10.27.13.80:51530 (tcp) β†’ sent [12:38:24] [iOS AUDIO] πŸ“Š 21000 audio packets sent [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2122194687 10.27.13.80 61350 typ host generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2122129151 10.27.13.80 51869 typ host generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2122063615 10.27.13.80 60259 typ host generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121998079 10.27.13.80 52992 typ host generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:1904850867 1 udp 2121932543 10.27.13.80 63996 typ host generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518214911 10.27.13.80 51555 typ host tcptype passive generation 0 ufrag dg/c network-id 9 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518149375 10.27.13.80 51560 typ host tcptype passive generation 0 ufrag dg/c network-id 2 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518083839 10.27.13.80 51565 typ host tcptype passive generation 0 ufrag dg/c network-id 3 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1518018303 10.27.13.80 51570 typ host tcptype passive generation 0 ufrag dg/c network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:38:25] [ICE] agent local host [12:38:25] [ICE] local β†’ remote (eQasKL0O7-ZPA0uZ) host candidate [12:38:25] SEND ice for viewerId=eQasKL0O7-ZPA0uZ [12:38:25] Candidate: ["candidate": "candidate:256267563 1 tcp 1517952767 10.27.13.80 51575 typ host tcptype passive generation 0 ufrag dg/c network-id 5 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")] [12:39:14] [iOS AUDIO] πŸ“Š 21500 audio packets sent [12:40:04] [iOS AUDIO] πŸ“Š 22000 audio packets sent [12:40:53] [MENU] dismissAnyExistingMenu called [12:40:53] [MENU] dismissAnyExistingMenu completed [12:40:53] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:40:53] [MENU] Created button 'Copy' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:40:53] [MENU] Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:40:53] [MENU] Menu added to view - frame: (172.0, 487.2, 96.0, 105.59999999999997), userInteraction: true [12:40:53] [MENU] Menu has 5 subviews (buttons + separators) [12:40:54] [iOS AUDIO] πŸ“Š 22500 audio packets sent [12:40:55] [MENU] dismissMenu gesture triggered - tap on blur view [12:40:55] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:40:56] [MENU] dismissAnyExistingMenu called [12:40:56] [MENU] dismissAnyExistingMenu completed [12:40:56] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:40:56] [MENU] Created button 'Copy' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:40:56] [MENU] Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:40:56] [MENU] Menu added to view - frame: (172.0, 798.2, 96.0, 105.60000000000002), userInteraction: true [12:40:56] [MENU] Menu has 5 subviews (buttons + separators) [12:40:59] [MENU] dismissMenu gesture triggered - tap on blur view [12:40:59] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:41:00] [DOUBLE_TAP] Adding heart reaction to message 17807 [12:41:00] [DOUBLE_TAP] Action: add (alreadyReactedWithHeart: false) [12:41:02] [MENU] dismissAnyExistingMenu called [12:41:02] [MENU] dismissAnyExistingMenu completed [12:41:02] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:41:02] [MENU] Created button 'Copy' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:41:02] [MENU] Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:41:02] [MENU] Menu added to view - frame: (172.0, 601.2, 96.0, 105.60000000000002), userInteraction: true [12:41:02] [MENU] Menu has 5 subviews (buttons + separators) [12:41:07] [MENU] dismissMenu gesture triggered - tap on blur view [12:41:07] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:41:08] [MENU] dismissAnyExistingMenu called [12:41:08] [MENU] dismissAnyExistingMenu completed [12:41:09] [SCROLL_BTN] Showing button - 312pt from bottom > half 223pt [12:41:10] [TAP_REPLAY] πŸ”„ replayEvolutionAnimation called for messageId=17805 [12:41:10] [TAP_REPLAY] πŸ“¦ Found message: text.count=62, evolutionData.isEmpty=true [12:41:10] [TAP_REPLAY] πŸ“‘ No local evolution data - fetching from server [12:41:11] [MENU] dismissAnyExistingMenu called [12:41:11] [MENU] dismissAnyExistingMenu completed [12:41:11] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:41:11] [MENU] Created button 'Copy' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:41:11] [MENU] Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:41:11] [MENU] Menu added to view - frame: (172.0, 742.2, 96.0, 105.60000000000002), userInteraction: true [12:41:11] [MENU] Menu has 5 subviews (buttons + separators) [12:41:13] [MENU] dismissMenu gesture triggered - tap on blur view [12:41:13] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:41:14] [MENU] dismissAnyExistingMenu called [12:41:14] [MENU] dismissAnyExistingMenu completed [12:41:14] [SCROLL_BTN] Showing button - 391pt from bottom > half 379pt [12:41:15] [MENU] dismissAnyExistingMenu called [12:41:15] [MENU] dismissAnyExistingMenu completed [12:41:16] [MENU] dismissAnyExistingMenu called [12:41:16] [MENU] dismissAnyExistingMenu completed [12:41:16] [MENU] dismissAnyExistingMenu called [12:41:16] [MENU] dismissAnyExistingMenu completed [12:41:16] [MENU] dismissAnyExistingMenu called [12:41:16] [MENU] dismissAnyExistingMenu completed [12:41:17] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:17] [CELL_UPLOAD] β†’ not my message, setting complete [12:41:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:41:17] [MENU] dismissAnyExistingMenu called [12:41:17] [MENU] dismissAnyExistingMenu completed [12:41:18] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:18] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [12:41:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [12:41:18] [MENU] dismissAnyExistingMenu called [12:41:18] [MENU] dismissAnyExistingMenu completed [12:41:18] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:18] [CELL_UPLOAD] β†’ not my message, setting complete [12:41:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [12:41:19] [MENU] dismissAnyExistingMenu called [12:41:19] [MENU] dismissAnyExistingMenu completed [12:41:23] [LOG_GESTURE] handleLongPress called, state=1, isToday=true [12:41:23] [LOG_GESTURE] Long press on Today detected! Triggering log upload... [12:41:23] [LOG] Long-press on 'Today' detected - prompting for description [12:41:23] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:23] [CELL_UPLOAD] β†’ not my message, setting complete [12:41:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [12:41:23] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:23] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [12:41:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [12:41:23] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:41:23] [CELL_UPLOAD] β†’ not my message, setting complete [12:41:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:41:23] [LOG_GESTURE] handleLongPress called, state=4, isToday=true [12:41:30] [LOG] Uploading log as '2026-01-15-12-41-no-emojis.log' (724 KB) to server... [12:41:44] [iOS AUDIO] πŸ“Š 23000 audio packets sent [12:42:10] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-15 11:42:10 +0000 - type: unknown, operation_type: 0, message_id: 17809, session_id: ILUIWU, state: 0 [12:42:10] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 17809, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:42:08"; "file_name" = ""; message = "I need to be alone toooooooo"; "message_id" = 17809; "message_type" = 0; "prev_session_message_id" = 17808; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:42:10] [PUSH] App active - suppressing notification UI, posting internal event [12:42:10] [PUSH_EMBED] πŸ“© Received embedded message: id=17809, type=0, sender=Esra [12:42:10] [PUSH_EMBED] βœ… Saved message 17809 to local DB (sync) [12:42:10] [PUSH_EMBED] Created new cache with embedded message 17809 [12:42:10] [PUSH_EMBED] Fetching evolution data for message 17809 in background [12:42:10] [PUSH_EMBED] βœ… Fully processed message 17809 [12:42:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 17809, AnyHashable("operation_type"): 0, AnyHashable("message_data"): { datesent = "2026-01-15 11:42:08"; "file_name" = ""; message = "I need to be alone toooooooo"; "message_id" = 17809; "message_type" = 0; "prev_session_message_id" = 17808; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [12:42:10] [PUSH_EMBED_VC] Processing embedded message: id=17809, type=0, sender=Esra, prevId=17808 [12:42:10] [PUSH_EMBED_VC] Inserted message 17809 into allMessagesWithReadBy (now 89 messages) [12:42:10] [PUSH_EMBED_VC] βœ… Previous message 17808 exists in memory [12:42:10] [PUSH] ⚑ Embedded message handled directly in ViewController [12:42:10] [PUSH] Parsed message_id: 17809 [12:42:10] [PUSH] Parsed operation_type: 0 [12:42:10] [PUSH] Taking direct action: opType=0, messageId=17809 [12:42:10] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17809 [12:42:10] [PUSH] ⚑ Message 17809 already in memory - skipping duplicate notification entirely [12:42:10] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:42:10] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:42:10] [PUSH_UI] Message 17809 already in memory - skipping insert [12:42:10] [PUSH_EMBED_VC] Saved message 17809 to local DB [12:42:10] [PUSH] Silent push received [12:42:10] [PUSH_EMBED] πŸ“© Received embedded message: id=17809, type=0, sender=Esra [12:42:10] [PUSH_EMBED] βœ… Saved message 17809 to local DB (sync) [12:42:10] [PUSH_EMBED] Created new cache with embedded message 17809 [12:42:10] [PUSH_EMBED] Fetching evolution data for message 17809 in background [12:42:10] [PUSH_EMBED] βœ… Fully processed message 17809 [12:42:10] [PUSH] Embedded message handled instantly from silent push [12:42:10] [PUSH_UI] πŸ”” handlePushMessageReceived CALLED [12:42:10] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:42:10] [PUSH_UI] Message 17809 already in memory - skipping insert [12:42:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 17809, AnyHashable("message_data"): { datesent = "2026-01-15 11:42:08"; "file_name" = ""; message = "I need to be alone toooooooo"; "message_id" = 17809; "message_type" = 0; "prev_session_message_id" = 17808; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("session_id"): ILUIWU] [12:42:10] [PUSH_EMBED_VC] Message 17809 already in memory - skipping [12:42:10] [PUSH] ⚑ Embedded message handled directly in ViewController [12:42:10] [PUSH] Parsed message_id: 17809 [12:42:10] [PUSH] Parsed operation_type: 0 [12:42:10] [PUSH] Taking direct action: opType=0, messageId=17809 [12:42:10] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=17809 [12:42:10] [PUSH] ⚑ Message 17809 already in memory - skipping duplicate notification entirely [12:42:10] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=89, first5Ids=[17809, 17808, 17807, 17806, 17805] [12:42:10] [EVOLUTION_FILTER] πŸ“ Updated lastSeenMessageId after marking as read: 17808 β†’ 17809 [12:42:10] [TAP_REPLAY] ❌ Network error: The request timed out. [12:42:19] [PAGINATION] πŸ“œ Loading 12 older messages, firstVisibleRow=83, oldOffset=7562.0 [12:42:19] [PAGINATION] πŸ“œ Total now: 101 [12:42:19] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=101, first5Ids=[17709, 17710, 17711, 17712, 17713] [12:42:19] [PAGINATION] πŸ“œ newHeight=9331.0, heightDiff=1011.0, newOffset=8573.0 [12:42:19] [PAGINATION] πŸ“œ After setContentOffset, actual offset=8573.0 [12:42:19] [PAGINATION] πŸ“œ After main queue, offset=8573.0 [12:42:20] [PUSH_EMBED] Evolution fetch error: The request timed out. [12:42:20] [PUSH_EMBED] Evolution fetch error: The request timed out. [12:42:23] [LIFECYCLE] App resigning active - cleared crash flag [12:42:23] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [12:42:23] [SECURITY] Saved background timestamp [12:42:23] [LIFECYCLE] App entering background - cleared crash flag [12:42:23] [CLIENT_SIG] Disconnecting [12:42:23] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:42:23] [LIFECYCLE] Stopping camera broadcast due to background [12:42:23] [CAM] Disconnected from signaling server [12:42:23] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=0 [12:42:23] [WS] Canceling WebSocket for viewer connection to iosILUIWU [12:42:23] In cleanupPeer [12:42:23] In cleanupPeer [12:42:23] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0 [12:42:23] [WS] Canceling WebSocket for query connection to iosILUIWU [12:42:23] In cleanupPeer [12:42:23] In cleanupPeer [12:42:23] [LIFECYCLE] WebRTC audio disabled [12:42:24] [LIFECYCLE] AVAudioSession deactivated [12:42:24] [LIFECYCLE] All connections stopped [12:42:24] [CLIENT_SIG] WebSocket closed with code 1001 [12:42:24] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:42:24] Video capture stopped (audio still running) [12:42:24] [iOS AUDIO] Audio capture stopped [12:42:24] Capture stopped (video + audio) [12:42:24] ICE state for vid=eQasKL0O7-ZPA0uZ: 6 ( RTCIceConnectionState ) [12:42:24] Video capture stopped (audio still running) [12:42:24] Capture stopped (video + audio) [12:42:24] [WEBRTC] WebRTCClient deinit - timers cleaned up [12:42:24] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:24] WS closed [12:42:24] [SERVER] Stopped reconnect polling [12:42:24] [WS] WebSocket task completed with error - isQueryOnly=false: cancelled [12:42:24] [AGENT] Chat-only mode - keeping WebSocket open despite no agent [12:42:25] [CRASH] No crash detected [12:42:25] [LOG] Within rotation interval - preserving logs (51m until next clear) [12:42:25] [FONT] Roboto fonts loaded successfully: Roboto-Regular [12:42:25] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [12:42:25] [GIPHY] SDK not available - using REST API fallback [12:42:25] [BACKGROUND] Background fetch enabled [12:42:25] [CLEANUP] No old timer messages to delete [12:42:25] [SECURITY] Initial launch - within timeout (1.4926471710205078s < 300.0s) [12:42:25] [AUTH] Starting PIN authentication [12:42:25] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:42:25] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:42:25] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [12:42:25] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:42:25] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:42:25] [CLIENT_SIG] WebSocket opened [12:42:25] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:42:25] [CLIENT_SIG] Connected! clientId=wCcli_rIo7lbFYOF [12:42:25] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:42:25] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:42:25] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:42:25] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:42:25] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:42:25] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17809)... [12:42:25] [USER] βœ… User registered successfully [12:42:25] [PUSH] User registration after token update: success [12:42:25] [PRELOAD] No messages or parse error [12:42:26] [PIN_AUTH] Correct PIN [12:42:26] [SECURITY] Restored real session: ILUIWU [12:42:26] [SECURITY] Restored real session: ILUIWU [12:42:27] [SECURITY] Saved real session: ILUIWU [12:42:27] [SCENE] Launched directly to chat view with sessionId: ILUIWU [12:42:27] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:42:27] Documents Directory: /var/mobile/Containers/Data/Application/9C73AE76-3458-4026-8802-2E0A24181A0C/Documents [12:42:27] [UPLOAD_QUEUE] Found 0 pending uploads to resume [12:42:27] [THEME] Applying current theme [12:42:27] [CHAT] Applied day theme (mode: day) [12:42:27] [SECURITY] Saved real session: ILUIWU [12:42:27] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:42:27] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:42:27] [NETWORK] Network monitor started [12:42:27] [NETWORK] Status changed: connected [12:42:27] Did transition [12:42:27] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [12:42:27] [VIEWER] Screen lock enabled - normal idle behavior [12:42:27] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [12:42:27] [VCC] ========== VideoConnectionClass INIT ========== [12:42:27] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [12:42:27] [DATA AUDIO] ========== setupWebRTC() START ========== [12:42:27] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:42:27] [DATA AUDIO] Creating encoder/decoder factories... [12:42:27] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:42:27] [CODEC] Viewer selected encoder: AV1 (best quality) [12:42:27] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:42:27] [DATA AUDIO] βœ… Factory created [12:42:27] [DATA AUDIO] RTCAudioSession locked [12:42:27] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:42:27] [DATA AUDIO] RTCAudioSession unlocked [12:42:27] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:42:27] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:42:27] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:42:27] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:42:27] [QUERY] βœ… tempQueryConnection created for iosILUIWU [12:42:27] [VIEWER_INIT] Already have 50 messages - just filtering for tab [12:42:27] [EVENT_POLL] Event polling disabled - using WebSocket events instead [12:42:27] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [12:42:27] Did transition [12:42:27] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [12:42:27] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:42:27] [CHUNK] Merged 787 reactions synchronously [12:42:27] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:42:27] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [12:42:27] [MIGRATION] No messages need sender_name backfill [12:42:27] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:42:27] [GALLERY_DB] Raw datesent for msg 17752: '2026-01-15 10:47:04' [12:42:27] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [12:42:27] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [12:42:27] [USER] βœ… User registered successfully [12:42:27] [USER] User registration successful [12:42:27] [GALLERY_DB] βœ… Loaded 429 media messages [12:42:27] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17809 [12:42:27] [INCREMENTAL_SYNC] βœ… No new messages [12:42:27] [GALLERY] Filtered 429 -> 390 (only with local thumbnails) [12:42:27] [GALLERY] First 5 after sort (newest first): [12:42:27] [GALLERY] 0: id=17752, date=2026-01-15 10:47:04, file=c3ee2fbb5839abc5.jpg [12:42:27] [GALLERY] 1: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [12:42:27] [GALLERY] 2: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [12:42:27] [GALLERY] 3: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [12:42:27] [GALLERY] 4: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [12:42:27] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [12:42:27] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17760, 17761, 17762, 17763, 17764] [12:42:27] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [12:42:27] [SERVER] Starting reconnect polling (5s interval) [12:42:27] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [12:42:27] [ICONS] Offset applied: -14.6 [12:42:27] [ICONS] New left margin: 11.2, New right margin: 11.3 [12:42:27] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [12:42:27] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:42:27] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:42:27] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:42:27] [ICONS] Chat center: (31.2, 87.0) [12:42:27] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [12:42:27] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [12:42:27] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [12:42:27] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [12:42:27] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [12:42:27] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [12:42:27] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [12:42:27] [ICONS] Screen width: 440.0 [12:42:27] [PURGE] ⚠️ Media cache purge DISABLED for debugging [12:42:27] [UNSENT_RETRY] Checking for unsent messages... [12:42:27] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [12:42:27] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [12:42:27] [UPLOAD_RECOVERY] Session: ILUIWU [12:42:27] [UPLOAD_RECOVERY] βœ… No stuck uploads found [12:42:27] [UPLOAD_RECOVERY] Checking recent media messages on server... [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [12:42:27] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [12:42:27] [PENDING_UPLOAD] Total pending upload messages: 0 [12:42:27] [UNSENT_RETRY] No unsent messages found [12:42:27] new_session POST ok: token len=157 [12:42:27] HELLO β†’ sent (fetched token, role=query) [12:42:27] [SIG] hello_ok received for query connection - ready to query agents [12:42:27] [SIG] get_agents request sent for sessionId=ILUIWU [12:42:27] [SIG] get_agents request sent for sessionId=iosILUIWU [12:42:27] [SERVER] Stopped reconnect polling [12:42:27] [SIG] agents_list received: [["connected": 1, "agentId": WzYn1NFr9V9tP-d7, "sessionId": iosILUIWU]] [12:42:27] [SIG] agents_list received: [["sessionId": iosILUIWU, "connected": 1, "agentId": WzYn1NFr9V9tP-d7]] [12:42:27] [VCC] ========== VideoConnectionClass INIT ========== [12:42:27] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: WzYn1NFr9V9tP-d7 [12:42:27] [DATA AUDIO] ========== setupWebRTC() START ========== [12:42:27] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:42:27] [DATA AUDIO] Creating encoder/decoder factories... [12:42:27] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:42:27] [CODEC] Viewer selected encoder: AV1 (best quality) [12:42:27] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:42:27] [DATA AUDIO] βœ… Factory created [12:42:27] [DATA AUDIO] RTCAudioSession locked [12:42:27] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:42:27] [DATA AUDIO] RTCAudioSession unlocked [12:42:27] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:42:27] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:42:27] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:42:27] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:42:27] [UPLOAD_RECOVERY] βœ… All media files verified on server [12:42:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU [12:42:28] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:42:28] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:42:28] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:42:28] new_session POST ok: token len=157 [12:42:28] HELLO β†’ sent (fetched token, role=viewer) [12:42:28] [SIG] hello_ok received for viewer connection [12:42:28] [NEGO] ========== startNegotiation() BEGIN ========== [12:42:28] [NEGO] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:42:28] [NEGO] ICE profile step: 0, forceRelayOnly: false [12:42:28] [NEGO] Current ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:42:28] [ICE] ========== CREATING PEER CONNECTION (profile step 0) ========== [12:42:28] [ICE] ICE servers (2 entries): [12:42:28] [ICE] [0] stun:stun.l.google.com:19302 (no credentials) [12:42:28] [ICE] [1] turn:crivello.dyndns.org:3478?transport=udp (with credentials) [12:42:28] [ICE] [1] turn:crivello.dyndns.org:3478?transport=tcp (with credentials) [12:42:28] [ICE] [1] turns:crivello.dyndns.org:5349?transport=tcp (with credentials) [12:42:28] [ICE] Reset candidate counters for new connection attempt [12:42:28] peerConnectionShouldNegotiate β†’ starting negotiation [12:42:28] …ignored (busy) [12:42:28] [WS AUDIO] Skipping data channel - audio received via WebSocket [12:42:28] [WS AUDIO] Session: rate=48000.0Hz, buffer=20.0ms [12:42:28] [WS AUDIO] Mixer actual format: 48000.0Hz, 2ch [12:42:28] [WS AUDIO] ⚠️ Mixer mismatch - will convert 48kHz mono β†’ 48000.0Hz 2ch [12:42:28] [WS AUDIO] βœ… Created converter: 48kHz mono β†’ 48000.0Hz 2ch [12:42:28] [WS AUDIO] βœ… Audio player ready (max 10 buffers) [12:42:28] [WS AUDIO] βœ… Audio player initialized - ready to receive via WebSocket [12:42:28] [DATA AUDIO] ========== createPeerConnection() END ========== [12:42:28] Before peerconnection [12:42:28] agentOnline [12:42:28] Within peerconnection [12:42:28] OFFER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37"] [12:42:28] [WS AUDIO] First audio packet received: 9600 bytes (4800 samples, ~100ms) [12:42:28] [WS AUDIO] Status: buffers=0/10, playing=false [12:42:28] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:42:28] [ICE] local offer ufrag=6o0B [12:42:28] [NEGO] βœ… Offer sent successfully, waiting for answer... [12:42:28] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates [12:42:28] [SIG] agent_ready ignored - negotiation already active (inProgress=true, hasRemoteDesc=false, iceState=0) [12:42:28] [SIG] send offer ok [12:42:28] [ICE] Gathering state β†’ 1 (RTCIceGatheringState(rawValue: 1)) [12:42:28] [ICE] Gathering state GATHERING - started collecting ICE candidates (timeout: 6s) [12:42:28] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:42:28] [ICE] viewer local HOST #1: 10.56.51.84:61118 (udp) β†’ sent [12:42:28] [ICE] viewer local SRFLX #2: 194.230.158.50:50140 (udp) β†’ sent [12:42:28] [ICE] viewer local SRFLX #3: 194.230.158.50:62871 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #4: 10.27.13.80:54962 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #5: 10.27.13.80:61358 (udp) β†’ sent [12:42:28] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:42:28] [WS AUDIO] Starting playback with 3 buffers [12:42:28] [ICE] viewer local HOST #6: 10.27.13.80:58341 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #7: 10.27.13.80:55378 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #8: 10.27.13.80:57854 (udp) β†’ sent [12:42:28] [ICE] viewer local RELAY #9: 192.168.1.31:53195 (udp) β†’ sent βœ… [12:42:28] [ICE] viewer local HOST #10: 10.56.51.84:51652 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #11: 10.27.13.80:51653 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #12: 10.27.13.80:51654 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #13: 10.27.13.80:51655 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #14: 10.27.13.80:51656 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #15: 10.27.13.80:51657 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #16: 10.56.51.84:56930 (udp) β†’ sent [12:42:28] [ICE] viewer local SRFLX #17: 194.230.158.50:50142 (udp) β†’ sent [12:42:28] [ICE] viewer local SRFLX #18: 194.230.158.50:62874 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #19: 10.27.13.80:59766 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #20: 10.27.13.80:54684 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #21: 10.27.13.80:62114 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #22: 10.27.13.80:56234 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #23: 10.27.13.80:64769 (udp) β†’ sent [12:42:28] [ICE] viewer local HOST #24: 10.56.51.84:51658 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #25: 10.27.13.80:51659 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #26: 10.27.13.80:51660 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #27: 10.27.13.80:51661 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #28: 10.27.13.80:51662 (tcp) β†’ sent [12:42:28] [ICE] viewer local HOST #29: 10.27.13.80:51663 (tcp) β†’ sent [12:42:28] [ICE] viewer local RELAY #30: 192.168.1.31:53104 (udp) β†’ sent βœ… [12:42:28] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:42:28] [ICE] viewer local RELAY #31: 192.168.1.31:54500 (udp) β†’ sent βœ… [12:42:28] [ICE] viewer local RELAY #32: 192.168.1.31:54922 (udp) β†’ sent βœ… [12:42:28] [BROADCAST] Starting camera broadcast on session: iosILUIWU [12:42:28] Initing with camera 0 [12:42:28] [START] AgentController.start() called with session: iosILUIWU [12:42:28] [START] Cancelling any existing idle stop timer [12:42:28] [BROADCAST] Lightbulb shown at lower left, frame=(20.0, 800.0, 50.0, 50.0) [12:42:28] [SIG] ⬇️ Answer received from agent! [12:42:28] [SIG] Answer SDP length: 4817 bytes [12:42:28] [SIG] answer SDP length=4817 (attempt=1) [12:42:28] [SDP] ANSWER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109"] [12:42:28] [SDP] ANSWER rtpmap count: 26 [12:42:28] [SDP] ANSWER direction attributes: ["a=sendonly", "a=sendonly"] [12:42:28] [SIG] setRemoteDescription(begin) [attempt=1] [12:42:28] [ICE] πŸ” Connection state β†’ CHECKING [agentId=WzYn1NFr9V9tP-d7, sessionId=iosILUIWU] [12:42:28] [ICE] Current candidate stats: local=32, hasRelay=true, hasSrflx=true [12:42:28] didStartReceivingOn: kind=video id=04291993-806e-4536-8d2b-868658032990 direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:42:28] Setting up video track from transceiver: 04291993-806e-4536-8d2b-868658032990 [12:42:28] onReceiver: kind=video id=04291993-806e-4536-8d2b-868658032990 [12:42:28] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:42:28] [VIDEO] Video track 04291993-806e-4536-8d2b-868658032990 - handled by didStartReceivingOn for PiP [12:42:28] didStartReceivingOn: kind=video id=3ab69e0b-68aa-41f7-8b67-a7e8315b437f direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:42:28] Setting up video track from transceiver: 3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:28] onReceiver: kind=video id=3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:28] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:42:28] [VIDEO] Video track 3ab69e0b-68aa-41f7-8b67-a7e8315b437f - handled by didStartReceivingOn for PiP [12:42:28] [SIG] setRemoteDescription(done) [12:42:28] [DEBUG] Total transceivers: 2 [12:42:28] [DEBUG] Transceiver 0: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=04291993-806e-4536-8d2b-868658032990 [12:42:28] [DEBUG] βœ… Video transceiver has track: 04291993-806e-4536-8d2b-868658032990 [12:42:28] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:42:28] [DEBUG] Transceiver 1: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:28] [DEBUG] βœ… Video transceiver has track: 3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:28] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:42:28] [TRACK] Stored track in allVideoTracks (total: 1) [12:42:28] [TRACK] Adding main track to PiP overlay: 04291993-806e-4536-8d2b-868658032990 [12:42:28] stats entries: 21 [12:42:28] [PIP] βœ… PiP video view created [12:42:28] [PIP] Added track 04291993-806e-4536-8d2b-868658032990, total: 1 [12:42:28] [PIP] Now displaying track 04291993-806e-4536-8d2b-868658032990 (index 0) [12:42:28] [PIP] Now showing track: 04291993-806e-4536-8d2b-868658032990 [12:42:28] [PIP] βœ… Added track 04291993-806e-4536-8d2b-868658032990 to PiP, total tracks: 1 [12:42:28] [TRACK] βœ… Video track (main) routed to PiP [12:42:28] [TRACK] Stored track in allVideoTracks (total: 2) [12:42:28] [TRACK] Adding main track to PiP overlay: 3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:28] [PIP] Added track 3ab69e0b-68aa-41f7-8b67-a7e8315b437f, total: 2 [12:42:28] [PIP] βœ… Added track 3ab69e0b-68aa-41f7-8b67-a7e8315b437f to PiP, total tracks: 2 [12:42:28] [TRACK] βœ… Video track (main) routed to PiP [12:42:28] [COMBINED_FETCH] Loaded 6581 read receipts, 785 messages with reactions [12:42:28] [READBY_ENRICH] Enriched 50 messages with readBy data [12:42:28] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17760, 17761, 17762, 17763, 17764] [12:42:29] [PUSH] Silent push received [12:42:29] [PUSH_EMBED] No embedded message_data in notification [12:42:29] [PUSH] No embedded data, pre-loading messages from server [12:42:29] [PUSH_PRELOAD] Fetching messages for instant display cache [12:42:31] [MENU] dismissAnyExistingMenu called [12:42:31] [MENU] dismissAnyExistingMenu completed [12:42:33] [SCROLL_BTN] Showing button - 326pt from bottom > half 223pt [12:42:34] [ICE] Watchdog fired: gatheringState=1, iceConnectionState=1, candidateCount=32, hasRelay=true, hasSrflx=true [12:42:34] [ICE] Watchdog: skipping fallback - ICE connection is RTCIceConnectionState(rawValue: 1) (making progress) [12:42:38] [CAM] Disconnected from signaling server [12:42:38] WS send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=ws://crivello.dyndns.org:8081/, NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=ws://crivello.dyndns.org:8081/} [12:42:38] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:43] [CAM] Disconnected from signaling server [12:42:43] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:48] [CAM] Disconnected from signaling server [12:42:48] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:53] WS send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=ws://crivello.dyndns.org:8081/, NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=ws://crivello.dyndns.org:8081/} [12:42:53] [CAM] Disconnected from signaling server [12:42:53] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:54] [REPLY_DEBUG] πŸ“€ didTapSend - Sending message WITHOUT reply [12:42:54] [SEND_MESSAGE] πŸ“€ Sending message, currentMsgCount=50, isReloading=false [12:42:55] [SEND_MESSAGE] βœ… Added optimistic message id=-1 to arrays, newMsgCount=51 [12:42:55] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 17809, 17808, 17807, 17806] [12:42:55] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:42:55] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:42:58] [PIP] Now displaying track 3ab69e0b-68aa-41f7-8b67-a7e8315b437f (index 1) [12:42:58] [PIP] Now showing track: 3ab69e0b-68aa-41f7-8b67-a7e8315b437f [12:42:58] [CAM] Disconnected from signaling server [12:42:58] WS send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=ws://crivello.dyndns.org:8081/, NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=ws://crivello.dyndns.org:8081/} [12:42:58] [CAM] Disconnected from signaling server [12:42:58] [WEBRTC] βœ… Media teardown complete - camera stopped [12:42:59] [PIP] Now displaying track 04291993-806e-4536-8d2b-868658032990 (index 0) [12:42:59] [PIP] Now showing track: 04291993-806e-4536-8d2b-868658032990 [12:43:01] [MENU] dismissAnyExistingMenu called [12:43:01] [MENU] dismissAnyExistingMenu completed [12:43:01] [SCROLL_BTN] Showing button - 386pt from bottom > half 379pt [12:43:02] [MENU] dismissAnyExistingMenu called [12:43:02] [MENU] dismissAnyExistingMenu completed [12:43:02] [MENU] dismissAnyExistingMenu called [12:43:02] [MENU] dismissAnyExistingMenu completed [12:43:03] [CAM] Disconnected from signaling server [12:43:03] [WEBRTC] βœ… Media teardown complete - camera stopped [12:43:03] [MENU] dismissAnyExistingMenu called [12:43:03] [MENU] dismissAnyExistingMenu completed [12:43:04] [MENU] dismissAnyExistingMenu called [12:43:04] [MENU] dismissAnyExistingMenu completed [12:43:07] [MENU] dismissAnyExistingMenu called [12:43:07] [MENU] dismissAnyExistingMenu completed [12:43:07] [MENU] Created button 'Reply' at index 0, frame: (0.0, 0.0, 120.0, 44.0), userInteraction: true [12:43:07] [MENU] Created button 'Copy' at index 1, frame: (0.0, 44.0, 120.0, 44.0), userInteraction: true [12:43:07] [MENU] Created button 'Delete' at index 2, frame: (0.0, 88.0, 120.0, 44.0), userInteraction: true [12:43:07] [MENU] Menu added to view - frame: (172.0, 769.2, 96.0, 105.60000000000002), userInteraction: true [12:43:07] [MENU] Menu has 5 subviews (buttons + separators) [12:43:08] [MENU] dismissMenu gesture triggered - tap on blur view [12:43:08] [MENU] Dismissing menu (tap was on blur, outside menu area) [12:43:08] [CAM] Disconnected from signaling server [12:43:08] [WEBRTC] βœ… Media teardown complete - camera stopped [12:43:08] WS send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=ws://crivello.dyndns.org:8081/, NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=ws://crivello.dyndns.org:8081/} [12:43:08] [CAM] Disconnected from signaling server [12:43:08] [WEBRTC] βœ… Media teardown complete - camera stopped [12:43:09] [MENU] dismissAnyExistingMenu called [12:43:09] [MENU] dismissAnyExistingMenu completed [12:43:09] [CHAT] top pull-to-refresh triggered on tab 0 [12:43:09] [REFRESH_ALL] πŸ”„ refreshAllFromServer called from: pullToRefresh, currentMsgCount=51 [12:43:09] [REFRESH_ALL] πŸ“Έ Captured 51 message IDs before request [12:43:09] [REFRESH_ALL] πŸ“‘ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [12:43:13] [MENU] dismissAnyExistingMenu called [12:43:13] [MENU] dismissAnyExistingMenu completed [12:43:13] WS send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=ws://crivello.dyndns.org:8081/, NSLocalizedDescription=The request timed out., NSErrorFailingURLKey=ws://crivello.dyndns.org:8081/} [12:43:13] [CAM] Disconnected from signaling server [12:43:13] [WEBRTC] βœ… Media teardown complete - camera stopped [12:43:17] [LIFECYCLE] App resigning active - cleared crash flag [12:43:17] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [12:43:17] [SECURITY] Saved background timestamp [12:43:17] [LIFECYCLE] App entering background - cleared crash flag [12:43:17] [CLIENT_SIG] Disconnecting [12:43:17] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:43:17] [LIFECYCLE] Stopping camera broadcast due to background [12:43:17] [CAM] Disconnected from signaling server [12:43:17] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=0 [12:43:17] [WS] Canceling WebSocket for viewer connection to iosILUIWU [12:43:17] In cleanupPeer [12:43:17] In cleanupPeer [12:43:17] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0 [12:43:17] [WS] Canceling WebSocket for query connection to iosILUIWU [12:43:17] In cleanupPeer [12:43:17] In cleanupPeer [12:43:17] [LIFECYCLE] WebRTC audio disabled [12:43:18] [LIFECYCLE] AVAudioSession deactivated [12:43:18] [LIFECYCLE] All connections stopped [12:43:18] [CLIENT_SIG] WebSocket closed with code 1001 [12:43:18] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:43:18] [WEBRTC] βœ… Media teardown complete - camera stopped [12:43:18] [SERVER] Stopped reconnect polling [12:43:18] Will request stop of video 0 [12:43:18] [WS] WebSocket task completed with error - isQueryOnly=false: cancelled [12:43:20] [CRASH] No crash detected [12:43:20] [LOG] Within rotation interval - preserving logs (51m until next clear) [12:43:20] [FONT] Roboto fonts loaded successfully: Roboto-Regular [12:43:20] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [12:43:20] [GIPHY] SDK not available - using REST API fallback [12:43:20] [BACKGROUND] Background fetch enabled [12:43:20] [CLEANUP] No old timer messages to delete [12:43:20] [SECURITY] Initial launch - within timeout (3.105282783508301s < 300.0s) [12:43:20] [AUTH] Starting PIN authentication [12:43:20] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:43:20] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:43:20] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [12:43:21] [CLIENT_SIG] WebSocket opened [12:43:21] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:43:21] [CLIENT_SIG] Connected! clientId=B_j4AGd91JdCz8VH [12:43:21] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:43:21] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:43:21] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:43:21] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:43:21] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:43:21] [PUSH_DEBUG] 🟒 App became ACTIVE - resetting badges and triggering pollEventsNow [12:43:21] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:43:21] [USER] βœ… User registered successfully [12:43:21] [PUSH] User registration after token update: success [12:43:21] [PRELOAD] ⚑ Starting message pre-load during authentication (since_id=17809)... [12:43:21] [PRELOAD] No messages or parse error [12:43:22] [PIN_AUTH] Correct PIN [12:43:22] [SECURITY] Restored real session: ILUIWU [12:43:22] [SECURITY] Restored real session: ILUIWU [12:43:22] [SECURITY] Saved real session: ILUIWU [12:43:22] [SCENE] Launched directly to chat view with sessionId: ILUIWU [12:43:22] [AUDIO] βœ… Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:43:22] Documents Directory: /var/mobile/Containers/Data/Application/9C73AE76-3458-4026-8802-2E0A24181A0C/Documents [12:43:22] [UPLOAD_QUEUE] Found 0 pending uploads to resume [12:43:22] [THEME] Applying current theme [12:43:22] [CHAT] Applied day theme (mode: day) [12:43:22] [SECURITY] Saved real session: ILUIWU [12:43:22] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:43:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:43:22] [NETWORK] Network monitor started [12:43:22] [NETWORK] Status changed: connected [12:43:22] Did transition [12:43:22] [DB_SEND] πŸ“₯ Loaded msg id=-1 with send_status=1 (sending) [12:43:22] [MODE] πŸ” updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [12:43:22] [VIEWER] Screen lock enabled - normal idle behavior [12:43:22] [QUERY] πŸ” Creating query connection for iOS slave: iosILUIWU [12:43:22] [VCC] ========== VideoConnectionClass INIT ========== [12:43:22] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [12:43:22] [DATA AUDIO] ========== setupWebRTC() START ========== [12:43:22] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:43:22] [DATA AUDIO] Creating encoder/decoder factories... [12:43:22] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:43:22] [CODEC] Viewer selected encoder: AV1 (best quality) [12:43:22] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:43:22] [DATA AUDIO] βœ… Factory created [12:43:22] [DATA AUDIO] RTCAudioSession locked [12:43:22] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:43:22] [DATA AUDIO] RTCAudioSession unlocked [12:43:22] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:43:22] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:43:22] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:43:22] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:43:22] [QUERY] βœ… tempQueryConnection created for iosILUIWU [12:43:22] [VIEWER_INIT] Already have 50 messages - just filtering for tab [12:43:22] [EVENT_POLL] Event polling disabled - using WebSocket events instead [12:43:22] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [12:43:22] Did transition [12:43:22] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [12:43:22] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:43:22] [CHUNK] Merged 787 reactions synchronously [12:43:22] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:43:22] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [12:43:22] [MIGRATION] No messages need sender_name backfill [12:43:22] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:43:22] [GALLERY_DB] Raw datesent for msg 17752: '2026-01-15 10:47:04' [12:43:22] [GALLERY_DB] Raw datesent for msg 17739: '2026-01-15 08:42:20' [12:43:22] [GALLERY_DB] Raw datesent for msg 17738: '2026-01-15 08:22:37' [12:43:22] [USER] βœ… User registered successfully [12:43:22] [USER] User registration successful [12:43:22] [GALLERY_DB] βœ… Loaded 429 media messages [12:43:22] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17809 [12:43:22] [INCREMENTAL_SYNC] βœ… No new messages [12:43:22] [GALLERY] Filtered 429 -> 390 (only with local thumbnails) [12:43:22] [GALLERY] First 5 after sort (newest first): [12:43:22] [GALLERY] 0: id=17752, date=2026-01-15 10:47:04, file=c3ee2fbb5839abc5.jpg [12:43:22] [GALLERY] 1: id=17739, date=2026-01-15 08:42:20, file=cd7d50cf024abd2a.jpg [12:43:22] [GALLERY] 2: id=17738, date=2026-01-15 08:22:37, file=d77fdc187ac423b2.jpg [12:43:22] [GALLERY] 3: id=17696, date=2026-01-14 16:15:21, file=674206d67fc0fa03.jpg [12:43:22] [GALLERY] 4: id=17689, date=2026-01-14 15:10:33, file=025d163f85a5c538.jpg [12:43:22] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [12:43:22] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17761, 17762, 17763, 17764, 17765] [12:43:22] [EMOJI] βœ… Loaded 451 emoji-to-GIF mappings [12:43:22] [SERVER] Starting reconnect polling (5s interval) [12:43:22] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [12:43:22] [ICONS] Offset applied: -14.6 [12:43:22] [ICONS] New left margin: 11.2, New right margin: 11.3 [12:43:22] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [12:43:22] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:43:22] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:43:22] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:43:22] [ICONS] Chat center: (31.2, 87.0) [12:43:22] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [12:43:22] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [12:43:22] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [12:43:22] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [12:43:22] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [12:43:22] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [12:43:22] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [12:43:22] [ICONS] Screen width: 440.0 [12:43:22] [PURGE] ⚠️ Media cache purge DISABLED for debugging [12:43:22] [UNSENT_RETRY] Checking for unsent messages... [12:43:22] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [12:43:22] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [12:43:22] [UPLOAD_RECOVERY] Session: ILUIWU [12:43:22] [UPLOAD_RECOVERY] βœ… No stuck uploads found [12:43:22] [UPLOAD_RECOVERY] Checking recent media messages on server... [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17739, file=cd7d50cf024abd2a.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17696, file=674206d67fc0fa03.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17687, file=67c77e91dc086f47.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17664, file=8a1b4fb11ea64c53.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17639, file=ceaa5688dd6bf7e9.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17611, file=999c5a9ae1fc9a20.jpg, upload_status=complete [12:43:22] [UPLOAD_RECOVERY] πŸ“‹ Recent media: msgId=17575, file=ef6511753efeb18a.jpg, upload_status=complete [12:43:23] [UPLOAD_RECOVERY] Verifying 7 media files exist on server... [12:43:23] [PENDING_UPLOAD] Found pending message: id=-1, file=, uploadStatus=0, sendStatus=1 [12:43:23] [PENDING_UPLOAD] Total pending upload messages: 1 [12:43:23] [UNSENT_RETRY] πŸ”„ Found 1 unsent messages from me to retry [12:43:23] [UNSENT_RETRY] πŸ”„ Retrying message id=-1, type=0, file= [12:43:23] [SEND_STATUS] πŸ’Ύ Updating DB: messageId=-1, status=1 (sending) [12:43:23] [SEND_STATUS] βœ… DB updated: 1 row(s) affected for messageId=-1 [12:43:23] [UNSENT_RETRY] πŸ”‘ Including client_message_id=5CB84F06-CB93-487F-8550-076A4C599B5D for idempotent retry [12:43:23] [UNSENT_RETRY] πŸ“€ Sending message id=-1 to server [12:43:23] new_session POST ok: token len=157 [12:43:23] HELLO β†’ sent (fetched token, role=query) [12:43:23] [SIG] hello_ok received for query connection - ready to query agents [12:43:23] [SIG] get_agents request sent for sessionId=ILUIWU [12:43:23] [SIG] get_agents request sent for sessionId=iosILUIWU [12:43:23] [SERVER] Stopped reconnect polling [12:43:23] [UPLOAD_RECOVERY] βœ… All media files verified on server [12:43:23] [SIG] agents_list received: [["agentId": WzYn1NFr9V9tP-d7, "connected": 1, "sessionId": iosILUIWU]] [12:43:23] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": WzYn1NFr9V9tP-d7]] [12:43:23] [VCC] ========== VideoConnectionClass INIT ========== [12:43:23] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: WzYn1NFr9V9tP-d7 [12:43:23] [DATA AUDIO] ========== setupWebRTC() START ========== [12:43:23] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [12:43:23] [DATA AUDIO] Creating encoder/decoder factories... [12:43:23] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [12:43:23] [CODEC] Viewer selected encoder: AV1 (best quality) [12:43:23] [DATA AUDIO] Creating RTCPeerConnectionFactory... [12:43:23] [DATA AUDIO] βœ… Factory created [12:43:23] [DATA AUDIO] RTCAudioSession locked [12:43:23] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [12:43:23] [DATA AUDIO] RTCAudioSession unlocked [12:43:23] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [12:43:23] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:43:23] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [12:43:23] [WS] Opening session at ws://crivello.dyndns.org:8081/ [12:43:23] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU [12:43:23] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:43:23] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [12:43:23] Token POST β†’ https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [12:43:23] new_session POST ok: token len=157 [12:43:23] HELLO β†’ sent (fetched token, role=viewer) [12:43:23] [SIG] hello_ok received for viewer connection [12:43:23] [NEGO] ========== startNegotiation() BEGIN ========== [12:43:23] [NEGO] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:43:23] [NEGO] ICE profile step: 0, forceRelayOnly: false [12:43:23] [NEGO] Current ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [12:43:23] [ICE] ========== CREATING PEER CONNECTION (profile step 0) ========== [12:43:23] [ICE] ICE servers (2 entries): [12:43:23] [ICE] [0] stun:stun.l.google.com:19302 (no credentials) [12:43:23] [ICE] [1] turn:crivello.dyndns.org:3478?transport=udp (with credentials) [12:43:23] [ICE] [1] turn:crivello.dyndns.org:3478?transport=tcp (with credentials) [12:43:23] [ICE] [1] turns:crivello.dyndns.org:5349?transport=tcp (with credentials) [12:43:23] [ICE] Reset candidate counters for new connection attempt [12:43:23] peerConnectionShouldNegotiate β†’ starting negotiation [12:43:23] …ignored (busy) [12:43:23] [WS AUDIO] Skipping data channel - audio received via WebSocket [12:43:23] [WS AUDIO] Session: rate=48000.0Hz, buffer=20.0ms [12:43:24] [WS AUDIO] Mixer actual format: 48000.0Hz, 2ch [12:43:24] [WS AUDIO] ⚠️ Mixer mismatch - will convert 48kHz mono β†’ 48000.0Hz 2ch [12:43:24] [WS AUDIO] βœ… Created converter: 48kHz mono β†’ 48000.0Hz 2ch [12:43:24] [WS AUDIO] βœ… Audio player ready (max 10 buffers) [12:43:24] [WS AUDIO] βœ… Audio player initialized - ready to receive via WebSocket [12:43:24] [DATA AUDIO] ========== createPeerConnection() END ========== [12:43:24] Before peerconnection [12:43:24] agentOnline [12:43:24] Within peerconnection [12:43:24] OFFER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109 37"] [12:43:24] [MENU] dismissAnyExistingMenu called [12:43:24] [ICE] local offer ufrag=5r33 [12:43:24] [MENU] dismissAnyExistingMenu completed [12:43:24] [NEGO] βœ… Offer sent successfully, waiting for answer... [12:43:24] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates [12:43:24] [ICE] Gathering state β†’ 1 (RTCIceGatheringState(rawValue: 1)) [12:43:24] [ICE] Gathering state GATHERING - started collecting ICE candidates (timeout: 6s) [12:43:24] [ICE] viewer local HOST #1: 10.56.51.84:52764 (udp) β†’ sent [12:43:24] [ICE] viewer local SRFLX #2: 194.230.158.50:50151 (udp) β†’ sent [12:43:24] [ICE] viewer local SRFLX #3: 194.230.158.50:62881 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #4: 10.27.13.80:56102 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #5: 10.27.13.80:50828 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #6: 10.27.13.80:61737 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #7: 10.27.13.80:61746 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #8: 10.27.13.80:53764 (udp) β†’ sent [12:43:24] [ICE] viewer local RELAY #9: 192.168.1.31:50591 (udp) β†’ sent βœ… [12:43:24] [ICE] viewer local RELAY #10: 192.168.1.31:65160 (udp) β†’ sent βœ… [12:43:24] [ICE] viewer local HOST #11: 10.56.51.84:51760 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #12: 10.27.13.80:51761 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #13: 10.27.13.80:51762 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #14: 10.27.13.80:51763 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #15: 10.27.13.80:51764 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #16: 10.27.13.80:51765 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #17: 10.56.51.84:63238 (udp) β†’ sent [12:43:24] [ICE] viewer local SRFLX #18: 194.230.158.50:50149 (udp) β†’ sent [12:43:24] [ICE] viewer local SRFLX #19: 194.230.158.50:62879 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #20: 10.27.13.80:64002 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #21: 10.27.13.80:57731 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #22: 10.27.13.80:56456 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #23: 10.27.13.80:65326 (udp) β†’ sent [12:43:24] [ICE] viewer local HOST #24: 10.27.13.80:57114 (udp) β†’ sent [12:43:24] [ICE] viewer local RELAY #25: 192.168.1.31:58033 (udp) β†’ sent βœ… [12:43:24] [CLIENT_SIG] Event received: type=0 messageId=17810 [12:43:24] [ICE] viewer local RELAY #26: 192.168.1.31:51662 (udp) β†’ sent βœ… [12:43:24] [WS_EVENT] Received event: type=0, messageId=17810 [12:43:24] [WS_EVENT] πŸ“¨ New message notification (msgId=17810) - triggering incremental refresh, currentMsgCount=50 [12:43:24] [ICE] viewer local HOST #27: 10.56.51.84:51766 (tcp) β†’ sent [12:43:24] [INCREMENTAL_SYNC] πŸ”„ Starting incremental refresh, currentMsgCount=50 [12:43:24] [ICE] viewer local HOST #28: 10.27.13.80:51767 (tcp) β†’ sent [12:43:24] [INCREMENTAL_SYNC] πŸ“‘ Fetching messages since ID 17809 [12:43:24] [ICE] viewer local HOST #29: 10.27.13.80:51768 (tcp) β†’ sent [12:43:24] [ICE] viewer local HOST #30: 10.27.13.80:51769 (tcp) β†’ sent [12:43:24] [WS AUDIO] First audio packet received: 9600 bytes (4800 samples, ~100ms) [12:43:24] [WS AUDIO] Status: buffers=0/10, playing=false [12:43:24] [ICE] viewer local HOST #31: 10.27.13.80:51770 (tcp) β†’ sent [12:43:24] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:43:24] [SIG] send offer ok [12:43:24] [ICE] viewer local HOST #32: 10.27.13.80:51771 (tcp) β†’ sent [12:43:24] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:43:24] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:43:24] [WS AUDIO] Starting playback with 3 buffers [12:43:24] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:43:24] [SIG] agent_ready ignored - negotiation already active (inProgress=true, hasRemoteDesc=false, iceState=0) [12:43:24] [WS AUDIO] Scheduled: 4800 frames @ 48000.0Hz [12:43:24] [WS AUDIO] Received 10 audio packets [12:43:24] [COMBINED_FETCH] Loaded 6581 read receipts, 785 messages with reactions [12:43:24] [READBY_ENRICH] Enriched 49 messages with readBy data [12:43:24] [UNSENT_RETRY] πŸ“₯ receive_message.php HTTP 200: {"ok":true,"message_id":17810,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-15 11:43:23"} [12:43:24] [UNSENT_RETRY] βœ… Message synced! Old id=-1 β†’ new server id=17810 [12:43:24] [DB_UPGRADE] Upgrading message ID: -1 β†’ 17810, preserveOriginalDate=true [12:43:24] [DB_UPGRADE] βœ… Upgraded -1 β†’ 17810 with send_status=0, 1 row(s) affected [12:43:24] [UNSENT_RETRY] βœ… Updated chatMessages[49].id: -1 β†’ 17810 [12:43:24] [INCREMENTAL_SYNC] βœ… Found 1 new messages [12:43:24] [UNSENT_RETRY] βœ… Updated allMessagesWithReadBy[49].id: -1 β†’ 17810 [12:43:24] ReloadData unsent_retry [12:43:24] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:43:24] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:43:24] [WS_EVENT] βœ… Incremental refresh complete, newMsgCount=50 [12:43:24] [SIG] ⬇️ Answer received from agent! [12:43:24] [SIG] Answer SDP length: 4818 bytes [12:43:24] [SIG] answer SDP length=4818 (attempt=1) [12:43:24] [SDP] ANSWER m-lines: ["m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109", "m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 103 104 35 36 107 108 109"] [12:43:24] [SDP] ANSWER rtpmap count: 26 [12:43:24] [SDP] ANSWER direction attributes: ["a=sendonly", "a=sendonly"] [12:43:24] [SIG] setRemoteDescription(begin) [attempt=1] [12:43:24] [ICE] πŸ” Connection state β†’ CHECKING [agentId=WzYn1NFr9V9tP-d7, sessionId=iosILUIWU] [12:43:24] [ICE] Current candidate stats: local=32, hasRelay=true, hasSrflx=true [12:43:24] didStartReceivingOn: kind=video id=220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:43:24] Setting up video track from transceiver: 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] onReceiver: kind=video id=220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:43:24] [VIDEO] Video track 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 - handled by didStartReceivingOn for PiP [12:43:24] didStartReceivingOn: kind=video id=e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 direction=RTCRtpTransceiverDirection(rawValue: 2) currentDirection=(Function) [12:43:24] Setting up video track from transceiver: e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 [12:43:24] onReceiver: kind=video id=e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 [12:43:24] remote codecs: [H264/96, rtx/97, H264/98, rtx/99, VP8/100, rtx/101, VP9/103, rtx/104, AV1/35, rtx/36, red/107, rtx/108, ulpfec/109, flexfec-03/37] [12:43:24] [VIDEO] Video track e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 - handled by didStartReceivingOn for PiP [12:43:24] [SIG] setRemoteDescription(done) [12:43:24] [DEBUG] Total transceivers: 2 [12:43:24] [DEBUG] Transceiver 0: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] [DEBUG] βœ… Video transceiver has track: 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:43:24] [DEBUG] Transceiver 1: mediaType=video direction=recvOnly currentDirection=recvOnly trackId=e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 [12:43:24] [DEBUG] βœ… Video transceiver has track: e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 [12:43:24] [DEBUG] βœ… Video transceiver is receive-only - should receive media [12:43:24] [TRACK] Stored track in allVideoTracks (total: 1) [12:43:24] [TRACK] Adding main track to PiP overlay: 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] stats entries: 21 [12:43:24] [PIP] βœ… PiP video view created [12:43:24] [PIP] Added track 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0, total: 1 [12:43:24] [PIP] Now displaying track 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 (index 0) [12:43:24] [PIP] Now showing track: 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 [12:43:24] [PIP] βœ… Added track 220d23d3-1c47-4cef-aeba-ad7a5d1f00e0 to PiP, total tracks: 1 [12:43:24] [TRACK] βœ… Video track (main) routed to PiP [12:43:24] [TRACK] Stored track in allVideoTracks (total: 2) [12:43:24] [TRACK] Adding main track to PiP overlay: e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 [12:43:24] [PIP] Added track e4e9f6f7-9a6a-4bff-991f-ad94603d0b25, total: 2 [12:43:24] [PIP] βœ… Added track e4e9f6f7-9a6a-4bff-991f-ad94603d0b25 to PiP, total tracks: 2 [12:43:24] [TRACK] βœ… Video track (main) routed to PiP [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.168.1.14:60068 [12:43:24] [ICE] Full: candidate:3767501219 1 udp 2122260223 192.168.1.14 60068 typ host generation 0 ufrag ZWpm network-id... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 10.121.142.99:56218 [12:43:24] [ICE] Full: candidate:2439489493 1 udp 2122129151 10.121.142.99 56218 typ host generation 0 ufrag ZWpm network-i... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:56444 [12:43:24] [ICE] Full: candidate:3575130129 1 udp 2121670399 192.0.0.6 56444 typ host generation 0 ufrag ZWpm network-id 5 ... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:56236 [12:43:24] [ICE] Full: candidate:3575130129 1 udp 2121604863 192.0.0.6 56236 typ host generation 0 ufrag ZWpm network-id 8 ... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:56194 [12:43:24] [ICE] Full: candidate:1336083045 1 udp 2122197247 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 56194 typ host generatio... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:62870 [12:43:24] [ICE] Full: candidate:1928216194 1 udp 2122068735 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 62870 typ host generation... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:54387 [12:43:24] [ICE] Full: candidate:1075841692 1 udp 2122003199 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54387 typ host generation... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:65124 [12:43:24] [ICE] Full: candidate:1075841692 1 udp 2121937663 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 65124 typ host generation... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:51047 [12:43:24] [ICE] Full: candidate:3064473251 1 udp 2121869567 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 51047 typ host generation ... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [MENU] dismissAnyExistingMenu called [12:43:24] [MENU] dismissAnyExistingMenu completed [12:43:24] [ICE] ⬇️ Remote SRFLX candidate from agent: 212.252.117.163:26748 [12:43:24] [ICE] Full: candidate:1338335389 1 udp 1686052607 212.252.117.163 26748 typ srflx raddr 192.168.1.14 rport 60068... [12:43:24] [ICE] remote srflx β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.168.1.14:51220 [12:43:24] [ICE] Full: candidate:505763127 1 tcp 1518280447 192.168.1.14 51220 typ host tcptype passive generation 0 ufrag ... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 10.121.142.99:51227 [12:43:24] [ICE] Full: candidate:1875735361 1 tcp 1518149375 10.121.142.99 51227 typ host tcptype passive generation 0 ufra... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:51234 [12:43:24] [ICE] Full: candidate:733150341 1 tcp 1517690623 192.0.0.6 51234 typ host tcptype passive generation 0 ufrag ZWp... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 192.0.0.6:51241 [12:43:24] [ICE] Full: candidate:733150341 1 tcp 1517625087 192.0.0.6 51241 typ host tcptype passive generation 0 ufrag ZWp... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb:51248 [12:43:24] [ICE] Full: candidate:2970212081 1 tcp 1518217471 2a02:4e0:522:2925:bc71:d20c:e3ea:26eb 51248 typ host tcptype p... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:c:e0f6:10fa:d736:51249 [12:43:24] [ICE] Full: candidate:2353326614 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 51249 typ host tcptype pa... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:51250 [12:43:24] [ICE] Full: candidate:3196771848 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 51250 typ host tcptype pa... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: fd74:6572:6d6e:7573:d:e0f6:10fa:d736:51251 [12:43:24] [ICE] Full: candidate:3196771848 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 51251 typ host tcptype pa... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote HOST candidate from agent: 2a02:4e0:522:2925:78:8dcf:c46b:bbf4:51252 [12:43:24] [ICE] Full: candidate:1208152631 1 tcp 1517889791 2a02:4e0:522:2925:78:8dcf:c46b:bbf4 51252 typ host tcptype pas... [12:43:24] [ICE] remote host β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [SCROLL_BTN] Showing button - 399pt from bottom > half 379pt [12:43:24] [ICE] ⬇️ Remote SRFLX candidate from agent: 5.24.152.206:36338 [12:43:24] [ICE] Full: candidate:1353314463 1 udp 1685921535 5.24.152.206 36338 typ srflx raddr 10.121.142.99 rport 56218 g... [12:43:24] [ICE] remote srflx β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:52005 [12:43:24] [ICE] Full: candidate:769841338 1 udp 41886207 192.168.1.31 52005 typ relay raddr 212.252.117.163 rport 26748 ge... [12:43:24] [ICE] remote relay β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:56614 [12:43:24] [ICE] Full: candidate:769841338 1 udp 41755135 192.168.1.31 56614 typ relay raddr 5.24.152.206 rport 36338 gener... [12:43:24] [ICE] remote relay β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:51218 [12:43:24] [ICE] Full: candidate:3544714286 1 udp 25108735 192.168.1.31 51218 typ relay raddr 212.252.117.163 rport 27052 g... [12:43:24] [ICE] remote relay β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [ICE] ⬇️ Remote RELAY candidate from agent: 192.168.1.31:64648 [12:43:24] [ICE] Full: candidate:3544714286 1 udp 24977663 192.168.1.31 64648 typ relay raddr 5.24.152.206 rport 36994 gene... [12:43:24] [ICE] remote relay β†’ applying [12:43:24] [ICE] addIceCandidate (no return) for mid=0 idx=0 [12:43:24] [MENU] dismissAnyExistingMenu called [12:43:24] [MENU] dismissAnyExistingMenu completed [12:43:25] [PUSH] Silent push received [12:43:25] [PUSH_EMBED] No embedded message_data in notification [12:43:25] [PUSH] No embedded data, pre-loading messages from server [12:43:25] [PUSH_PRELOAD] Fetching messages for instant display cache [12:43:25] [PUSH] Silent push received [12:43:25] [PUSH_EMBED] No embedded message_data in notification [12:43:25] [PUSH] No embedded data, pre-loading messages from server [12:43:25] [PUSH_PRELOAD] Fetching messages for instant display cache [12:43:25] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:43:25] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:43:25] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:43:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 17810, AnyHashable("session_id"): ILUIWU] [12:43:25] [PUSH] Parsed message_id: 17810 [12:43:25] [PUSH] Parsed operation_type: 3 [12:43:25] [PUSH] Taking direct action: opType=3, messageId=17810 [12:43:25] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17810 [12:43:25] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:43:25] [PUSH_PRELOAD] ⚑ Pre-cached 50 messages for instant display (preserved 0 from push) [12:43:25] [PUSH_PRELOAD] βœ… Pre-load complete with thumbnails [12:43:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 17810, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [12:43:25] [PUSH] Parsed message_id: 17810 [12:43:25] [PUSH] Parsed operation_type: 3 [12:43:25] [PUSH] Taking direct action: opType=3, messageId=17810 [12:43:25] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=17810 [12:43:25] [MENU] dismissAnyExistingMenu called [12:43:25] [MENU] dismissAnyExistingMenu completed [12:43:25] [CLIENT_SIG] Event received: type=3 messageId=17810 [12:43:25] [WS_EVENT] Received event: type=3, messageId=17810 [12:43:25] [WS_EVENT] Read receipt for message 17810 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:43:26] [MENU] dismissAnyExistingMenu called [12:43:26] [MENU] dismissAnyExistingMenu completed [12:43:26] [ICE] βœ… Connection state β†’ CONNECTED [agentId=WzYn1NFr9V9tP-d7, sessionId=iosILUIWU] [12:43:26] [ICE] Current candidate stats: local=32, hasRelay=true, hasSrflx=true [12:43:26] [ICE] ========== CONNECTION SUCCESS ========== [12:43:26] [ICE] βœ… ICE connection established! [12:43:26] [ICE] Session: iosILUIWU, AgentId: WzYn1NFr9V9tP-d7 [12:43:26] [ICE] ICE profile step: 0 [12:43:26] [ICE] Local candidates: 32, hasRelay: true, hasSrflx: true [12:43:26] [ICE] Checking for video tracks... [12:43:26] Stats on connect: inbound video packets=-1, bytes=-1 [12:43:26] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:27] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[17761, 17762, 17763, 17764, 17765] [12:43:27] [MENU] dismissAnyExistingMenu called [12:43:27] [MENU] dismissAnyExistingMenu completed [12:43:27] [COMBINED_FETCH] Loaded 6582 read receipts, 785 messages with reactions [12:43:27] [PAGINATION] πŸ“œ Loading 50 older messages, firstVisibleRow=43, oldOffset=3608.6666666666665 [12:43:27] [PAGINATION] πŸ“œ Total now: 100 [12:43:27] [RELOAD_TAB] πŸ”„ reloadMessagesForCurrentTab called, allMsgsCount=100, first5Ids=[17711, 17712, 17713, 17714, 17715] [12:43:27] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:43:27] [CELL_UPLOAD] β†’ not my message, setting complete [12:43:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:43:27] [PAGINATION] πŸ“œ newHeight=9425.0, heightDiff=5048.0, newOffset=8656.666666666666 [12:43:27] [PAGINATION] πŸ“œ After setContentOffset, actual offset=8656.666666666666 [12:43:27] [PAGINATION] πŸ“œ After main queue, offset=8652.0 [12:43:27] [SCROLL_BTN] Showing button - 387pt from bottom > half 379pt [12:43:28] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:29] [MENU] dismissAnyExistingMenu called [12:43:29] [MENU] dismissAnyExistingMenu completed [12:43:30] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:30] [ICE] Watchdog fired: gatheringState=1, iceConnectionState=2, candidateCount=32, hasRelay=true, hasSrflx=true [12:43:30] [ICE] Watchdog: skipping fallback - ICE connection is RTCIceConnectionState(rawValue: 2) (making progress) [12:43:30] [MENU] dismissAnyExistingMenu called [12:43:30] [MENU] dismissAnyExistingMenu completed [12:43:30] [CELL_UPLOAD] configure: msgId=17752, file=c3ee2fbb5839abc5.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:43:30] [CELL_UPLOAD] β†’ not my message, setting complete [12:43:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c3ee2fbb5839abc5.jpg, overlayExists=true [12:43:31] [MENU] dismissAnyExistingMenu called [12:43:31] [MENU] dismissAnyExistingMenu completed [12:43:31] [CELL_UPLOAD] configure: msgId=17739, file=cd7d50cf024abd2a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [12:43:31] [CELL_UPLOAD] β†’ no active progress, using msg.uploadStatus=0 β†’ complete [12:43:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=cd7d50cf024abd2a.jpg, overlayExists=true [12:43:31] [CELL_UPLOAD] configure: msgId=17738, file=d77fdc187ac423b2.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [12:43:31] [CELL_UPLOAD] β†’ not my message, setting complete [12:43:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=d77fdc187ac423b2.jpg, overlayExists=true [12:43:32] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:32] [MENU] dismissAnyExistingMenu called [12:43:32] [MENU] dismissAnyExistingMenu completed [12:43:33] [MENU] dismissAnyExistingMenu called [12:43:33] [MENU] dismissAnyExistingMenu completed [12:43:34] [MENU] dismissAnyExistingMenu called [12:43:34] [MENU] dismissAnyExistingMenu completed [12:43:34] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:36] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:38] [LOG_GESTURE] handleLongPress called, state=1, isToday=true [12:43:38] [LOG_GESTURE] Long press on Today detected! Triggering log upload... [12:43:38] [LOG] Long-press on 'Today' detected - prompting for description [12:43:38] [LOG_GESTURE] handleLongPress called, state=4, isToday=true [12:43:38] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:40] [WS AUDIO] Status: buffers=0/10, playing=true [12:43:42] [WS AUDIO] Status: buffers=0/10, playing=true