← Back to list | Download | 2026-01-15-12-43-no-emoji.log (796,899 bytes)
=== 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: <AVAudioInputNode: 0x113463c60>
[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: <AVAudioInputNode: 0x1229911a0>
[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 <A83A430A-426D-40CF-943B-F3BC9E400EE1>.<60>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <A83A430A-426D-40CF-943B-F3BC9E400EE1>.<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 <C06133A0-EEEB-4390-B104-13F1A24EBF1A>.<61>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <C06133A0-EEEB-4390-B104-13F1A24EBF1A>.<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: <AVAudioInputNode: 0x12f5afd20>
[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