=== Eye Viewer Log Rotated at 2026-03-11 10:58:34 +0000 ===
[11:58:34] [PUSH_TRACE] 🔀 mergeMessages: merged.count=136, first 10 IDs=[24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521, 24520]
[11:58:34] [PUSH_PRELOAD] ⚡ Pre-cached 136 messages for instant display (preserved 86 from push)
[11:58:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:34] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 137 msgs, IDs=[24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521, 24520]
[11:58:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24529]
[11:58:34] [PUSH] Parsed message_id: 24529
[11:58:34] [PUSH] Parsed operation_type: 3
[11:58:34] [PUSH] Taking direct action: opType=3, messageId=24529
[11:58:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24529
[11:58:34] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:34] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:34] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:34] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:34] HELLO → sent (cached token, role=query)
[11:58:34] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:34] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:34] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:34] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:34] [CLEANUP] ========================================
[11:58:34] [CLEANUP] Cleaning up all agent connections and views
[11:58:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:34] [CLEANUP] Stopped and removed 0 video connections
[11:58:34] [CLEANUP] Removed 0 video views
[11:58:34] [CLEANUP] Removed 0 feed scroll views
[11:58:34] [CLEANUP] Removed 0 status labels
[11:58:34] [CLEANUP] Reset agent query state
[11:58:34] [CLEANUP] Updated page indicator
[11:58:34] [CLEANUP] Rebuilt video layout
[11:58:34] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:34] [CLEANUP] ========================================
[11:58:34] [SERVER] Starting reconnect polling (5s interval)
[11:58:34] [CLEANUP] ========================================
[11:58:34] [CLEANUP] Cleaning up all agent connections and views
[11:58:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:34] [CLEANUP] Stopped and removed 0 video connections
[11:58:34] [CLEANUP] Removed 0 video views
[11:58:34] [CLEANUP] Removed 0 feed scroll views
[11:58:34] [CLEANUP] Removed 0 status labels
[11:58:34] [CLEANUP] Reset agent query state
[11:58:34] [CLEANUP] Updated page indicator
[11:58:34] [CLEANUP] Rebuilt video layout
[11:58:34] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:34] [CLEANUP] ========================================
[11:58:34] [SERVER] Starting reconnect polling (5s interval)
[11:58:34] [CLIENT_SIG] Event received: type=3 messageId=24529
[11:58:34] [WS_EVENT] Received event: type=3, messageId=24529
[11:58:34] [WS_EVENT] Read receipt for message 24529 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:58:35] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 10:58:35 +0000 - type: unknown, operation_type: 0, message_id: 24530, session_id: ILUIWU, state: 0
[11:58:35] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24530, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:34";
"file_name" = "";
message = "\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 24530;
"message_type" = 0;
"prev_session_message_id" = 24529;
"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:58:35] [PUSH] App active - suppressing notification UI, posting internal event
[11:58:35] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:35 +0000
[11:58:35] [PUSH_TRACE] ⬇️ Processing embedded message_id=24530
[11:58:35] [PUSH_EMBED] 📩 Received embedded message: id=24530, type=0, sender=Esra
[11:58:35] [PUSH_TRACE] ⬇️ Message details: text="♥️♥️♥️♥️...", datesent=2026-03-11 10:58:34
[11:58:35] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:35] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_EMBED] ✅ Saved message 24530 to local DB (sync)
[11:58:35] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24530
[11:58:35] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24530
[11:58:35] [PUSH_TRACE] 📦 Cache state: valid=true, count=136, IDs=[24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521, 24520]
[11:58:35] [PUSH_EMBED] Inserted message 24530 into existing cache (now 137 messages)
[11:58:35] [PUSH_TRACE] 📦 ✅ Inserted message 24530, cache now has IDs: [24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:35] [PUSH_TRACE] 📦 EXITING cache update queue for message 24530
[11:58:35] [PUSH_EMBED] Fetching evolution data for message 24530 in background
[11:58:35] [PUSH_EMBED] ✅ Fully processed message 24530
[11:58:35] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24530
[11:58:35] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 137 msgs, IDs=[24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521, 24520]
[11:58:35] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24530, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:34";
"file_name" = "";
message = "\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 24530;
"message_type" = 0;
"prev_session_message_id" = 24529;
"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:58:35] [PUSH_EMBED_VC] Processing embedded message: id=24530, type=0, sender=Esra, prevId=24529
[11:58:35] [PUSH_EMBED_VC] Inserted message 24530 into allMessagesWithReadBy (now 138 messages)
[11:58:35] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=138
[11:58:35] [PUSH_EMBED_VC] ✅ Previous message 24529 exists in memory
[11:58:35] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:35] [PUSH] Parsed message_id: 24530
[11:58:35] [PUSH] Parsed operation_type: 0
[11:58:35] [PUSH_EMBED_VC] Saved message 24530 to local DB
[11:58:35] [PUSH] Taking direct action: opType=0, messageId=24530
[11:58:35] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24530
[11:58:35] [PUSH] ⚡ Message 24530 already in memory - skipping duplicate notification entirely
[11:58:35] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:35] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:35] [PUSH_TRACE] 👁️ Received message id=24530, text="♥️♥️♥️♥️..."
[11:58:35] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:35] [PUSH_UI] Message 24530 already in memory - skipping insert
[11:58:35] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:35] [PUSH] Silent push received
[11:58:35] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:35 +0000, appState=0, message_id=24530
[11:58:35] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:35] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:35 +0000
[11:58:35] [PUSH_TRACE] ⬇️ Processing embedded message_id=24530
[11:58:35] [PUSH_EMBED] 📩 Received embedded message: id=24530, type=0, sender=Esra
[11:58:35] [PUSH_TRACE] ⬇️ Message details: text="♥️♥️♥️♥️...", datesent=2026-03-11 10:58:34
[11:58:35] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:35] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_EMBED] ✅ Saved message 24530 to local DB (sync)
[11:58:35] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24530
[11:58:35] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24530
[11:58:35] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24530
[11:58:35] [PUSH_TRACE] 📦 Cache state: valid=true, count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:35] [PUSH_TRACE] 📦 ⚠️ Message 24530 already in cache, skipping insert
[11:58:35] [PUSH_TRACE] 📦 EXITING cache update queue for message 24530
[11:58:35] [PUSH_EMBED] Fetching evolution data for message 24530 in background
[11:58:35] [PUSH_EMBED] ✅ Fully processed message 24530
[11:58:35] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24530
[11:58:35] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521], handled=true
[11:58:35] [PUSH] Embedded message handled instantly from silent push
[11:58:35] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[11:58:35] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24530
[11:58:35] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:35] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:35] [PUSH_TRACE] 👁️ Received message id=24530, text="♥️♥️♥️♥️..."
[11:58:35] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:35] [PUSH_UI] Message 24530 already in memory - skipping insert
[11:58:35] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:35] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 138 msgs, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:35] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 24530, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:34";
"file_name" = "";
message = "\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 24530;
"message_type" = 0;
"prev_session_message_id" = 24529;
"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:58:35] [PUSH_EMBED_VC] Message 24530 already in memory - skipping
[11:58:35] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:35] [PUSH] Parsed message_id: 24530
[11:58:35] [PUSH] Parsed operation_type: 0
[11:58:35] [PUSH] Taking direct action: opType=0, messageId=24530
[11:58:35] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24530
[11:58:35] [PUSH] ⚡ Message 24530 already in memory - skipping duplicate notification entirely
[11:58:35] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:58:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=138, first5Ids=[24530, 24529, 24528, 24527, 24526]
[11:58:35] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 138 messages
[11:58:35] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:35] [RELOAD_TAB] 📊 Building chatRows from 138 messages
[11:58:35] [NETWORK] Status changed: connected
[11:58:35] [RELOAD_TAB] 📊 Built 140 chatRows, estHeight=0.0
[11:58:35] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24529 → 24530
[11:58:35] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=147
[11:58:35] [SCROLL] 💓 alive, visible=133...139, rows=140, estHeight=0.0, heightCalls=289
[11:58:35] [CLIENT_SIG] Event received: type=0 messageId=24530
[11:58:35] [WS_EVENT] Received event: type=0, messageId=24530
[11:58:35] [WS_EVENT] 📨 New message notification (msgId=24530) - triggering incremental refresh, currentMsgCount=138
[11:58:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=138
[11:58:35] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24530, maxMemoryId=24530
[11:58:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24530
[11:58:35] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:35] [INCREMENTAL_SYNC] ✅ No new messages
[11:58:35] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=138
[11:58:35] [PUSH_EMBED] Got evolution data for message 24530, saving to local DB
[11:58:35] [PUSH_EMBED] Saved evolution data for message 24530
[11:58:35] [PUSH_EMBED] Got evolution data for message 24530, saving to local DB
[11:58:35] [PUSH_EMBED] Saved evolution data for message 24530
[11:58:35] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:35] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:36] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:36] HELLO → sent (cached token, role=query)
[11:58:36] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:36] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:36] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:36] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:36] [CLEANUP] ========================================
[11:58:36] [CLEANUP] Cleaning up all agent connections and views
[11:58:36] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:36] [CLEANUP] Stopped and removed 0 video connections
[11:58:36] [CLEANUP] Removed 0 video views
[11:58:36] [CLEANUP] Removed 0 feed scroll views
[11:58:36] [CLEANUP] Removed 0 status labels
[11:58:36] [CLEANUP] Reset agent query state
[11:58:36] [CLEANUP] Updated page indicator
[11:58:36] [CLEANUP] Rebuilt video layout
[11:58:36] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:36] [CLEANUP] ========================================
[11:58:36] [SERVER] Starting reconnect polling (5s interval)
[11:58:36] [CLEANUP] ========================================
[11:58:36] [CLEANUP] Cleaning up all agent connections and views
[11:58:36] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:36] [CLEANUP] Stopped and removed 0 video connections
[11:58:36] [CLEANUP] Removed 0 video views
[11:58:36] [CLEANUP] Removed 0 feed scroll views
[11:58:36] [CLEANUP] Removed 0 status labels
[11:58:36] [CLEANUP] Reset agent query state
[11:58:36] [CLEANUP] Updated page indicator
[11:58:36] [CLEANUP] Rebuilt video layout
[11:58:36] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:36] [CLEANUP] ========================================
[11:58:36] [SERVER] Starting reconnect polling (5s interval)
[11:58:36] [PUSH] Silent push received
[11:58:36] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:36 +0000, appState=0, message_id=nil
[11:58:36] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:36] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:36 +0000
[11:58:36] [PUSH_EMBED] No embedded message_data in notification
[11:58:36] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:58:36] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521], handled=false
[11:58:36] [PUSH] No embedded data, pre-loading messages from server
[11:58:36] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:58:36] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:58:36] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:58:36] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:36] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:36] [PRELOAD_CACHE] Preserving 87 push-inserted messages: [24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:36] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=87, IDs=[24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:36] [PUSH_TRACE] 🔀 mergeMessages: merged.count=137, first 10 IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:36] [PUSH_PRELOAD] ⚡ Pre-cached 137 messages for instant display (preserved 87 from push)
[11:58:36] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:36] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 138 msgs, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 24530, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[11:58:36] [PUSH] Parsed message_id: 24530
[11:58:36] [PUSH] Parsed operation_type: 3
[11:58:36] [PUSH] Taking direct action: opType=3, messageId=24530
[11:58:36] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24530
[11:58:37] [CLIENT_SIG] Event received: type=3 messageId=24530
[11:58:37] [WS_EVENT] Received event: type=3, messageId=24530
[11:58:37] [WS_EVENT] Read receipt for message 24530 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:58:37] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:37] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:38] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:38] HELLO → sent (cached token, role=query)
[11:58:38] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:38] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:38] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:38] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:38] [CLEANUP] ========================================
[11:58:38] [CLEANUP] Cleaning up all agent connections and views
[11:58:38] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:38] [CLEANUP] Stopped and removed 0 video connections
[11:58:38] [CLEANUP] Removed 0 video views
[11:58:38] [CLEANUP] Removed 0 feed scroll views
[11:58:38] [CLEANUP] Removed 0 status labels
[11:58:38] [CLEANUP] Reset agent query state
[11:58:38] [CLEANUP] Updated page indicator
[11:58:38] [CLEANUP] Rebuilt video layout
[11:58:38] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:38] [CLEANUP] ========================================
[11:58:38] [SERVER] Starting reconnect polling (5s interval)
[11:58:38] [CLEANUP] ========================================
[11:58:38] [CLEANUP] Cleaning up all agent connections and views
[11:58:38] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:38] [CLEANUP] Stopped and removed 0 video connections
[11:58:38] [CLEANUP] Removed 0 video views
[11:58:38] [CLEANUP] Removed 0 feed scroll views
[11:58:38] [CLEANUP] Removed 0 status labels
[11:58:38] [CLEANUP] Reset agent query state
[11:58:38] [CLEANUP] Updated page indicator
[11:58:38] [CLEANUP] Rebuilt video layout
[11:58:38] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:38] [CLEANUP] ========================================
[11:58:38] [SERVER] Starting reconnect polling (5s interval)
[11:58:39] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:39] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:39] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:39] HELLO → sent (cached token, role=query)
[11:58:39] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:39] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:39] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:39] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:39] [CLEANUP] ========================================
[11:58:39] [CLEANUP] Cleaning up all agent connections and views
[11:58:39] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:39] [CLEANUP] Stopped and removed 0 video connections
[11:58:39] [CLEANUP] Removed 0 video views
[11:58:39] [CLEANUP] Removed 0 feed scroll views
[11:58:39] [CLEANUP] Removed 0 status labels
[11:58:39] [CLEANUP] Reset agent query state
[11:58:39] [CLEANUP] Updated page indicator
[11:58:39] [CLEANUP] Rebuilt video layout
[11:58:39] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:39] [CLEANUP] ========================================
[11:58:39] [SERVER] Starting reconnect polling (5s interval)
[11:58:39] [CLEANUP] ========================================
[11:58:39] [CLEANUP] Cleaning up all agent connections and views
[11:58:39] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:39] [CLEANUP] Stopped and removed 0 video connections
[11:58:39] [CLEANUP] Removed 0 video views
[11:58:39] [CLEANUP] Removed 0 feed scroll views
[11:58:39] [CLEANUP] Removed 0 status labels
[11:58:39] [CLEANUP] Reset agent query state
[11:58:39] [CLEANUP] Updated page indicator
[11:58:39] [CLEANUP] Rebuilt video layout
[11:58:39] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:39] [CLEANUP] ========================================
[11:58:39] [SERVER] Starting reconnect polling (5s interval)
[11:58:40] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:40] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:41] [NETWORK] Status changed: connected
[11:58:41] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:41] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:41] [NETWORK] Status changed: connected
[11:58:41] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 10:58:41 +0000 - type: unknown, operation_type: 0, message_id: 24531, session_id: ILUIWU, state: 0
[11:58:41] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24531, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:40";
"file_name" = "";
message = "I cant focus anything";
"message_id" = 24531;
"message_type" = 0;
"prev_session_message_id" = 24530;
"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:58:41] [PUSH] App active - suppressing notification UI, posting internal event
[11:58:41] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:41 +0000
[11:58:41] [PUSH_TRACE] ⬇️ Processing embedded message_id=24531
[11:58:41] [PUSH_EMBED] 📩 Received embedded message: id=24531, type=0, sender=Esra
[11:58:41] [PUSH_TRACE] ⬇️ Message details: text="I cant focus anything...", datesent=2026-03-11 10:58:40
[11:58:41] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:41] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_EMBED] ✅ Saved message 24531 to local DB (sync)
[11:58:41] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24531
[11:58:41] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24531
[11:58:41] [PUSH_TRACE] 📦 Cache state: valid=true, count=137, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:41] [PUSH_EMBED] Inserted message 24531 into existing cache (now 138 messages)
[11:58:41] [PUSH_TRACE] 📦 ✅ Inserted message 24531, cache now has IDs: [24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:41] [PUSH_TRACE] 📦 EXITING cache update queue for message 24531
[11:58:41] [PUSH_EMBED] Fetching evolution data for message 24531 in background
[11:58:41] [PUSH_EMBED] ✅ Fully processed message 24531
[11:58:41] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24531
[11:58:41] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 138 msgs, IDs=[24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522, 24521]
[11:58:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24531, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:40";
"file_name" = "";
message = "I cant focus anything";
"message_id" = 24531;
"message_type" = 0;
"prev_session_message_id" = 24530;
"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:58:41] [PUSH_EMBED_VC] Processing embedded message: id=24531, type=0, sender=Esra, prevId=24530
[11:58:41] [PUSH_EMBED_VC] Inserted message 24531 into allMessagesWithReadBy (now 139 messages)
[11:58:41] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=139
[11:58:41] [PUSH_EMBED_VC] ✅ Previous message 24530 exists in memory
[11:58:41] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:41] [PUSH] Parsed message_id: 24531
[11:58:41] [PUSH] Parsed operation_type: 0
[11:58:41] [PUSH] Taking direct action: opType=0, messageId=24531
[11:58:41] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24531
[11:58:41] [PUSH] ⚡ Message 24531 already in memory - skipping duplicate notification entirely
[11:58:41] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:41] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:41] [PUSH_TRACE] 👁️ Received message id=24531, text="I cant focus anything..."
[11:58:41] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:41] [PUSH_UI] Message 24531 already in memory - skipping insert
[11:58:41] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:41] [PUSH] Silent push received
[11:58:41] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:41 +0000, appState=0, message_id=24531
[11:58:41] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:41] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:41 +0000
[11:58:41] [PUSH_EMBED_VC] Saved message 24531 to local DB
[11:58:41] [PUSH_TRACE] ⬇️ Processing embedded message_id=24531
[11:58:41] [PUSH_EMBED] 📩 Received embedded message: id=24531, type=0, sender=Esra
[11:58:41] [PUSH_TRACE] ⬇️ Message details: text="I cant focus anything...", datesent=2026-03-11 10:58:40
[11:58:41] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:41] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_EMBED] ✅ Saved message 24531 to local DB (sync)
[11:58:41] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24531
[11:58:41] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24531
[11:58:41] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24531
[11:58:41] [PUSH_TRACE] 📦 Cache state: valid=true, count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:41] [PUSH_TRACE] 📦 ⚠️ Message 24531 already in cache, skipping insert
[11:58:41] [PUSH_TRACE] 📦 EXITING cache update queue for message 24531
[11:58:41] [PUSH_EMBED] Fetching evolution data for message 24531 in background
[11:58:41] [PUSH_EMBED] ✅ Fully processed message 24531
[11:58:41] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24531
[11:58:41] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522], handled=true
[11:58:41] [PUSH] Embedded message handled instantly from silent push
[11:58:41] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[11:58:41] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24531
[11:58:41] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:41] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:41] [PUSH_TRACE] 👁️ Received message id=24531, text="I cant focus anything..."
[11:58:41] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:41] [PUSH_UI] Message 24531 already in memory - skipping insert
[11:58:41] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:41] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 139 msgs, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:40";
"file_name" = "";
message = "I cant focus anything";
"message_id" = 24531;
"message_type" = 0;
"prev_session_message_id" = 24530;
"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"): 24531]
[11:58:41] [PUSH_EMBED_VC] Message 24531 already in memory - skipping
[11:58:41] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:41] [PUSH] Parsed message_id: 24531
[11:58:41] [PUSH] Parsed operation_type: 0
[11:58:41] [PUSH] Taking direct action: opType=0, messageId=24531
[11:58:41] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24531
[11:58:41] [PUSH] ⚡ Message 24531 already in memory - skipping duplicate notification entirely
[11:58:41] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:41] HELLO → sent (cached token, role=query)
[11:58:41] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:41] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:41] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:41] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:41] [CLEANUP] ========================================
[11:58:41] [CLEANUP] Cleaning up all agent connections and views
[11:58:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:41] [CLEANUP] Stopped and removed 0 video connections
[11:58:41] [CLEANUP] Removed 0 video views
[11:58:41] [CLEANUP] Removed 0 feed scroll views
[11:58:41] [CLEANUP] Removed 0 status labels
[11:58:41] [CLEANUP] Reset agent query state
[11:58:41] [CLEANUP] Updated page indicator
[11:58:41] [CLEANUP] Rebuilt video layout
[11:58:41] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:41] [CLEANUP] ========================================
[11:58:41] [SERVER] Starting reconnect polling (5s interval)
[11:58:41] [CLEANUP] ========================================
[11:58:41] [CLEANUP] Cleaning up all agent connections and views
[11:58:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:41] [CLEANUP] Stopped and removed 0 video connections
[11:58:41] [CLEANUP] Removed 0 video views
[11:58:41] [CLEANUP] Removed 0 feed scroll views
[11:58:41] [CLEANUP] Removed 0 status labels
[11:58:41] [CLEANUP] Reset agent query state
[11:58:41] [CLEANUP] Updated page indicator
[11:58:41] [CLEANUP] Rebuilt video layout
[11:58:41] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:41] [CLEANUP] ========================================
[11:58:41] [SERVER] Starting reconnect polling (5s interval)
[11:58:41] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:58:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=139, first5Ids=[24531, 24530, 24529, 24528, 24527]
[11:58:41] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 139 messages
[11:58:41] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:41] [RELOAD_TAB] 📊 Building chatRows from 139 messages
[11:58:41] [RELOAD_TAB] 📊 Built 141 chatRows, estHeight=0.0
[11:58:41] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24530 → 24531
[11:58:41] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=149
[11:58:41] [SCROLL] 💓 alive, visible=133...140, rows=141, estHeight=0.0, heightCalls=292
[11:58:41] [CLIENT_SIG] Event received: type=0 messageId=24531
[11:58:41] [WS_EVENT] Received event: type=0, messageId=24531
[11:58:41] [WS_EVENT] 📨 New message notification (msgId=24531) - triggering incremental refresh, currentMsgCount=139
[11:58:41] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=139
[11:58:41] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24531, maxMemoryId=24531
[11:58:41] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24531
[11:58:41] [PUSH_EMBED] Got evolution data for message 24531, saving to local DB
[11:58:41] [PUSH_EMBED] Saved evolution data for message 24531
[11:58:41] [PUSH_EMBED] Got evolution data for message 24531, saving to local DB
[11:58:41] [PUSH_EMBED] Saved evolution data for message 24531
[11:58:41] [INCREMENTAL_SYNC] ✅ No new messages
[11:58:41] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=139
[11:58:42] [PUSH] Silent push received
[11:58:42] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:42 +0000, appState=0, message_id=nil
[11:58:42] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:42] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:42 +0000
[11:58:42] [PUSH_EMBED] No embedded message_data in notification
[11:58:42] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:58:42] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522], handled=false
[11:58:42] [PUSH] No embedded data, pre-loading messages from server
[11:58:42] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:58:43] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:58:43] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:58:43] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:43] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:43] [PRELOAD_CACHE] Preserving 88 push-inserted messages: [24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:43] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=88, IDs=[24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:43] [PUSH_TRACE] 🔀 mergeMessages: merged.count=138, first 10 IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:43] [PUSH_PRELOAD] ⚡ Pre-cached 138 messages for instant display (preserved 88 from push)
[11:58:43] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:43] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 139 msgs, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:43] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24531]
[11:58:43] [PUSH] Parsed message_id: 24531
[11:58:43] [PUSH] Parsed operation_type: 3
[11:58:43] [PUSH] Taking direct action: opType=3, messageId=24531
[11:58:43] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24531
[11:58:43] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:43] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:43] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:43] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:43] HELLO → sent (cached token, role=query)
[11:58:43] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:43] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:43] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:43] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:43] [CLEANUP] ========================================
[11:58:43] [CLEANUP] Cleaning up all agent connections and views
[11:58:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:43] [CLEANUP] Stopped and removed 0 video connections
[11:58:43] [CLEANUP] Removed 0 video views
[11:58:43] [CLEANUP] Removed 0 feed scroll views
[11:58:43] [CLEANUP] Removed 0 status labels
[11:58:43] [CLEANUP] Reset agent query state
[11:58:43] [CLEANUP] Updated page indicator
[11:58:43] [CLEANUP] Rebuilt video layout
[11:58:43] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:43] [CLEANUP] ========================================
[11:58:43] [SERVER] Starting reconnect polling (5s interval)
[11:58:43] [CLEANUP] ========================================
[11:58:43] [CLEANUP] Cleaning up all agent connections and views
[11:58:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:43] [CLEANUP] Stopped and removed 0 video connections
[11:58:43] [CLEANUP] Removed 0 video views
[11:58:43] [CLEANUP] Removed 0 feed scroll views
[11:58:43] [CLEANUP] Removed 0 status labels
[11:58:43] [CLEANUP] Reset agent query state
[11:58:43] [CLEANUP] Updated page indicator
[11:58:43] [CLEANUP] Rebuilt video layout
[11:58:43] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:43] [CLEANUP] ========================================
[11:58:43] [SERVER] Starting reconnect polling (5s interval)
[11:58:43] [CLIENT_SIG] Event received: type=3 messageId=24531
[11:58:43] [WS_EVENT] Received event: type=3, messageId=24531
[11:58:43] [WS_EVENT] Read receipt for message 24531 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:58:43] [NETWORK] Status changed: connected
[11:58:44] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 10:58:44 +0000 - type: unknown, operation_type: 0, message_id: 24532, session_id: ILUIWU, state: 0
[11:58:44] [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_data"): {
datesent = "2026-03-11 10:58:43";
"file_name" = "";
message = "Really!!!!";
"message_id" = 24532;
"message_type" = 0;
"prev_session_message_id" = 24531;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24532]
[11:58:44] [PUSH] App active - suppressing notification UI, posting internal event
[11:58:44] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:44 +0000
[11:58:44] [PUSH_TRACE] ⬇️ Processing embedded message_id=24532
[11:58:44] [PUSH_EMBED] 📩 Received embedded message: id=24532, type=0, sender=Esra
[11:58:44] [PUSH_TRACE] ⬇️ Message details: text="Really!!!!...", datesent=2026-03-11 10:58:43
[11:58:44] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:44] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_EMBED] ✅ Saved message 24532 to local DB (sync)
[11:58:44] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24532
[11:58:44] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24532
[11:58:44] [PUSH_TRACE] 📦 Cache state: valid=true, count=138, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:44] [PUSH_EMBED] Inserted message 24532 into existing cache (now 139 messages)
[11:58:44] [PUSH_TRACE] 📦 ✅ Inserted message 24532, cache now has IDs: [24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:44] [PUSH_TRACE] 📦 EXITING cache update queue for message 24532
[11:58:44] [PUSH_EMBED] Fetching evolution data for message 24532 in background
[11:58:44] [PUSH_EMBED] ✅ Fully processed message 24532
[11:58:44] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24532
[11:58:44] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 139 msgs, IDs=[24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523, 24522]
[11:58:44] [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_data"): {
datesent = "2026-03-11 10:58:43";
"file_name" = "";
message = "Really!!!!";
"message_id" = 24532;
"message_type" = 0;
"prev_session_message_id" = 24531;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 24532]
[11:58:44] [PUSH_EMBED_VC] Processing embedded message: id=24532, type=0, sender=Esra, prevId=24531
[11:58:44] [PUSH_EMBED_VC] Inserted message 24532 into allMessagesWithReadBy (now 140 messages)
[11:58:44] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=140
[11:58:44] [PUSH_EMBED_VC] ✅ Previous message 24531 exists in memory
[11:58:44] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:44] [PUSH] Parsed message_id: 24532
[11:58:44] [PUSH] Parsed operation_type: 0
[11:58:44] [PUSH] Taking direct action: opType=0, messageId=24532
[11:58:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24532
[11:58:44] [PUSH] ⚡ Message 24532 already in memory - skipping duplicate notification entirely
[11:58:44] [PUSH_EMBED_VC] Saved message 24532 to local DB
[11:58:44] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:44] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:44] [PUSH_TRACE] 👁️ Received message id=24532, text="Really!!!!..."
[11:58:44] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:44] [PUSH_UI] Message 24532 already in memory - skipping insert
[11:58:44] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:44] [PUSH] Silent push received
[11:58:44] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:44 +0000, appState=0, message_id=24532
[11:58:44] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:44] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:44 +0000
[11:58:44] [PUSH_TRACE] ⬇️ Processing embedded message_id=24532
[11:58:44] [PUSH_EMBED] 📩 Received embedded message: id=24532, type=0, sender=Esra
[11:58:44] [PUSH_TRACE] ⬇️ Message details: text="Really!!!!...", datesent=2026-03-11 10:58:43
[11:58:44] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:58:44] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_EMBED] ✅ Saved message 24532 to local DB (sync)
[11:58:44] [NETWORK] Status changed: connected
[11:58:44] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24532
[11:58:44] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24532
[11:58:44] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24532
[11:58:44] [PUSH_TRACE] 📦 Cache state: valid=true, count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:44] [PUSH_TRACE] 📦 ⚠️ Message 24532 already in cache, skipping insert
[11:58:44] [PUSH_TRACE] 📦 EXITING cache update queue for message 24532
[11:58:44] [PUSH_EMBED] Fetching evolution data for message 24532 in background
[11:58:44] [PUSH_EMBED] ✅ Fully processed message 24532
[11:58:44] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24532
[11:58:44] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523], handled=true
[11:58:44] [PUSH] Embedded message handled instantly from silent push
[11:58:44] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[11:58:44] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24532
[11:58:44] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:58:44] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:58:44] [PUSH_TRACE] 👁️ Received message id=24532, text="Really!!!!..."
[11:58:44] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:58:44] [PUSH_UI] Message 24532 already in memory - skipping insert
[11:58:44] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:58:44] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 140 msgs, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-03-11 10:58:43";
"file_name" = "";
message = "Really!!!!";
"message_id" = 24532;
"message_type" = 0;
"prev_session_message_id" = 24531;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 24532, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
[11:58:44] [PUSH_EMBED_VC] Message 24532 already in memory - skipping
[11:58:44] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:58:44] [PUSH] Parsed message_id: 24532
[11:58:44] [PUSH] Parsed operation_type: 0
[11:58:44] [PUSH] Taking direct action: opType=0, messageId=24532
[11:58:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24532
[11:58:44] [PUSH] ⚡ Message 24532 already in memory - skipping duplicate notification entirely
[11:58:44] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:58:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=140, first5Ids=[24532, 24531, 24530, 24529, 24528]
[11:58:44] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 140 messages
[11:58:44] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:44] [RELOAD_TAB] 📊 Building chatRows from 140 messages
[11:58:44] [RELOAD_TAB] 📊 Built 142 chatRows, estHeight=0.0
[11:58:44] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24531 → 24532
[11:58:44] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=151
[11:58:44] [SCROLL] 💓 alive, visible=133...141, rows=142, estHeight=0.0, heightCalls=295
[11:58:44] [CLIENT_SIG] Event received: type=0 messageId=24532
[11:58:44] [WS_EVENT] Received event: type=0, messageId=24532
[11:58:44] [WS_EVENT] 📨 New message notification (msgId=24532) - triggering incremental refresh, currentMsgCount=140
[11:58:44] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=140
[11:58:44] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24532, maxMemoryId=24532
[11:58:44] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24532
[11:58:44] [INCREMENTAL_SYNC] ✅ No new messages
[11:58:44] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=140
[11:58:45] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:45] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:45] [PUSH_EMBED] Got evolution data for message 24532, saving to local DB
[11:58:45] [PUSH_EMBED] Saved evolution data for message 24532
[11:58:45] [PUSH_EMBED] Got evolution data for message 24532, saving to local DB
[11:58:45] [PUSH_EMBED] Saved evolution data for message 24532
[11:58:45] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:45] HELLO → sent (cached token, role=query)
[11:58:45] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:45] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:45] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:45] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:45] [CLEANUP] ========================================
[11:58:45] [CLEANUP] Cleaning up all agent connections and views
[11:58:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:45] [CLEANUP] Stopped and removed 0 video connections
[11:58:45] [CLEANUP] Removed 0 video views
[11:58:45] [CLEANUP] Removed 0 feed scroll views
[11:58:45] [CLEANUP] Removed 0 status labels
[11:58:45] [CLEANUP] Reset agent query state
[11:58:45] [CLEANUP] Updated page indicator
[11:58:45] [CLEANUP] Rebuilt video layout
[11:58:45] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:45] [CLEANUP] ========================================
[11:58:45] [SERVER] Starting reconnect polling (5s interval)
[11:58:45] [CLEANUP] ========================================
[11:58:45] [CLEANUP] Cleaning up all agent connections and views
[11:58:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:45] [CLEANUP] Stopped and removed 0 video connections
[11:58:45] [CLEANUP] Removed 0 video views
[11:58:45] [CLEANUP] Removed 0 feed scroll views
[11:58:45] [CLEANUP] Removed 0 status labels
[11:58:45] [CLEANUP] Reset agent query state
[11:58:45] [CLEANUP] Updated page indicator
[11:58:45] [CLEANUP] Rebuilt video layout
[11:58:45] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:45] [CLEANUP] ========================================
[11:58:45] [SERVER] Starting reconnect polling (5s interval)
[11:58:45] [NETWORK] Status changed: connected
[11:58:45] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:58:45] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=140, isReloading=false
[11:58:45] [SEND_MESSAGE] ✅ Added optimistic message id=-42 to arrays, newMsgCount=141
[11:58:45] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:58:45] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=141, first5Ids=[-42, 24532, 24531, 24530, 24529]
[11:58:45] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 141 messages
[11:58:45] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-42, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:45] [RELOAD_TAB] 📊 Building chatRows from 141 messages
[11:58:45] [RELOAD_TAB] 📊 Built 143 chatRows, estHeight=0.0
[11:58:45] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=152
[11:58:45] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:58:45] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:58:45] [PUSH] Silent push received
[11:58:45] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:45 +0000, appState=0, message_id=nil
[11:58:45] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:45] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:45 +0000
[11:58:45] [PUSH_EMBED] No embedded message_data in notification
[11:58:45] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:58:45] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523], handled=false
[11:58:45] [PUSH] No embedded data, pre-loading messages from server
[11:58:45] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:58:45] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:58:46] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:58:46] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:46] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=139, IDs=[24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524, 24523]
[11:58:46] [PRELOAD_CACHE] Preserving 90 push-inserted messages: [24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:46] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=90, IDs=[24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:46] [PUSH_TRACE] 🔀 mergeMessages: merged.count=140, first 10 IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:46] [PUSH_PRELOAD] ⚡ Pre-cached 140 messages for instant display (preserved 90 from push)
[11:58:46] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:46] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 141 msgs, IDs=[-42, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:46] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 24532]
[11:58:46] [PUSH] Parsed message_id: 24532
[11:58:46] [PUSH] Parsed operation_type: 3
[11:58:46] [PUSH] Taking direct action: opType=3, messageId=24532
[11:58:46] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24532
[11:58:46] [CLIENT_SIG] Event received: type=0 messageId=24533
[11:58:46] [WS_EVENT] Received event: type=0, messageId=24533
[11:58:46] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24533,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 10:58:45"}
[11:58:46] [WS_EVENT] 📨 New message notification (msgId=24533) - triggering incremental refresh, currentMsgCount=141
[11:58:46] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=141
[11:58:46] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "message_type": 0, "file_name": , "datesent_utc": 2026-03-11 10:58:45, "ok": 1, "message_id": 24533]
[11:58:46] [DB_UPGRADE] Upgrading message ID: -42 → 24533, preserveOriginalDate=false
[11:58:46] [DB_UPGRADE] ❌ Step fail: UNIQUE constraint failed: local_messages.message_id
[11:58:46] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24533, maxMemoryId=24532
[11:58:46] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24533
[11:58:46] [SEND_UPGRADE] ⚠️ DB upgrade failed, server ID 24533 not in memory yet - deleting provisional -42 from DB
[11:58:46] [INCREMENTAL_SYNC] ✅ No new messages
[11:58:46] ReloadData 9
[11:58:46] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=141
[11:58:46] [CLIENT_SIG] Event received: type=3 messageId=24532
[11:58:46] [WS_EVENT] Received event: type=3, messageId=24532
[11:58:46] [WS_EVENT] Read receipt for message 24532 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:58:46] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:46] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:47] [PUSH] Silent push received
[11:58:47] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:47 +0000, appState=0, message_id=nil
[11:58:47] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:47 +0000
[11:58:47] [PUSH_EMBED] No embedded message_data in notification
[11:58:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:58:47] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524], handled=false
[11:58:47] [PUSH] No embedded data, pre-loading messages from server
[11:58:47] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:58:47] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:58:47] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:58:47] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:47] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:47] [PRELOAD_CACHE] Preserving 90 push-inserted messages: [24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:47] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=90, IDs=[24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:47] [PUSH_TRACE] 🔀 mergeMessages: merged.count=140, first 10 IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:47] [PUSH_PRELOAD] ⚡ Pre-cached 140 messages for instant display (preserved 90 from push)
[11:58:47] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:47] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 141 msgs, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24533]
[11:58:47] [PUSH] Parsed message_id: 24533
[11:58:47] [PUSH] Parsed operation_type: 3
[11:58:47] [PUSH] Taking direct action: opType=3, messageId=24533
[11:58:47] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24533
[11:58:48] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:48] HELLO → sent (cached token, role=query)
[11:58:48] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:48] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:48] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:48] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:48] [CLEANUP] ========================================
[11:58:48] [CLEANUP] Cleaning up all agent connections and views
[11:58:48] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:48] [CLEANUP] Stopped and removed 0 video connections
[11:58:48] [CLEANUP] Removed 0 video views
[11:58:48] [CLEANUP] Removed 0 feed scroll views
[11:58:48] [CLEANUP] Removed 0 status labels
[11:58:48] [CLEANUP] Reset agent query state
[11:58:48] [CLEANUP] Updated page indicator
[11:58:48] [CLEANUP] Rebuilt video layout
[11:58:48] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:48] [CLEANUP] ========================================
[11:58:48] [SERVER] Starting reconnect polling (5s interval)
[11:58:48] [CLEANUP] ========================================
[11:58:48] [CLEANUP] Cleaning up all agent connections and views
[11:58:48] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:48] [CLEANUP] Stopped and removed 0 video connections
[11:58:48] [CLEANUP] Removed 0 video views
[11:58:48] [CLEANUP] Removed 0 feed scroll views
[11:58:48] [CLEANUP] Removed 0 status labels
[11:58:48] [CLEANUP] Reset agent query state
[11:58:48] [CLEANUP] Updated page indicator
[11:58:48] [CLEANUP] Rebuilt video layout
[11:58:48] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:48] [CLEANUP] ========================================
[11:58:48] [SERVER] Starting reconnect polling (5s interval)
[11:58:48] [CLIENT_SIG] Event received: type=3 messageId=24533
[11:58:48] [WS_EVENT] Received event: type=3, messageId=24533
[11:58:48] [WS_EVENT] Read receipt for message 24533 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:48] [CAM] Offer → session: iosILUIWU, viewerId: FW2Skm6obHxqCrys
[11:58:48] [WEBRTC] WebRTC client already exists, reusing it
[11:58:48] [CAM] Peer connection ready, processing offer immediately
[11:58:48] Creating answer for FW2Skm6obHxqCrys. Found 3 transceivers:
[11:58:48] Transceiver 0: video, direction=sendRecv, hasTrack=true
[11:58:48] Transceiver 1: video, direction=sendRecv, hasTrack=true
[11:58:48] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[11:58:48] SEND answer for viewerId=FW2Skm6obHxqCrys
[11:58:48] SDP length: 8428
[11:58:48] [CAM] viewerLeave → session: iosILUIWU, viewerId: FW2Skm6obHxqCrys
[11:58:48] ICE state for vid=?: 6 ( RTCIceConnectionState )
[11:58:48] [IDLE] scheduleIdleStopIfNoViewers called
[11:58:48] [IDLE] alwaysOn=true, skipping idle stop
[11:58:48] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:58:48] [CAM] viewerLeave → session: iosILUIWU, viewerId: 8RNSXHesdN2Vuj4t
[11:58:48] ICE state for vid=?: 6 ( RTCIceConnectionState )
[11:58:48] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:58:48] [IDLE] scheduleIdleStopIfNoViewers called
[11:58:48] [IDLE] alwaysOn=true, skipping idle stop
[11:58:49] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:49] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:49] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:49] HELLO → sent (cached token, role=query)
[11:58:50] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:50] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:50] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:50] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:50] [CLEANUP] ========================================
[11:58:50] [CLEANUP] Cleaning up all agent connections and views
[11:58:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:50] [CLEANUP] Stopped and removed 0 video connections
[11:58:50] [CLEANUP] Removed 0 video views
[11:58:50] [CLEANUP] Removed 0 feed scroll views
[11:58:50] [CLEANUP] Removed 0 status labels
[11:58:50] [CLEANUP] Reset agent query state
[11:58:50] [CLEANUP] Updated page indicator
[11:58:50] [CLEANUP] Rebuilt video layout
[11:58:50] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:50] [CLEANUP] ========================================
[11:58:50] [SERVER] Starting reconnect polling (5s interval)
[11:58:50] [CLEANUP] ========================================
[11:58:50] [CLEANUP] Cleaning up all agent connections and views
[11:58:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:50] [CLEANUP] Stopped and removed 0 video connections
[11:58:50] [CLEANUP] Removed 0 video views
[11:58:50] [CLEANUP] Removed 0 feed scroll views
[11:58:50] [CLEANUP] Removed 0 status labels
[11:58:50] [CLEANUP] Reset agent query state
[11:58:50] [CLEANUP] Updated page indicator
[11:58:50] [CLEANUP] Rebuilt video layout
[11:58:50] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:50] [CLEANUP] ========================================
[11:58:50] [SERVER] Starting reconnect polling (5s interval)
[11:58:51] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:51] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:51] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:51] HELLO → sent (cached token, role=query)
[11:58:51] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:51] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:51] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:51] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:51] [CLEANUP] ========================================
[11:58:51] [CLEANUP] Cleaning up all agent connections and views
[11:58:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:51] [CLEANUP] Stopped and removed 0 video connections
[11:58:51] [CLEANUP] Removed 0 video views
[11:58:51] [CLEANUP] Removed 0 feed scroll views
[11:58:51] [CLEANUP] Removed 0 status labels
[11:58:51] [CLEANUP] Reset agent query state
[11:58:51] [CLEANUP] Updated page indicator
[11:58:51] [CLEANUP] Rebuilt video layout
[11:58:51] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:51] [CLEANUP] ========================================
[11:58:51] [SERVER] Starting reconnect polling (5s interval)
[11:58:51] [CLEANUP] ========================================
[11:58:51] [CLEANUP] Cleaning up all agent connections and views
[11:58:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:51] [CLEANUP] Stopped and removed 0 video connections
[11:58:51] [CLEANUP] Removed 0 video views
[11:58:51] [CLEANUP] Removed 0 feed scroll views
[11:58:51] [CLEANUP] Removed 0 status labels
[11:58:51] [CLEANUP] Reset agent query state
[11:58:51] [CLEANUP] Updated page indicator
[11:58:51] [CLEANUP] Rebuilt video layout
[11:58:51] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:51] [CLEANUP] ========================================
[11:58:51] [SERVER] Starting reconnect polling (5s interval)
[11:58:53] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:53] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:53] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:53] HELLO → sent (cached token, role=query)
[11:58:53] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:53] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:53] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:53] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:53] [CLEANUP] ========================================
[11:58:53] [CLEANUP] Cleaning up all agent connections and views
[11:58:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:53] [CLEANUP] Stopped and removed 0 video connections
[11:58:53] [CLEANUP] Removed 0 video views
[11:58:53] [CLEANUP] Removed 0 feed scroll views
[11:58:53] [CLEANUP] Removed 0 status labels
[11:58:53] [CLEANUP] Reset agent query state
[11:58:53] [CLEANUP] Updated page indicator
[11:58:53] [CLEANUP] Rebuilt video layout
[11:58:53] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:53] [CLEANUP] ========================================
[11:58:53] [SERVER] Starting reconnect polling (5s interval)
[11:58:53] [CLEANUP] ========================================
[11:58:53] [CLEANUP] Cleaning up all agent connections and views
[11:58:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:53] [CLEANUP] Stopped and removed 0 video connections
[11:58:53] [CLEANUP] Removed 0 video views
[11:58:53] [CLEANUP] Removed 0 feed scroll views
[11:58:53] [CLEANUP] Removed 0 status labels
[11:58:53] [CLEANUP] Reset agent query state
[11:58:53] [CLEANUP] Updated page indicator
[11:58:53] [CLEANUP] Rebuilt video layout
[11:58:53] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:53] [CLEANUP] ========================================
[11:58:53] [SERVER] Starting reconnect polling (5s interval)
[11:58:53] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:58:54] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:58:54] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=141, isReloading=false
[11:58:54] [SEND_MESSAGE] ✅ Added optimistic message id=-43 to arrays, newMsgCount=142
[11:58:54] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=448
[11:58:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=142, first5Ids=[-43, 24533, 24532, 24531, 24530]
[11:58:54] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 142 messages
[11:58:54] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-43, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:54] [RELOAD_TAB] 📊 Building chatRows from 142 messages
[11:58:54] [RELOAD_TAB] 📊 Built 144 chatRows, estHeight=0.0
[11:58:54] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=153
[11:58:54] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:58:54] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:58:54] [SCROLL] 💓 alive, visible=135...143, rows=144, estHeight=0.0, heightCalls=299
[11:58:55] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:55] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:55] [CLIENT_SIG] Event received: type=0 messageId=24534
[11:58:55] [WS_EVENT] Received event: type=0, messageId=24534
[11:58:55] [WS_EVENT] 📨 New message notification (msgId=24534) - triggering incremental refresh, currentMsgCount=142
[11:58:55] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=142
[11:58:55] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24533, maxMemoryId=24533
[11:58:55] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24533
[11:58:55] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24534,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 10:58:54"}
[11:58:55] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-03-11 10:58:54, "message_type": 0, "session_id": ILUIWU, "ok": 1, "file_name": , "message_id": 24534]
[11:58:55] [DB_UPGRADE] Upgrading message ID: -43 → 24534, preserveOriginalDate=false
[11:58:55] [DB_UPGRADE] ✅ Upgraded -43 → 24534 with send_status=0, 1 row(s) affected
[11:58:55] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:55] HELLO → sent (cached token, role=query)
[11:58:55] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -43 → 24534
[11:58:55] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -43 → 24534
[11:58:55] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[11:58:55] [PUSH_TRACE] 📡 INCREMENTAL: Server returned 1 new messages, IDs=[24534]
[11:58:55] ReloadData 9
[11:58:55] [PUSH_TRACE] 📡 INCREMENTAL: BEFORE merge, memory has 142 msgs, first 10 IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:55] [PUSH_TRACE] 📡 INCREMENTAL: AFTER merge, added 0 new, total 142, first 10 IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:55] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[11:58:55] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=142
[11:58:55] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:55] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:55] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:55] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:55] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=142
[11:58:55] [CLEANUP] ========================================
[11:58:55] [CLEANUP] Cleaning up all agent connections and views
[11:58:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:55] [CLEANUP] Stopped and removed 0 video connections
[11:58:55] [CLEANUP] Removed 0 video views
[11:58:55] [CLEANUP] Removed 0 feed scroll views
[11:58:55] [CLEANUP] Removed 0 status labels
[11:58:55] [CLEANUP] Reset agent query state
[11:58:55] [CLEANUP] Updated page indicator
[11:58:55] [CLEANUP] Rebuilt video layout
[11:58:55] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:55] [CLEANUP] ========================================
[11:58:55] [SERVER] Starting reconnect polling (5s interval)
[11:58:55] [CLEANUP] ========================================
[11:58:55] [CLEANUP] Cleaning up all agent connections and views
[11:58:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:55] [CLEANUP] Stopped and removed 0 video connections
[11:58:55] [CLEANUP] Removed 0 video views
[11:58:55] [CLEANUP] Removed 0 feed scroll views
[11:58:55] [CLEANUP] Removed 0 status labels
[11:58:55] [CLEANUP] Reset agent query state
[11:58:55] [CLEANUP] Updated page indicator
[11:58:55] [CLEANUP] Rebuilt video layout
[11:58:55] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:55] [CLEANUP] ========================================
[11:58:55] [SERVER] Starting reconnect polling (5s interval)
[11:58:55] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=152
[11:58:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=142, first5Ids=[24534, 24533, 24532, 24531, 24530]
[11:58:55] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 142 messages
[11:58:55] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:55] [RELOAD_TAB] 📊 Building chatRows from 142 messages
[11:58:55] [RELOAD_TAB] 📊 Built 144 chatRows, estHeight=0.0
[11:58:55] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=152
[11:58:56] [CAM] viewerJoin → session: iosILUIWU, viewerId: d9y8h0PXlL22ss0_
[11:58:56] [WEBRTC] WebRTC client already exists, reusing it
[11:58:56] [WEBRTC] WebRTC client already exists, reusing it
[11:58:56] ensureCaptureStarted - adding peer
[11:58:56] tracksReady = true
[11:58:56] Added front video track to peer connection for d9y8h0PXlL22ss0_
[11:58:56] Added back video track to peer connection for d9y8h0PXlL22ss0_
[11:58:56] Added audio track to peer connection for d9y8h0PXlL22ss0_
[11:58:56] localVideoTrackFront ok
[11:58:56] localVideoTrackBack ok
[11:58:56] tracks already marked as ready
[11:58:56] Peer added with tracks, notifying viewer ready
[11:58:56] notifyViewerReady called
[11:58:56] notifyViewerReady -> Will send
[11:58:56] [CAM] Offer → session: iosILUIWU, viewerId: d9y8h0PXlL22ss0_
[11:58:56] [WEBRTC] WebRTC client already exists, reusing it
[11:58:56] [CAM] Peer connection ready, processing offer immediately
[11:58:56] Creating answer for d9y8h0PXlL22ss0_. Found 3 transceivers:
[11:58:56] Transceiver 0: video, direction=sendRecv, hasTrack=true
[11:58:56] Transceiver 1: video, direction=sendRecv, hasTrack=true
[11:58:56] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1416674092 1 udp 2122260224 192.168.1.8 59284 typ host generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote host → applying
[11:58:56] SEND answer for viewerId=d9y8h0PXlL22ss0_
[11:58:56] SDP length: 4817
[11:58:56] ICE gathering state: 1
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:3803494827 1 udp 2122129152 100.76.19.55 55503 typ host generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] ICE state for vid=d9y8h0PXlL22ss0_: 1 ( RTCIceConnectionState )
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121670400 192.0.0.6 49451 typ host generation 0 ufrag pdQa network-id 4 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:560904688 1 udp 2122129151 192.168.1.177 58226 typ host generation 0 ufrag O/gY network-id 1 network-cost 10"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1623946871 1 udp 2122063615 10.50.3.244 50903 typ host generation 0 ufrag O/gY network-id 11 network-cost 900"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121998079 10.29.166.113 57672 typ host generation 0 ufrag O/gY network-id 12 network-cost 900"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121932543 10.29.166.113 58381 typ host generation 0 ufrag O/gY network-id 4 network-cost 50"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121867007 10.29.166.113 56654 typ host generation 0 ufrag O/gY network-id 5 network-cost 50"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121801471 10.29.166.113 59065 typ host generation 0 ufrag O/gY network-id 6 network-cost 50"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121735935 10.29.166.113 61982 typ host generation 0 ufrag O/gY network-id 13 network-cost 50"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1376671704 1 udp 2121670399 10.29.166.113 60395 typ host generation 0 ufrag O/gY network-id 14 network-cost 50"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:4235239474 1 udp 2122265343 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 55981 typ host generation 0 ufrag O/gY network-id 3 network-cost 10"]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMLineIndex": 0, "sdpMid": Optional("0"), "candidate": "candidate:1137932801 1 udp 2122197247 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 53650 typ host generation 0 ufrag O/gY network-id 2 network-cost 10"]
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121604864 192.0.0.6 60182 typ host generation 0 ufrag pdQa network-id 7 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121539328 192.0.0.6 63524 typ host generation 0 ufrag pdQa network-id 9 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1744143277 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 49739 typ host generation 0 ufrag pdQa network-id 14 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [ICE] agent local srflx
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) srflx candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3768643258 1 udp 1685921535 84.227.75.34 58226 typ srflx raddr 192.168.1.177 rport 58226 generation 0 ufrag O/gY network-id 1 network-cost 10", "sdpMLineIndex": 0]
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1573643756 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54127 typ host generation 0 ufrag pdQa network-id 5 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54084 typ host generation 0 ufrag pdQa network-id 6 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55412 typ host generation 0 ufrag pdQa network-id 8 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53057 typ host generation 0 ufrag pdQa network-id 10 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1416674092 1 udp 2122260224 192.168.1.8 61532 typ host generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:3803494827 1 udp 2122129152 100.76.19.55 55180 typ host generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121670400 192.0.0.6 52405 typ host generation 0 ufrag pdQa network-id 4 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121604864 192.0.0.6 51878 typ host generation 0 ufrag pdQa network-id 7 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4198364031 1 udp 2121539328 192.0.0.6 60218 typ host generation 0 ufrag pdQa network-id 9 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1744143277 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 59735 typ host generation 0 ufrag pdQa network-id 14 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1573643756 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 50925 typ host generation 0 ufrag pdQa network-id 5 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 58210 typ host generation 0 ufrag pdQa network-id 6 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 63544 typ host generation 0 ufrag pdQa network-id 8 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1862652402 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49984 typ host generation 0 ufrag pdQa network-id 10 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [ICE] agent local srflx
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) srflx candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:540083422 1 udp 1685855999 194.230.158.30 49001 typ srflx raddr 10.50.3.244 rport 50903 generation 0 ufrag O/gY network-id 11 network-cost 900", "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local srflx
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) srflx candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:540083422 1 udp 1685855999 194.230.158.30 4965 typ srflx raddr 10.50.3.244 rport 50903 generation 0 ufrag O/gY network-id 11 network-cost 900", "sdpMLineIndex": 0]
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:344639877 1 udp 1686052607 212.252.118.51 23899 typ srflx raddr 192.168.1.8 rport 59284 generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote srflx → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:344639877 1 udp 1686052607 212.252.118.51 24327 typ srflx raddr 192.168.1.8 rport 61532 generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote srflx → applying
[11:58:56] [ICE] agent local relay → ip=192.168.1.31 port=59860
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) relay candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3756454948 1 udp 41755135 192.168.1.31 59860 typ relay raddr 84.227.75.34 rport 58226 generation 0 ufrag O/gY network-id 1 network-cost 10", "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local relay → ip=192.168.1.31 port=51275
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) relay candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:558637232 1 udp 24977663 192.168.1.31 51275 typ relay raddr 84.227.75.34 rport 51392 generation 0 ufrag O/gY network-id 1 network-cost 10", "sdpMLineIndex": 0]
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2866442168 1 tcp 1518280447 192.168.1.8 53666 typ host tcptype passive generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:471756095 1 tcp 1518149375 100.76.19.55 53667 typ host tcptype passive generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517690623 192.0.0.6 53668 typ host tcptype passive generation 0 ufrag pdQa network-id 4 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517625087 192.0.0.6 53669 typ host tcptype passive generation 0 ufrag pdQa network-id 7 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517559551 192.0.0.6 53670 typ host tcptype passive generation 0 ufrag pdQa network-id 9 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2573162297 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 53671 typ host tcptype passive generation 0 ufrag pdQa network-id 14 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2741055864 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 53672 typ host tcptype passive generation 0 ufrag pdQa network-id 5 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53673 typ host tcptype passive generation 0 ufrag pdQa network-id 6 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53674 typ host tcptype passive generation 0 ufrag pdQa network-id 8 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53675 typ host tcptype passive generation 0 ufrag pdQa network-id 10 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2866442168 1 tcp 1518280447 192.168.1.8 53676 typ host tcptype passive generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:471756095 1 tcp 1518149375 100.76.19.55 53677 typ host tcptype passive generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517690623 192.0.0.6 53678 typ host tcptype passive generation 0 ufrag pdQa network-id 4 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517625087 192.0.0.6 53679 typ host tcptype passive generation 0 ufrag pdQa network-id 7 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:77015019 1 tcp 1517559551 192.0.0.6 53680 typ host tcptype passive generation 0 ufrag pdQa network-id 9 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2573162297 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 53681 typ host tcptype passive generation 0 ufrag pdQa network-id 14 network-cost 900
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2741055864 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 53682 typ host tcptype passive generation 0 ufrag pdQa network-id 5 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53683 typ host tcptype passive generation 0 ufrag pdQa network-id 6 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53684 typ host tcptype passive generation 0 ufrag pdQa network-id 8 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:2444166502 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53685 typ host tcptype passive generation 0 ufrag pdQa network-id 10 network-cost 50
[11:58:56] [ICE] remote host → applying
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:1308514453 1 udp 1685921535 31.142.27.147 47523 typ srflx raddr 100.76.19.55 rport 55503 generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote srflx → applying
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:3754192228 1 tcp 1518149375 192.168.1.177 51409 typ host tcptype passive generation 0 ufrag O/gY network-id 1 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2657198819 1 tcp 1518083839 10.50.3.244 51415 typ host tcptype passive generation 0 ufrag O/gY network-id 11 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1518018303 10.29.166.113 51421 typ host tcptype passive generation 0 ufrag O/gY network-id 12 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1517952767 10.29.166.113 51427 typ host tcptype passive generation 0 ufrag O/gY network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1517887231 10.29.166.113 51433 typ host tcptype passive generation 0 ufrag O/gY network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1517821695 10.29.166.113 51439 typ host tcptype passive generation 0 ufrag O/gY network-id 6 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1517756159 10.29.166.113 51445 typ host tcptype passive generation 0 ufrag O/gY network-id 13 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:2896462668 1 tcp 1517690623 10.29.166.113 51451 typ host tcptype passive generation 0 ufrag O/gY network-id 14 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:47871142 1 tcp 1518285567 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 51457 typ host tcptype passive generation 0 ufrag O/gY network-id 3 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local host
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) host candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:3178868373 1 tcp 1518217471 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 51463 typ host tcptype passive generation 0 ufrag O/gY network-id 2 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local relay → ip=192.168.1.31 port=60977
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) relay candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["candidate": "candidate:3756454948 1 udp 41689599 192.168.1.31 60977 typ relay raddr 194.230.158.30 rport 49001 generation 0 ufrag O/gY network-id 11 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[11:58:56] [ICE] agent local relay → ip=192.168.1.31 port=56649
[11:58:56] [ICE] local → remote (d9y8h0PXlL22ss0_) relay candidate
[11:58:56] SEND ice for viewerId=d9y8h0PXlL22ss0_
[11:58:56] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:558637232 1 udp 24912127 192.168.1.31 56649 typ relay raddr 194.230.158.30 rport 6351 generation 0 ufrag O/gY network-id 11 network-cost 900"]
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:46597076 1 udp 41755135 192.168.1.31 57769 typ relay raddr 31.142.27.147 rport 47523 generation 0 ufrag pdQa network-id 13 network-cost 900
[11:58:56] [ICE] remote relay → applying (ip=192.168.1.31 port=57769)
[11:58:56] [CAM] iceFromViewer viewerId=d9y8h0PXlL22ss0_
[11:58:56] [CAM] Peer connection ready, processing ICE candidate immediately
[11:58:56] addRemoteCandidate for vid=d9y8h0PXlL22ss0_
[11:58:56] Found s:candidate:4235056960 1 udp 25108735 192.168.1.31 51776 typ relay raddr 212.252.118.51 rport 24263 generation 0 ufrag pdQa network-id 1 network-cost 10
[11:58:56] [ICE] remote relay → applying (ip=192.168.1.31 port=51776)
[11:58:56] [CAM] viewerJoin → session: iosILUIWU, viewerId: z3Hta23VCDGAVST2
[11:58:56] [WEBRTC] WebRTC client already exists, reusing it
[11:58:56] [WEBRTC] WebRTC client already exists, reusing it
[11:58:56] ensureCaptureStarted - adding peer
[11:58:56] tracksReady = true
[11:58:56] Added front video track to peer connection for z3Hta23VCDGAVST2
[11:58:56] Added back video track to peer connection for z3Hta23VCDGAVST2
[11:58:56] Added audio track to peer connection for z3Hta23VCDGAVST2
[11:58:56] localVideoTrackFront ok
[11:58:56] localVideoTrackBack ok
[11:58:56] tracks already marked as ready
[11:58:56] Peer added with tracks, notifying viewer ready
[11:58:56] notifyViewerReady called
[11:58:56] notifyViewerReady -> Will send
[11:58:56] ICE state for vid=d9y8h0PXlL22ss0_: 2 ( RTCIceConnectionState )
[11:58:56] [STATS] starting poll for vid=d9y8h0PXlL22ss0_
[11:58:56] [PUSH] Silent push received
[11:58:56] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:58:56 +0000, appState=0, message_id=nil
[11:58:56] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:56] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:58:56 +0000
[11:58:56] [PUSH_EMBED] No embedded message_data in notification
[11:58:56] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:58:56] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524], handled=false
[11:58:56] [PUSH] No embedded data, pre-loading messages from server
[11:58:56] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:58:57] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:57] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:57] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:58:57] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:58:57] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:57] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=140, IDs=[24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525, 24524]
[11:58:57] [PRELOAD_CACHE] Preserving 91 push-inserted messages: [24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:57] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=91, IDs=[24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:58:57] [PUSH_TRACE] 🔀 mergeMessages: merged.count=141, first 10 IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:57] [PUSH_PRELOAD] ⚡ Pre-cached 141 messages for instant display (preserved 91 from push)
[11:58:57] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:58:57] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 142 msgs, IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:58:57] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 24534, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[11:58:57] [PUSH] Parsed message_id: 24534
[11:58:57] [PUSH] Parsed operation_type: 3
[11:58:57] [PUSH] Taking direct action: opType=3, messageId=24534
[11:58:57] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24534
[11:58:57] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:57] HELLO → sent (cached token, role=query)
[11:58:57] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:57] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:57] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:57] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:57] [CLEANUP] ========================================
[11:58:57] [CLEANUP] Cleaning up all agent connections and views
[11:58:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:57] [CLEANUP] Stopped and removed 0 video connections
[11:58:57] [CLEANUP] Removed 0 video views
[11:58:57] [CLEANUP] Removed 0 feed scroll views
[11:58:57] [CLEANUP] Removed 0 status labels
[11:58:57] [CLEANUP] Reset agent query state
[11:58:57] [CLEANUP] Updated page indicator
[11:58:57] [CLEANUP] Rebuilt video layout
[11:58:57] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:57] [CLEANUP] ========================================
[11:58:57] [SERVER] Starting reconnect polling (5s interval)
[11:58:57] [CLEANUP] ========================================
[11:58:57] [CLEANUP] Cleaning up all agent connections and views
[11:58:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:57] [CLEANUP] Stopped and removed 0 video connections
[11:58:57] [CLEANUP] Removed 0 video views
[11:58:57] [CLEANUP] Removed 0 feed scroll views
[11:58:57] [CLEANUP] Removed 0 status labels
[11:58:57] [CLEANUP] Reset agent query state
[11:58:57] [CLEANUP] Updated page indicator
[11:58:57] [CLEANUP] Rebuilt video layout
[11:58:57] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:57] [CLEANUP] ========================================
[11:58:57] [SERVER] Starting reconnect polling (5s interval)
[11:58:57] [CLIENT_SIG] Event received: type=3 messageId=24534
[11:58:57] [WS_EVENT] Received event: type=3, messageId=24534
[11:58:57] [WS_EVENT] Read receipt for message 24534 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:58:57] [NETWORK] Status changed: connected
[11:58:58] [NETWORK] Status changed: connected
[11:58:58] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:58] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:58:59] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:58:59] HELLO → sent (cached token, role=query)
[11:58:59] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:58:59] [WS] Query connection failed - cleaning up all agent connections and views
[11:58:59] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:58:59] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:58:59] [CLEANUP] ========================================
[11:58:59] [CLEANUP] Cleaning up all agent connections and views
[11:58:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:59] [CLEANUP] Stopped and removed 0 video connections
[11:58:59] [CLEANUP] Removed 0 video views
[11:58:59] [CLEANUP] Removed 0 feed scroll views
[11:58:59] [CLEANUP] Removed 0 status labels
[11:58:59] [CLEANUP] Reset agent query state
[11:58:59] [CLEANUP] Updated page indicator
[11:58:59] [CLEANUP] Rebuilt video layout
[11:58:59] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:59] [CLEANUP] ========================================
[11:58:59] [SERVER] Starting reconnect polling (5s interval)
[11:58:59] [CLEANUP] ========================================
[11:58:59] [CLEANUP] Cleaning up all agent connections and views
[11:58:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:58:59] [CLEANUP] Stopped and removed 0 video connections
[11:58:59] [CLEANUP] Removed 0 video views
[11:58:59] [CLEANUP] Removed 0 feed scroll views
[11:58:59] [CLEANUP] Removed 0 status labels
[11:58:59] [CLEANUP] Reset agent query state
[11:58:59] [CLEANUP] Updated page indicator
[11:58:59] [CLEANUP] Rebuilt video layout
[11:58:59] [CLEANUP] ✅ All agent connections and views cleaned up
[11:58:59] [CLEANUP] ========================================
[11:58:59] [SERVER] Starting reconnect polling (5s interval)
[11:58:59] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:58:59] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=142, isReloading=false
[11:58:59] [SEND_MESSAGE] ✅ Added optimistic message id=-44 to arrays, newMsgCount=143
[11:58:59] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=152
[11:58:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=143, first5Ids=[-44, 24534, 24533, 24532, 24531]
[11:58:59] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 143 messages
[11:58:59] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-44, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:58:59] [RELOAD_TAB] 📊 Building chatRows from 143 messages
[11:58:59] [RELOAD_TAB] 📊 Built 145 chatRows, estHeight=0.0
[11:58:59] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=154
[11:58:59] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:58:59] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:58:59] [ICE] Warning: no srflx/relay candidates generated for viewer z3Hta23VCDGAVST2 within 3s — check agent STUN/TURN reachability and firewall
[11:58:59] [SCROLL] 💓 alive, visible=136...144, rows=145, estHeight=0.0, heightCalls=301
[11:59:00] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:00] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24535,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 10:58:59"}
[11:59:00] [CLIENT_SIG] Event received: type=0 messageId=24535
[11:59:00] [WS_EVENT] Received event: type=0, messageId=24535
[11:59:00] [CHAT] receive_message.php JSON: ["ok": 1, "session_id": ILUIWU, "datesent_utc": 2026-03-11 10:58:59, "file_name": , "message_id": 24535, "message_type": 0]
[11:59:00] [WS_EVENT] 📨 New message notification (msgId=24535) - triggering incremental refresh, currentMsgCount=143
[11:59:00] [DB_UPGRADE] Upgrading message ID: -44 → 24535, preserveOriginalDate=false
[11:59:00] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=143
[11:59:00] [DB_UPGRADE] ✅ Upgraded -44 → 24535 with send_status=0, 1 row(s) affected
[11:59:00] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24535, maxMemoryId=24534
[11:59:00] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24535
[11:59:00] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -44 → 24535
[11:59:00] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -44 → 24535
[11:59:00] [INCREMENTAL_SYNC] ✅ No new messages
[11:59:00] ReloadData 9
[11:59:00] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:00] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=143
[11:59:00] [NETWORK] Status changed: connected
[11:59:01] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:01] HELLO → sent (cached token, role=query)
[11:59:01] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:01] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:01] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:01] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:01] [CLEANUP] ========================================
[11:59:01] [CLEANUP] Cleaning up all agent connections and views
[11:59:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:01] [CLEANUP] Stopped and removed 0 video connections
[11:59:01] [CLEANUP] Removed 0 video views
[11:59:01] [CLEANUP] Removed 0 feed scroll views
[11:59:01] [CLEANUP] Removed 0 status labels
[11:59:01] [CLEANUP] Reset agent query state
[11:59:01] [CLEANUP] Updated page indicator
[11:59:01] [CLEANUP] Rebuilt video layout
[11:59:01] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:01] [CLEANUP] ========================================
[11:59:01] [SERVER] Starting reconnect polling (5s interval)
[11:59:01] [CLEANUP] ========================================
[11:59:01] [CLEANUP] Cleaning up all agent connections and views
[11:59:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:01] [CLEANUP] Stopped and removed 0 video connections
[11:59:01] [CLEANUP] Removed 0 video views
[11:59:01] [CLEANUP] Removed 0 feed scroll views
[11:59:01] [CLEANUP] Removed 0 status labels
[11:59:01] [CLEANUP] Reset agent query state
[11:59:01] [CLEANUP] Updated page indicator
[11:59:01] [CLEANUP] Rebuilt video layout
[11:59:01] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:01] [CLEANUP] ========================================
[11:59:01] [SERVER] Starting reconnect polling (5s interval)
[11:59:01] [PUSH] Silent push received
[11:59:01] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:01 +0000, appState=0, message_id=nil
[11:59:01] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=141, IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:59:01] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:01 +0000
[11:59:01] [PUSH_EMBED] No embedded message_data in notification
[11:59:01] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:59:01] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=141, IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525], handled=false
[11:59:01] [PUSH] No embedded data, pre-loading messages from server
[11:59:01] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:59:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:59:01] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:59:01] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:59:01] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=141, IDs=[24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526, 24525]
[11:59:01] [PRELOAD_CACHE] Preserving 92 push-inserted messages: [24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:01] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=92, IDs=[24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:01] [PUSH_TRACE] 🔀 mergeMessages: merged.count=142, first 10 IDs=[24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:59:01] [PUSH_PRELOAD] ⚡ Pre-cached 142 messages for instant display (preserved 92 from push)
[11:59:01] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:59:01] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 143 msgs, IDs=[24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:59:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 24535, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[11:59:01] [PUSH] Parsed message_id: 24535
[11:59:01] [PUSH] Parsed operation_type: 3
[11:59:01] [PUSH] Taking direct action: opType=3, messageId=24535
[11:59:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24535
[11:59:02] [CLIENT_SIG] Event received: type=3 messageId=24535
[11:59:02] [WS_EVENT] Received event: type=3, messageId=24535
[11:59:02] [WS_EVENT] Read receipt for message 24535 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:02] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:02] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:02] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:02] HELLO → sent (cached token, role=query)
[11:59:02] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:02] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:02] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:02] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:02] [CLEANUP] ========================================
[11:59:02] [CLEANUP] Cleaning up all agent connections and views
[11:59:02] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:02] [CLEANUP] Stopped and removed 0 video connections
[11:59:02] [CLEANUP] Removed 0 video views
[11:59:02] [CLEANUP] Removed 0 feed scroll views
[11:59:02] [CLEANUP] Removed 0 status labels
[11:59:02] [CLEANUP] Reset agent query state
[11:59:02] [CLEANUP] Updated page indicator
[11:59:02] [CLEANUP] Rebuilt video layout
[11:59:02] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:02] [CLEANUP] ========================================
[11:59:02] [SERVER] Starting reconnect polling (5s interval)
[11:59:02] [CLEANUP] ========================================
[11:59:02] [CLEANUP] Cleaning up all agent connections and views
[11:59:02] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:02] [CLEANUP] Stopped and removed 0 video connections
[11:59:02] [CLEANUP] Removed 0 video views
[11:59:02] [CLEANUP] Removed 0 feed scroll views
[11:59:02] [CLEANUP] Removed 0 status labels
[11:59:02] [CLEANUP] Reset agent query state
[11:59:02] [CLEANUP] Updated page indicator
[11:59:02] [CLEANUP] Rebuilt video layout
[11:59:02] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:02] [CLEANUP] ========================================
[11:59:02] [SERVER] Starting reconnect polling (5s interval)
[11:59:02] [NETWORK] Status changed: connected
[11:59:04] [NETWORK] Status changed: connected
[11:59:04] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:04] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:04] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:04] HELLO → sent (cached token, role=query)
[11:59:04] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:04] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:04] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:04] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:04] [CLEANUP] ========================================
[11:59:04] [CLEANUP] Cleaning up all agent connections and views
[11:59:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:04] [CLEANUP] Stopped and removed 0 video connections
[11:59:04] [CLEANUP] Removed 0 video views
[11:59:04] [CLEANUP] Removed 0 feed scroll views
[11:59:04] [CLEANUP] Removed 0 status labels
[11:59:04] [CLEANUP] Reset agent query state
[11:59:04] [CLEANUP] Updated page indicator
[11:59:04] [CLEANUP] Rebuilt video layout
[11:59:04] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:04] [CLEANUP] ========================================
[11:59:04] [SERVER] Starting reconnect polling (5s interval)
[11:59:04] [CLEANUP] ========================================
[11:59:04] [CLEANUP] Cleaning up all agent connections and views
[11:59:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:04] [CLEANUP] Stopped and removed 0 video connections
[11:59:04] [CLEANUP] Removed 0 video views
[11:59:04] [CLEANUP] Removed 0 feed scroll views
[11:59:04] [CLEANUP] Removed 0 status labels
[11:59:04] [CLEANUP] Reset agent query state
[11:59:04] [CLEANUP] Updated page indicator
[11:59:04] [CLEANUP] Rebuilt video layout
[11:59:04] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:04] [CLEANUP] ========================================
[11:59:04] [SERVER] Starting reconnect polling (5s interval)
[11:59:06] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:06] HELLO → sent (cached token, role=query)
[11:59:06] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:06] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:06] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:06] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:06] [CLEANUP] ========================================
[11:59:06] [CLEANUP] Cleaning up all agent connections and views
[11:59:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:06] [CLEANUP] Stopped and removed 0 video connections
[11:59:06] [CLEANUP] Removed 0 video views
[11:59:06] [CLEANUP] Removed 0 feed scroll views
[11:59:06] [CLEANUP] Removed 0 status labels
[11:59:06] [CLEANUP] Reset agent query state
[11:59:06] [CLEANUP] Updated page indicator
[11:59:06] [CLEANUP] Rebuilt video layout
[11:59:06] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:06] [CLEANUP] ========================================
[11:59:06] [SERVER] Starting reconnect polling (5s interval)
[11:59:06] [CLEANUP] ========================================
[11:59:06] [CLEANUP] Cleaning up all agent connections and views
[11:59:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:06] [CLEANUP] Stopped and removed 0 video connections
[11:59:06] [CLEANUP] Removed 0 video views
[11:59:06] [CLEANUP] Removed 0 feed scroll views
[11:59:06] [CLEANUP] Removed 0 status labels
[11:59:06] [CLEANUP] Reset agent query state
[11:59:06] [CLEANUP] Updated page indicator
[11:59:06] [CLEANUP] Rebuilt video layout
[11:59:06] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:06] [CLEANUP] ========================================
[11:59:06] [SERVER] Starting reconnect polling (5s interval)
[11:59:08] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:08] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:08] HELLO → sent (cached token, role=query)
[11:59:08] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:08] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:08] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:08] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:08] [CLEANUP] ========================================
[11:59:08] [CLEANUP] Cleaning up all agent connections and views
[11:59:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:08] [CLEANUP] Stopped and removed 0 video connections
[11:59:08] [CLEANUP] Removed 0 video views
[11:59:08] [CLEANUP] Removed 0 feed scroll views
[11:59:08] [CLEANUP] Removed 0 status labels
[11:59:08] [CLEANUP] Reset agent query state
[11:59:08] [CLEANUP] Updated page indicator
[11:59:08] [CLEANUP] Rebuilt video layout
[11:59:08] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:08] [CLEANUP] ========================================
[11:59:08] [SERVER] Starting reconnect polling (5s interval)
[11:59:08] [CLEANUP] ========================================
[11:59:08] [CLEANUP] Cleaning up all agent connections and views
[11:59:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:08] [CLEANUP] Stopped and removed 0 video connections
[11:59:08] [CLEANUP] Removed 0 video views
[11:59:08] [CLEANUP] Removed 0 feed scroll views
[11:59:08] [CLEANUP] Removed 0 status labels
[11:59:08] [CLEANUP] Reset agent query state
[11:59:08] [CLEANUP] Updated page indicator
[11:59:08] [CLEANUP] Rebuilt video layout
[11:59:08] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:08] [CLEANUP] ========================================
[11:59:08] [SERVER] Starting reconnect polling (5s interval)
[11:59:09] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:09] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:10] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:10] HELLO → sent (cached token, role=query)
[11:59:10] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:10] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:10] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:10] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:10] [CLEANUP] ========================================
[11:59:10] [CLEANUP] Cleaning up all agent connections and views
[11:59:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:10] [CLEANUP] Stopped and removed 0 video connections
[11:59:10] [CLEANUP] Removed 0 video views
[11:59:10] [CLEANUP] Removed 0 feed scroll views
[11:59:10] [CLEANUP] Removed 0 status labels
[11:59:10] [CLEANUP] Reset agent query state
[11:59:10] [CLEANUP] Updated page indicator
[11:59:10] [CLEANUP] Rebuilt video layout
[11:59:10] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:10] [CLEANUP] ========================================
[11:59:10] [SERVER] Starting reconnect polling (5s interval)
[11:59:10] [CLEANUP] ========================================
[11:59:10] [CLEANUP] Cleaning up all agent connections and views
[11:59:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:10] [CLEANUP] Stopped and removed 0 video connections
[11:59:10] [CLEANUP] Removed 0 video views
[11:59:10] [CLEANUP] Removed 0 feed scroll views
[11:59:10] [CLEANUP] Removed 0 status labels
[11:59:10] [CLEANUP] Reset agent query state
[11:59:10] [CLEANUP] Updated page indicator
[11:59:10] [CLEANUP] Rebuilt video layout
[11:59:10] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:10] [CLEANUP] ========================================
[11:59:10] [SERVER] Starting reconnect polling (5s interval)
[11:59:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:12] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:12] HELLO → sent (cached token, role=query)
[11:59:12] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:12] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:12] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:12] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:12] [CLEANUP] ========================================
[11:59:12] [CLEANUP] Cleaning up all agent connections and views
[11:59:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:12] [CLEANUP] Stopped and removed 0 video connections
[11:59:12] [CLEANUP] Removed 0 video views
[11:59:12] [CLEANUP] Removed 0 feed scroll views
[11:59:12] [CLEANUP] Removed 0 status labels
[11:59:12] [CLEANUP] Reset agent query state
[11:59:12] [CLEANUP] Updated page indicator
[11:59:12] [CLEANUP] Rebuilt video layout
[11:59:12] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:12] [CLEANUP] ========================================
[11:59:12] [SERVER] Starting reconnect polling (5s interval)
[11:59:12] [CLEANUP] ========================================
[11:59:12] [CLEANUP] Cleaning up all agent connections and views
[11:59:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:12] [CLEANUP] Stopped and removed 0 video connections
[11:59:12] [CLEANUP] Removed 0 video views
[11:59:12] [CLEANUP] Removed 0 feed scroll views
[11:59:12] [CLEANUP] Removed 0 status labels
[11:59:12] [CLEANUP] Reset agent query state
[11:59:12] [CLEANUP] Updated page indicator
[11:59:12] [CLEANUP] Rebuilt video layout
[11:59:12] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:12] [CLEANUP] ========================================
[11:59:12] [SERVER] Starting reconnect polling (5s interval)
[11:59:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:13] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:13] HELLO → sent (cached token, role=query)
[11:59:13] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:13] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:13] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:13] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:13] [CLEANUP] ========================================
[11:59:13] [CLEANUP] Cleaning up all agent connections and views
[11:59:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:13] [CLEANUP] Stopped and removed 0 video connections
[11:59:13] [CLEANUP] Removed 0 video views
[11:59:13] [CLEANUP] Removed 0 feed scroll views
[11:59:13] [CLEANUP] Removed 0 status labels
[11:59:13] [CLEANUP] Reset agent query state
[11:59:13] [CLEANUP] Updated page indicator
[11:59:13] [CLEANUP] Rebuilt video layout
[11:59:13] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:13] [CLEANUP] ========================================
[11:59:13] [SERVER] Starting reconnect polling (5s interval)
[11:59:13] [CLEANUP] ========================================
[11:59:13] [CLEANUP] Cleaning up all agent connections and views
[11:59:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:13] [CLEANUP] Stopped and removed 0 video connections
[11:59:13] [CLEANUP] Removed 0 video views
[11:59:13] [CLEANUP] Removed 0 feed scroll views
[11:59:13] [CLEANUP] Removed 0 status labels
[11:59:13] [CLEANUP] Reset agent query state
[11:59:13] [CLEANUP] Updated page indicator
[11:59:13] [CLEANUP] Rebuilt video layout
[11:59:13] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:13] [CLEANUP] ========================================
[11:59:13] [SERVER] Starting reconnect polling (5s interval)
[11:59:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:15] HELLO → sent (cached token, role=query)
[11:59:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:15] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:15] [CLEANUP] ========================================
[11:59:15] [CLEANUP] Cleaning up all agent connections and views
[11:59:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:15] [CLEANUP] Stopped and removed 0 video connections
[11:59:15] [CLEANUP] Removed 0 video views
[11:59:15] [CLEANUP] Removed 0 feed scroll views
[11:59:15] [CLEANUP] Removed 0 status labels
[11:59:15] [CLEANUP] Reset agent query state
[11:59:15] [CLEANUP] Updated page indicator
[11:59:15] [CLEANUP] Rebuilt video layout
[11:59:15] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:15] [CLEANUP] ========================================
[11:59:15] [SERVER] Starting reconnect polling (5s interval)
[11:59:15] [CLEANUP] ========================================
[11:59:15] [CLEANUP] Cleaning up all agent connections and views
[11:59:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:15] [CLEANUP] Stopped and removed 0 video connections
[11:59:15] [CLEANUP] Removed 0 video views
[11:59:15] [CLEANUP] Removed 0 feed scroll views
[11:59:15] [CLEANUP] Removed 0 status labels
[11:59:15] [CLEANUP] Reset agent query state
[11:59:15] [CLEANUP] Updated page indicator
[11:59:15] [CLEANUP] Rebuilt video layout
[11:59:15] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:15] [CLEANUP] ========================================
[11:59:15] [SERVER] Starting reconnect polling (5s interval)
[11:59:16] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:16] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:17] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:17] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:17] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:17] HELLO → sent (cached token, role=query)
[11:59:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:17] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:17] [CLEANUP] ========================================
[11:59:17] [CLEANUP] Cleaning up all agent connections and views
[11:59:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:17] [CLEANUP] Stopped and removed 0 video connections
[11:59:17] [CLEANUP] Removed 0 video views
[11:59:17] [CLEANUP] Removed 0 feed scroll views
[11:59:17] [CLEANUP] Removed 0 status labels
[11:59:17] [CLEANUP] Reset agent query state
[11:59:17] [CLEANUP] Updated page indicator
[11:59:17] [CLEANUP] Rebuilt video layout
[11:59:17] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:17] [CLEANUP] ========================================
[11:59:17] [SERVER] Starting reconnect polling (5s interval)
[11:59:17] [CLEANUP] ========================================
[11:59:17] [CLEANUP] Cleaning up all agent connections and views
[11:59:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:17] [CLEANUP] Stopped and removed 0 video connections
[11:59:17] [CLEANUP] Removed 0 video views
[11:59:17] [CLEANUP] Removed 0 feed scroll views
[11:59:17] [CLEANUP] Removed 0 status labels
[11:59:17] [CLEANUP] Reset agent query state
[11:59:17] [CLEANUP] Updated page indicator
[11:59:17] [CLEANUP] Rebuilt video layout
[11:59:17] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:17] [CLEANUP] ========================================
[11:59:17] [SERVER] Starting reconnect polling (5s interval)
[11:59:18] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:18] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 10:59:18 +0000 - type: unknown, operation_type: 0, message_id: 24536, session_id: ILUIWU, state: 0
[11:59:18] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 10:59:16";
"file_name" = "";
message = "I cannot turn on my camera, while Im doing app is crashing";
"message_id" = 24536;
"message_type" = 0;
"prev_session_message_id" = 24535;
"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;
}, AnyHashable("message_id"): 24536]
[11:59:18] [PUSH] App active - suppressing notification UI, posting internal event
[11:59:18] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:18 +0000
[11:59:18] [PUSH_TRACE] ⬇️ Processing embedded message_id=24536
[11:59:18] [PUSH_EMBED] 📩 Received embedded message: id=24536, type=0, sender=Esra
[11:59:18] [PUSH_TRACE] ⬇️ Message details: text="I cannot turn on my camera, while Im doing app is ...", datesent=2026-03-11 10:59:16
[11:59:18] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:59:18] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_EMBED] ✅ Saved message 24536 to local DB (sync)
[11:59:18] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24536
[11:59:18] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24536
[11:59:18] [PUSH_TRACE] 📦 Cache state: valid=true, count=142, IDs=[24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:59:18] [PUSH_EMBED] Inserted message 24536 into existing cache (now 143 messages)
[11:59:18] [PUSH_TRACE] 📦 ✅ Inserted message 24536, cache now has IDs: [24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:18] [PUSH_TRACE] 📦 EXITING cache update queue for message 24536
[11:59:18] [PUSH_EMBED] Fetching evolution data for message 24536 in background
[11:59:18] [PUSH_EMBED] ✅ Fully processed message 24536
[11:59:18] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24536
[11:59:18] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 143 msgs, IDs=[24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527, 24526]
[11:59:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 10:59:16";
"file_name" = "";
message = "I cannot turn on my camera, while Im doing app is crashing";
"message_id" = 24536;
"message_type" = 0;
"prev_session_message_id" = 24535;
"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;
}, AnyHashable("message_id"): 24536]
[11:59:18] [PUSH_EMBED_VC] Processing embedded message: id=24536, type=0, sender=Esra, prevId=24535
[11:59:18] [PUSH_EMBED_VC] Inserted message 24536 into allMessagesWithReadBy (now 144 messages)
[11:59:18] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=144
[11:59:18] [PUSH_EMBED_VC] ✅ Previous message 24535 exists in memory
[11:59:18] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:59:18] [PUSH] Parsed message_id: 24536
[11:59:18] [PUSH] Parsed operation_type: 0
[11:59:18] [PUSH_EMBED_VC] Saved message 24536 to local DB
[11:59:18] [PUSH] Taking direct action: opType=0, messageId=24536
[11:59:18] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24536
[11:59:18] [PUSH] ⚡ Message 24536 already in memory - skipping duplicate notification entirely
[11:59:18] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:59:18] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:59:18] [PUSH_TRACE] 👁️ Received message id=24536, text="I cannot turn on my camera, wh..."
[11:59:18] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:59:18] [PUSH_UI] Message 24536 already in memory - skipping insert
[11:59:18] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:59:18] [PUSH] Silent push received
[11:59:18] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:18 +0000, appState=0, message_id=24536
[11:59:18] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:18] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:18 +0000
[11:59:18] [PUSH_TRACE] ⬇️ Processing embedded message_id=24536
[11:59:18] [PUSH_EMBED] 📩 Received embedded message: id=24536, type=0, sender=Esra
[11:59:18] [PUSH_TRACE] ⬇️ Message details: text="I cannot turn on my camera, while Im doing app is ...", datesent=2026-03-11 10:59:16
[11:59:18] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:59:18] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_EMBED] ✅ Saved message 24536 to local DB (sync)
[11:59:18] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24536
[11:59:18] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24536
[11:59:18] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24536
[11:59:18] [PUSH_TRACE] 📦 Cache state: valid=true, count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:18] [PUSH_TRACE] 📦 ⚠️ Message 24536 already in cache, skipping insert
[11:59:18] [PUSH_TRACE] 📦 EXITING cache update queue for message 24536
[11:59:18] [PUSH_EMBED] Fetching evolution data for message 24536 in background
[11:59:18] [PUSH_EMBED] ✅ Fully processed message 24536
[11:59:18] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24536
[11:59:18] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527], handled=true
[11:59:18] [PUSH] Embedded message handled instantly from silent push
[11:59:18] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[11:59:18] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24536
[11:59:18] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:59:18] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:59:18] [PUSH_TRACE] 👁️ Received message id=24536, text="I cannot turn on my camera, wh..."
[11:59:18] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:59:18] [PUSH_UI] Message 24536 already in memory - skipping insert
[11:59:18] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:59:18] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 144 msgs, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-03-11 10:59:16";
"file_name" = "";
message = "I cannot turn on my camera, while Im doing app is crashing";
"message_id" = 24536;
"message_type" = 0;
"prev_session_message_id" = 24535;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 24536, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
[11:59:18] [PUSH_EMBED_VC] Message 24536 already in memory - skipping
[11:59:18] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:59:18] [PUSH] Parsed message_id: 24536
[11:59:18] [PUSH] Parsed operation_type: 0
[11:59:18] [PUSH] Taking direct action: opType=0, messageId=24536
[11:59:18] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24536
[11:59:18] [PUSH] ⚡ Message 24536 already in memory - skipping duplicate notification entirely
[11:59:18] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=153
[11:59:18] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=144, first5Ids=[24536, 24535, 24534, 24533, 24532]
[11:59:18] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 144 messages
[11:59:18] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:18] [RELOAD_TAB] 📊 Building chatRows from 144 messages
[11:59:18] [RELOAD_TAB] 📊 Built 146 chatRows, estHeight=0.0
[11:59:18] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24535 → 24536
[11:59:18] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=155
[11:59:18] [SCROLL] 💓 alive, visible=137...145, rows=146, estHeight=0.0, heightCalls=303
[11:59:18] [CLIENT_SIG] Event received: type=0 messageId=24536
[11:59:18] [WS_EVENT] Received event: type=0, messageId=24536
[11:59:18] [WS_EVENT] 📨 New message notification (msgId=24536) - triggering incremental refresh, currentMsgCount=144
[11:59:18] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=144
[11:59:18] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24536, maxMemoryId=24536
[11:59:18] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24536
[11:59:18] [PUSH_EMBED] Got evolution data for message 24536, saving to local DB
[11:59:18] [PUSH_EMBED] Saved evolution data for message 24536
[11:59:18] [PUSH_EMBED] Got evolution data for message 24536, saving to local DB
[11:59:18] [PUSH_EMBED] Saved evolution data for message 24536
[11:59:18] [INCREMENTAL_SYNC] ✅ No new messages
[11:59:18] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=144
[11:59:19] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:19] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:19] HELLO → sent (cached token, role=query)
[11:59:19] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:19] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:19] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:19] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:19] [CLEANUP] ========================================
[11:59:19] [CLEANUP] Cleaning up all agent connections and views
[11:59:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:19] [CLEANUP] Stopped and removed 0 video connections
[11:59:19] [CLEANUP] Removed 0 video views
[11:59:19] [CLEANUP] Removed 0 feed scroll views
[11:59:19] [CLEANUP] Removed 0 status labels
[11:59:19] [CLEANUP] Reset agent query state
[11:59:19] [CLEANUP] Updated page indicator
[11:59:19] [CLEANUP] Rebuilt video layout
[11:59:19] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:19] [CLEANUP] ========================================
[11:59:19] [SERVER] Starting reconnect polling (5s interval)
[11:59:19] [CLEANUP] ========================================
[11:59:19] [CLEANUP] Cleaning up all agent connections and views
[11:59:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:19] [CLEANUP] Stopped and removed 0 video connections
[11:59:19] [CLEANUP] Removed 0 video views
[11:59:19] [CLEANUP] Removed 0 feed scroll views
[11:59:19] [CLEANUP] Removed 0 status labels
[11:59:19] [CLEANUP] Reset agent query state
[11:59:19] [CLEANUP] Updated page indicator
[11:59:19] [CLEANUP] Rebuilt video layout
[11:59:19] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:19] [CLEANUP] ========================================
[11:59:19] [SERVER] Starting reconnect polling (5s interval)
[11:59:20] [PUSH] Silent push received
[11:59:20] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:20 +0000, appState=0, message_id=nil
[11:59:20] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:20] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:20 +0000
[11:59:20] [PUSH_EMBED] No embedded message_data in notification
[11:59:20] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:59:20] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527], handled=false
[11:59:20] [PUSH] No embedded data, pre-loading messages from server
[11:59:20] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:59:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:59:20] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:59:20] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:20] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:20] [PRELOAD_CACHE] Preserving 93 push-inserted messages: [24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:20] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=93, IDs=[24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:20] [PUSH_TRACE] 🔀 mergeMessages: merged.count=143, first 10 IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:20] [PUSH_PRELOAD] ⚡ Pre-cached 143 messages for instant display (preserved 93 from push)
[11:59:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:59:20] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 144 msgs, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24536]
[11:59:20] [PUSH] Parsed message_id: 24536
[11:59:20] [PUSH] Parsed operation_type: 3
[11:59:20] [PUSH] Taking direct action: opType=3, messageId=24536
[11:59:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24536
[11:59:20] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:20] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:21] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:21] HELLO → sent (cached token, role=query)
[11:59:21] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:21] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:21] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:21] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:21] [CLEANUP] ========================================
[11:59:21] [CLEANUP] Cleaning up all agent connections and views
[11:59:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:21] [CLEANUP] Stopped and removed 0 video connections
[11:59:21] [CLEANUP] Removed 0 video views
[11:59:21] [CLEANUP] Removed 0 feed scroll views
[11:59:21] [CLEANUP] Removed 0 status labels
[11:59:21] [CLEANUP] Reset agent query state
[11:59:21] [CLEANUP] Updated page indicator
[11:59:21] [CLEANUP] Rebuilt video layout
[11:59:21] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:21] [CLEANUP] ========================================
[11:59:21] [SERVER] Starting reconnect polling (5s interval)
[11:59:21] [CLEANUP] ========================================
[11:59:21] [CLEANUP] Cleaning up all agent connections and views
[11:59:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:21] [CLEANUP] Stopped and removed 0 video connections
[11:59:21] [CLEANUP] Removed 0 video views
[11:59:21] [CLEANUP] Removed 0 feed scroll views
[11:59:21] [CLEANUP] Removed 0 status labels
[11:59:21] [CLEANUP] Reset agent query state
[11:59:21] [CLEANUP] Updated page indicator
[11:59:21] [CLEANUP] Rebuilt video layout
[11:59:21] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:21] [CLEANUP] ========================================
[11:59:21] [SERVER] Starting reconnect polling (5s interval)
[11:59:22] [CLIENT_SIG] Event received: type=3 messageId=24536
[11:59:22] [WS_EVENT] Received event: type=3, messageId=24536
[11:59:22] [WS_EVENT] Read receipt for message 24536 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:59:22] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:22] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:23] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:23] HELLO → sent (cached token, role=query)
[11:59:23] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:23] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:23] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:23] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:23] [CLEANUP] ========================================
[11:59:23] [CLEANUP] Cleaning up all agent connections and views
[11:59:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:23] [CLEANUP] Stopped and removed 0 video connections
[11:59:23] [CLEANUP] Removed 0 video views
[11:59:23] [CLEANUP] Removed 0 feed scroll views
[11:59:23] [CLEANUP] Removed 0 status labels
[11:59:23] [CLEANUP] Reset agent query state
[11:59:23] [CLEANUP] Updated page indicator
[11:59:23] [CLEANUP] Rebuilt video layout
[11:59:23] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:23] [CLEANUP] ========================================
[11:59:23] [SERVER] Starting reconnect polling (5s interval)
[11:59:23] [CLEANUP] ========================================
[11:59:23] [CLEANUP] Cleaning up all agent connections and views
[11:59:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:23] [CLEANUP] Stopped and removed 0 video connections
[11:59:23] [CLEANUP] Removed 0 video views
[11:59:23] [CLEANUP] Removed 0 feed scroll views
[11:59:23] [CLEANUP] Removed 0 status labels
[11:59:23] [CLEANUP] Reset agent query state
[11:59:23] [CLEANUP] Updated page indicator
[11:59:23] [CLEANUP] Rebuilt video layout
[11:59:23] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:23] [CLEANUP] ========================================
[11:59:23] [SERVER] Starting reconnect polling (5s interval)
[11:59:23] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:24] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:24] HELLO → sent (cached token, role=query)
[11:59:24] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:24] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:24] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:24] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:24] [CLEANUP] ========================================
[11:59:24] [CLEANUP] Cleaning up all agent connections and views
[11:59:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:24] [CLEANUP] Stopped and removed 0 video connections
[11:59:24] [CLEANUP] Removed 0 video views
[11:59:24] [CLEANUP] Removed 0 feed scroll views
[11:59:24] [CLEANUP] Removed 0 status labels
[11:59:24] [CLEANUP] Reset agent query state
[11:59:24] [CLEANUP] Updated page indicator
[11:59:24] [CLEANUP] Rebuilt video layout
[11:59:24] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:24] [CLEANUP] ========================================
[11:59:24] [SERVER] Starting reconnect polling (5s interval)
[11:59:24] [CLEANUP] ========================================
[11:59:24] [CLEANUP] Cleaning up all agent connections and views
[11:59:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:24] [CLEANUP] Stopped and removed 0 video connections
[11:59:24] [CLEANUP] Removed 0 video views
[11:59:24] [CLEANUP] Removed 0 feed scroll views
[11:59:24] [CLEANUP] Removed 0 status labels
[11:59:24] [CLEANUP] Reset agent query state
[11:59:24] [CLEANUP] Updated page indicator
[11:59:24] [CLEANUP] Rebuilt video layout
[11:59:24] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:24] [CLEANUP] ========================================
[11:59:24] [SERVER] Starting reconnect polling (5s interval)
[11:59:25] [NETWORK] Status changed: connected
[11:59:25] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 10:59:25 +0000 - type: unknown, operation_type: 0, message_id: 24537, session_id: ILUIWU, state: 0
[11:59:25] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-03-11 10:59:24";
"file_name" = "";
message = "Shared the logs";
"message_id" = 24537;
"message_type" = 0;
"prev_session_message_id" = 24536;
"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"): 24537, AnyHashable("session_id"): ILUIWU]
[11:59:25] [PUSH] App active - suppressing notification UI, posting internal event
[11:59:25] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:25 +0000
[11:59:25] [PUSH_TRACE] ⬇️ Processing embedded message_id=24537
[11:59:25] [PUSH_EMBED] 📩 Received embedded message: id=24537, type=0, sender=Esra
[11:59:25] [PUSH_TRACE] ⬇️ Message details: text="Shared the logs...", datesent=2026-03-11 10:59:24
[11:59:25] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:59:25] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_EMBED] ✅ Saved message 24537 to local DB (sync)
[11:59:25] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24537
[11:59:25] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24537
[11:59:25] [PUSH_TRACE] 📦 Cache state: valid=true, count=143, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:25] [PUSH_EMBED] Inserted message 24537 into existing cache (now 144 messages)
[11:59:25] [PUSH_TRACE] 📦 ✅ Inserted message 24537, cache now has IDs: [24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:25] [PUSH_TRACE] 📦 EXITING cache update queue for message 24537
[11:59:25] [PUSH_EMBED] Fetching evolution data for message 24537 in background
[11:59:25] [PUSH_EMBED] ✅ Fully processed message 24537
[11:59:25] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24537
[11:59:25] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 144 msgs, IDs=[24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528, 24527]
[11:59:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-03-11 10:59:24";
"file_name" = "";
message = "Shared the logs";
"message_id" = 24537;
"message_type" = 0;
"prev_session_message_id" = 24536;
"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"): 24537, AnyHashable("session_id"): ILUIWU]
[11:59:25] [PUSH_EMBED_VC] Processing embedded message: id=24537, type=0, sender=Esra, prevId=24536
[11:59:25] [PUSH_EMBED_VC] Inserted message 24537 into allMessagesWithReadBy (now 145 messages)
[11:59:25] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=145
[11:59:25] [PUSH_EMBED_VC] ✅ Previous message 24536 exists in memory
[11:59:25] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:59:25] [PUSH] Parsed message_id: 24537
[11:59:25] [PUSH] Parsed operation_type: 0
[11:59:25] [PUSH] Taking direct action: opType=0, messageId=24537
[11:59:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24537
[11:59:25] [PUSH_EMBED_VC] Saved message 24537 to local DB
[11:59:25] [PUSH] ⚡ Message 24537 already in memory - skipping duplicate notification entirely
[11:59:25] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:59:25] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:59:25] [PUSH_TRACE] 👁️ Received message id=24537, text="Shared the logs..."
[11:59:25] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:59:25] [PUSH_UI] Message 24537 already in memory - skipping insert
[11:59:25] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:59:25] [PUSH] Silent push received
[11:59:25] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:25 +0000, appState=0, message_id=24537
[11:59:25] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:25] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:25 +0000
[11:59:25] [PUSH_TRACE] ⬇️ Processing embedded message_id=24537
[11:59:25] [PUSH_EMBED] 📩 Received embedded message: id=24537, type=0, sender=Esra
[11:59:25] [PUSH_TRACE] ⬇️ Message details: text="Shared the logs...", datesent=2026-03-11 10:59:24
[11:59:25] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[11:59:25] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_EMBED] ✅ Saved message 24537 to local DB (sync)
[11:59:25] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24537
[11:59:25] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24537
[11:59:25] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24537
[11:59:25] [PUSH_TRACE] 📦 Cache state: valid=true, count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:25] [PUSH_TRACE] 📦 ⚠️ Message 24537 already in cache, skipping insert
[11:59:25] [PUSH_TRACE] 📦 EXITING cache update queue for message 24537
[11:59:25] [PUSH_EMBED] Fetching evolution data for message 24537 in background
[11:59:25] [PUSH_EMBED] ✅ Fully processed message 24537
[11:59:25] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24537
[11:59:25] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528], handled=true
[11:59:25] [PUSH] Embedded message handled instantly from silent push
[11:59:25] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[11:59:25] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24537
[11:59:25] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:59:25] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[11:59:25] [PUSH_TRACE] 👁️ Received message id=24537, text="Shared the logs..."
[11:59:25] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:59:25] [PUSH_UI] Message 24537 already in memory - skipping insert
[11:59:25] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[11:59:25] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 145 msgs, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 24537, 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_data"): {
datesent = "2026-03-11 10:59:24";
"file_name" = "";
message = "Shared the logs";
"message_id" = 24537;
"message_type" = 0;
"prev_session_message_id" = 24536;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[11:59:25] [PUSH_EMBED_VC] Message 24537 already in memory - skipping
[11:59:25] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:59:25] [PUSH] Parsed message_id: 24537
[11:59:25] [PUSH] Parsed operation_type: 0
[11:59:25] [PUSH] Taking direct action: opType=0, messageId=24537
[11:59:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24537
[11:59:25] [PUSH] ⚡ Message 24537 already in memory - skipping duplicate notification entirely
[11:59:25] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:59:25] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=145, first5Ids=[24537, 24536, 24535, 24534, 24533]
[11:59:25] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 145 messages
[11:59:25] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:25] [RELOAD_TAB] 📊 Building chatRows from 145 messages
[11:59:25] [RELOAD_TAB] 📊 Built 147 chatRows, estHeight=0.0
[11:59:25] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24536 → 24537
[11:59:25] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=155
[11:59:25] [SCROLL] 💓 alive, visible=139...146, rows=147, estHeight=0.0, heightCalls=303
[11:59:26] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:26] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:26] [CLIENT_SIG] Event received: type=0 messageId=24537
[11:59:26] [WS_EVENT] Received event: type=0, messageId=24537
[11:59:26] [WS_EVENT] 📨 New message notification (msgId=24537) - triggering incremental refresh, currentMsgCount=145
[11:59:26] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=145
[11:59:26] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24537, maxMemoryId=24537
[11:59:26] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24537
[11:59:26] [INCREMENTAL_SYNC] ✅ No new messages
[11:59:26] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=145
[11:59:26] [PUSH_EMBED] Got evolution data for message 24537, saving to local DB
[11:59:26] [PUSH_EMBED] Saved evolution data for message 24537
[11:59:26] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:59:26] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=145, isReloading=false
[11:59:26] [PUSH_EMBED] Got evolution data for message 24537, saving to local DB
[11:59:26] [SEND_MESSAGE] ✅ Added optimistic message id=-45 to arrays, newMsgCount=146
[11:59:26] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=1
[11:59:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=146, first5Ids=[-45, 24537, 24536, 24535, 24534]
[11:59:26] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 146 messages
[11:59:26] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-45, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:26] [RELOAD_TAB] 📊 Building chatRows from 146 messages
[11:59:26] [PUSH_EMBED] Saved evolution data for message 24537
[11:59:26] [RELOAD_TAB] 📊 Built 148 chatRows, estHeight=0.0
[11:59:26] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=156
[11:59:26] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:59:26] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:59:26] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:26] HELLO → sent (cached token, role=query)
[11:59:26] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:26] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:26] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:26] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:26] [CLEANUP] ========================================
[11:59:26] [CLEANUP] Cleaning up all agent connections and views
[11:59:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:26] [CLEANUP] Stopped and removed 0 video connections
[11:59:26] [CLEANUP] Removed 0 video views
[11:59:26] [CLEANUP] Removed 0 feed scroll views
[11:59:26] [CLEANUP] Removed 0 status labels
[11:59:26] [CLEANUP] Reset agent query state
[11:59:26] [CLEANUP] Updated page indicator
[11:59:26] [CLEANUP] Rebuilt video layout
[11:59:26] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:26] [CLEANUP] ========================================
[11:59:26] [SERVER] Starting reconnect polling (5s interval)
[11:59:26] [CLEANUP] ========================================
[11:59:26] [CLEANUP] Cleaning up all agent connections and views
[11:59:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:26] [CLEANUP] Stopped and removed 0 video connections
[11:59:26] [CLEANUP] Removed 0 video views
[11:59:26] [CLEANUP] Removed 0 feed scroll views
[11:59:26] [CLEANUP] Removed 0 status labels
[11:59:26] [CLEANUP] Reset agent query state
[11:59:26] [CLEANUP] Updated page indicator
[11:59:26] [CLEANUP] Rebuilt video layout
[11:59:26] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:26] [CLEANUP] ========================================
[11:59:26] [SERVER] Starting reconnect polling (5s interval)
[11:59:26] [SCROLL] 💓 alive, visible=140...147, rows=148, estHeight=0.0, heightCalls=305
[11:59:27] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24538,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 10:59:26"}
[11:59:27] [CHAT] receive_message.php JSON: ["message_id": 24538, "session_id": ILUIWU, "ok": 1, "message_type": 0, "file_name": , "datesent_utc": 2026-03-11 10:59:26]
[11:59:27] [DB_UPGRADE] Upgrading message ID: -45 → 24538, preserveOriginalDate=false
[11:59:27] [DB_UPGRADE] ✅ Upgraded -45 → 24538 with send_status=0, 1 row(s) affected
[11:59:27] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -45 → 24538
[11:59:27] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -45 → 24538
[11:59:28] ReloadData 9
[11:59:28] [CLIENT_SIG] Event received: type=0 messageId=24538
[11:59:28] [WS_EVENT] Received event: type=0, messageId=24538
[11:59:28] [WS_EVENT] 📨 New message notification (msgId=24538) - triggering incremental refresh, currentMsgCount=146
[11:59:28] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=146
[11:59:28] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24538, maxMemoryId=24538
[11:59:28] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24538
[11:59:28] [INCREMENTAL_SYNC] ✅ No new messages
[11:59:28] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=146
[11:59:28] [PUSH] Silent push received
[11:59:28] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:28 +0000, appState=0, message_id=nil
[11:59:28] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:28] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:28 +0000
[11:59:28] [PUSH_EMBED] No embedded message_data in notification
[11:59:28] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:59:28] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528], handled=false
[11:59:28] [PUSH] No embedded data, pre-loading messages from server
[11:59:28] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:59:28] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:28] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:28] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:59:28] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:59:28] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:28] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=144, IDs=[24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529, 24528]
[11:59:28] [PRELOAD_CACHE] Preserving 95 push-inserted messages: [24488, 24487, 24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:28] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=95, IDs=[24488, 24487, 24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:28] [PUSH_TRACE] 🔀 mergeMessages: merged.count=145, first 10 IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:28] [PUSH_PRELOAD] ⚡ Pre-cached 145 messages for instant display (preserved 95 from push)
[11:59:28] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:59:28] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 146 msgs, IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:28] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24537]
[11:59:28] [PUSH] Parsed message_id: 24537
[11:59:28] [PUSH] Parsed operation_type: 3
[11:59:28] [PUSH] Taking direct action: opType=3, messageId=24537
[11:59:28] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24537
[11:59:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:28] HELLO → sent (cached token, role=query)
[11:59:28] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:28] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:28] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:28] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:28] [CLEANUP] ========================================
[11:59:28] [CLEANUP] Cleaning up all agent connections and views
[11:59:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:28] [CLEANUP] Stopped and removed 0 video connections
[11:59:28] [CLEANUP] Removed 0 video views
[11:59:28] [CLEANUP] Removed 0 feed scroll views
[11:59:28] [CLEANUP] Removed 0 status labels
[11:59:28] [CLEANUP] Reset agent query state
[11:59:28] [CLEANUP] Updated page indicator
[11:59:28] [CLEANUP] Rebuilt video layout
[11:59:28] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:28] [CLEANUP] ========================================
[11:59:28] [SERVER] Starting reconnect polling (5s interval)
[11:59:28] [CLEANUP] ========================================
[11:59:28] [CLEANUP] Cleaning up all agent connections and views
[11:59:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:28] [CLEANUP] Stopped and removed 0 video connections
[11:59:28] [CLEANUP] Removed 0 video views
[11:59:28] [CLEANUP] Removed 0 feed scroll views
[11:59:28] [CLEANUP] Removed 0 status labels
[11:59:28] [CLEANUP] Reset agent query state
[11:59:28] [CLEANUP] Updated page indicator
[11:59:28] [CLEANUP] Rebuilt video layout
[11:59:28] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:28] [CLEANUP] ========================================
[11:59:28] [SERVER] Starting reconnect polling (5s interval)
[11:59:29] [NETWORK] Status changed: connected
[11:59:29] [CLIENT_SIG] Event received: type=3 messageId=24537
[11:59:29] [WS_EVENT] Received event: type=3, messageId=24537
[11:59:29] [WS_EVENT] Read receipt for message 24537 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:59:30] [PUSH] Silent push received
[11:59:30] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:30 +0000, appState=0, message_id=nil
[11:59:30] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=145, IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:30] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:30 +0000
[11:59:30] [PUSH_EMBED] No embedded message_data in notification
[11:59:30] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:59:30] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=145, IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529], handled=false
[11:59:30] [PUSH] No embedded data, pre-loading messages from server
[11:59:30] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:59:30] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:30] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:30] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:59:30] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:59:30] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:30] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=145, IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:30] [PRELOAD_CACHE] Preserving 95 push-inserted messages: [24488, 24487, 24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:30] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=95, IDs=[24488, 24487, 24486, 24485, 24484, 24483, 24482, 24481, 24480, 24479, 24478, 24477, 24476, 24475, 24474, 24473, 24472, 24471, 24470, 24469, 24468, 24467, 24466, 24465, 24464, 24463, 24462, 24461, 24460, 24459, 24458, 24457, 24456, 24455, 24454, 24453, 24452, 24451, 24450, 24449, 24448, 24447, 24446, 24445, 24444, 24443, 24442, 24441, 24440, 24439, 24438, 24437, 24436, 24435, 24434, 24433, 24432, 24431, 24430, 24429, 24428, 24427, 24426, 24425, 24424, 24423, 24422, 24421, 24420, 24419, 24418, 24417, 24416, 24415, 24414, 24413, 24412, 24411, 24410, 24409, 24408, 24407, 24406, 24405, 24404, 24403, 24402, 24401, 24400, 24399, 24398, 24397, 24396, 24395, 24394]
[11:59:30] [PUSH_TRACE] 🔀 mergeMessages: merged.count=145, first 10 IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:30] [PUSH_PRELOAD] ⚡ Pre-cached 145 messages for instant display (preserved 95 from push)
[11:59:30] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:59:30] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 146 msgs, IDs=[24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530, 24529]
[11:59:30] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24538]
[11:59:30] [PUSH] Parsed message_id: 24538
[11:59:30] [PUSH] Parsed operation_type: 3
[11:59:30] [PUSH] Taking direct action: opType=3, messageId=24538
[11:59:30] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24538
[11:59:30] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:30] HELLO → sent (cached token, role=query)
[11:59:30] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:30] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:30] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:30] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:30] [CLEANUP] ========================================
[11:59:30] [CLEANUP] Cleaning up all agent connections and views
[11:59:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:30] [CLEANUP] Stopped and removed 0 video connections
[11:59:30] [CLEANUP] Removed 0 video views
[11:59:30] [CLEANUP] Removed 0 feed scroll views
[11:59:30] [CLEANUP] Removed 0 status labels
[11:59:30] [CLEANUP] Reset agent query state
[11:59:30] [CLEANUP] Updated page indicator
[11:59:30] [CLEANUP] Rebuilt video layout
[11:59:30] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:30] [CLEANUP] ========================================
[11:59:30] [SERVER] Starting reconnect polling (5s interval)
[11:59:30] [CLEANUP] ========================================
[11:59:30] [CLEANUP] Cleaning up all agent connections and views
[11:59:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:30] [CLEANUP] Stopped and removed 0 video connections
[11:59:30] [CLEANUP] Removed 0 video views
[11:59:30] [CLEANUP] Removed 0 feed scroll views
[11:59:30] [CLEANUP] Removed 0 status labels
[11:59:30] [CLEANUP] Reset agent query state
[11:59:30] [CLEANUP] Updated page indicator
[11:59:30] [CLEANUP] Rebuilt video layout
[11:59:30] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:30] [CLEANUP] ========================================
[11:59:30] [SERVER] Starting reconnect polling (5s interval)
[11:59:31] [CLIENT_SIG] Event received: type=3 messageId=24538
[11:59:31] [WS_EVENT] Received event: type=3, messageId=24538
[11:59:31] [WS_EVENT] Read receipt for message 24538 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:32] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:32] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:32] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:32] HELLO → sent (cached token, role=query)
[11:59:32] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:32] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:32] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:32] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:32] [CLEANUP] ========================================
[11:59:32] [CLEANUP] Cleaning up all agent connections and views
[11:59:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:32] [CLEANUP] Stopped and removed 0 video connections
[11:59:32] [CLEANUP] Removed 0 video views
[11:59:32] [CLEANUP] Removed 0 feed scroll views
[11:59:32] [CLEANUP] Removed 0 status labels
[11:59:32] [CLEANUP] Reset agent query state
[11:59:32] [CLEANUP] Updated page indicator
[11:59:32] [CLEANUP] Rebuilt video layout
[11:59:32] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:32] [CLEANUP] ========================================
[11:59:32] [SERVER] Starting reconnect polling (5s interval)
[11:59:32] [CLEANUP] ========================================
[11:59:32] [CLEANUP] Cleaning up all agent connections and views
[11:59:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:32] [CLEANUP] Stopped and removed 0 video connections
[11:59:32] [CLEANUP] Removed 0 video views
[11:59:32] [CLEANUP] Removed 0 feed scroll views
[11:59:32] [CLEANUP] Removed 0 status labels
[11:59:32] [CLEANUP] Reset agent query state
[11:59:32] [CLEANUP] Updated page indicator
[11:59:32] [CLEANUP] Rebuilt video layout
[11:59:32] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:32] [CLEANUP] ========================================
[11:59:32] [SERVER] Starting reconnect polling (5s interval)
[11:59:32] [NETWORK] Status changed: connected
[11:59:33] [NETWORK] Status changed: connected
[11:59:33] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:33] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:33] [CAM] Offer → session: iosILUIWU, viewerId: d9y8h0PXlL22ss0_
[11:59:33] [WEBRTC] WebRTC client already exists, reusing it
[11:59:33] [CAM] Peer connection ready, processing offer immediately
[11:59:33] Creating answer for d9y8h0PXlL22ss0_. Found 3 transceivers:
[11:59:33] Transceiver 0: video, direction=sendRecv, hasTrack=true
[11:59:33] Transceiver 1: video, direction=sendRecv, hasTrack=true
[11:59:33] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[11:59:33] SEND answer for viewerId=d9y8h0PXlL22ss0_
[11:59:33] SDP length: 8426
[11:59:34] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:59:34] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:59:34] [CAM] viewerLeave → session: iosILUIWU, viewerId: z3Hta23VCDGAVST2
[11:59:34] ICE state for vid=?: 6 ( RTCIceConnectionState )
[11:59:34] [IDLE] scheduleIdleStopIfNoViewers called
[11:59:34] [IDLE] alwaysOn=true, skipping idle stop
[11:59:34] [CAM] viewerLeave → session: iosILUIWU, viewerId: d9y8h0PXlL22ss0_
[11:59:34] ICE state for vid=?: 6 ( RTCIceConnectionState )
[11:59:34] [IDLE] scheduleIdleStopIfNoViewers called
[11:59:34] [IDLE] alwaysOn=true, skipping idle stop
[11:59:34] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:34] HELLO → sent (cached token, role=query)
[11:59:34] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:34] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:34] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:34] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:34] [CLEANUP] ========================================
[11:59:34] [CLEANUP] Cleaning up all agent connections and views
[11:59:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:34] [CLEANUP] Stopped and removed 0 video connections
[11:59:34] [CLEANUP] Removed 0 video views
[11:59:34] [CLEANUP] Removed 0 feed scroll views
[11:59:34] [CLEANUP] Removed 0 status labels
[11:59:34] [CLEANUP] Reset agent query state
[11:59:34] [CLEANUP] Updated page indicator
[11:59:34] [CLEANUP] Rebuilt video layout
[11:59:34] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:34] [CLEANUP] ========================================
[11:59:34] [SERVER] Starting reconnect polling (5s interval)
[11:59:34] [CLEANUP] ========================================
[11:59:34] [CLEANUP] Cleaning up all agent connections and views
[11:59:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:34] [CLEANUP] Stopped and removed 0 video connections
[11:59:34] [CLEANUP] Removed 0 video views
[11:59:34] [CLEANUP] Removed 0 feed scroll views
[11:59:34] [CLEANUP] Removed 0 status labels
[11:59:34] [CLEANUP] Reset agent query state
[11:59:34] [CLEANUP] Updated page indicator
[11:59:34] [CLEANUP] Rebuilt video layout
[11:59:34] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:34] [CLEANUP] ========================================
[11:59:34] [SERVER] Starting reconnect polling (5s interval)
[11:59:35] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:59:35] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=146, isReloading=false
[11:59:35] [SEND_MESSAGE] ✅ Added optimistic message id=-46 to arrays, newMsgCount=147
[11:59:35] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=156
[11:59:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=147, first5Ids=[-46, 24538, 24537, 24536, 24535]
[11:59:35] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 147 messages
[11:59:35] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-46, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:35] [RELOAD_TAB] 📊 Building chatRows from 147 messages
[11:59:35] [RELOAD_TAB] 📊 Built 149 chatRows, estHeight=0.0
[11:59:35] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=157
[11:59:35] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:59:35] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:59:35] [SCROLL] 💓 alive, visible=141...148, rows=149, estHeight=0.0, heightCalls=308
[11:59:35] [NETWORK] Status changed: connected
[11:59:35] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:35] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:35] [LOG-KB] textViewShouldEndEditing: isInputField=true, allowKeyboardDismiss=true, returning=true, textView=<Eye.PastingTextView: 0x135118c00; baseClass = UITextView; frame = (44 8; 320 36
[11:59:35] [LOG-KB] textViewDidEndEditing: isInputField=true, resetting allowKeyboardDismiss to false
[11:59:35] [BROADCAST] Stopping camera broadcast
[11:59:35] [CAM] Disconnected from signaling server
[11:59:35] WS closed
[11:59:35] [CAM] Disconnected from signaling server
[11:59:36] Video capture stopped (audio still running)
[11:59:36] [iOS AUDIO] Audio capture stopped
[11:59:36] Capture stopped (video + audio)
[11:59:36] ICE state for vid=KbbxySlhhaR1xzXj: 6 ( RTCIceConnectionState )
[11:59:36] Video capture stopped (audio still running)
[11:59:36] Capture stopped (video + audio)
[11:59:36] [WEBRTC] WebRTCClient deinit - timers cleaned up
[11:59:36] [WEBRTC] ✅ Media teardown complete - camera stopped
[11:59:36] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:36] HELLO → sent (cached token, role=query)
[11:59:36] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:36] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:36] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:36] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:36] [CLEANUP] ========================================
[11:59:36] [CLEANUP] Cleaning up all agent connections and views
[11:59:36] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:36] [CLEANUP] Stopped and removed 0 video connections
[11:59:36] [CLEANUP] Removed 0 video views
[11:59:36] [CLEANUP] Removed 0 feed scroll views
[11:59:36] [CLEANUP] Removed 0 status labels
[11:59:36] [CLEANUP] Reset agent query state
[11:59:36] [CLEANUP] Updated page indicator
[11:59:36] [CLEANUP] Rebuilt video layout
[11:59:36] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:36] [CLEANUP] ========================================
[11:59:36] [SERVER] Starting reconnect polling (5s interval)
[11:59:36] [CLEANUP] ========================================
[11:59:36] [CLEANUP] Cleaning up all agent connections and views
[11:59:36] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:36] [CLEANUP] Stopped and removed 0 video connections
[11:59:36] [CLEANUP] Removed 0 video views
[11:59:36] [CLEANUP] Removed 0 feed scroll views
[11:59:36] [CLEANUP] Removed 0 status labels
[11:59:36] [CLEANUP] Reset agent query state
[11:59:36] [CLEANUP] Updated page indicator
[11:59:36] [CLEANUP] Rebuilt video layout
[11:59:36] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:36] [CLEANUP] ========================================
[11:59:36] [SERVER] Starting reconnect polling (5s interval)
[11:59:36] [CLIENT_SIG] Event received: type=0 messageId=24539
[11:59:36] [WS_EVENT] Received event: type=0, messageId=24539
[11:59:36] [WS_EVENT] 📨 New message notification (msgId=24539) - triggering incremental refresh, currentMsgCount=147
[11:59:36] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=147
[11:59:36] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24538, maxMemoryId=24538
[11:59:36] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24538
[11:59:36] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24539,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 10:59:35"}
[11:59:36] [CHAT] receive_message.php JSON: ["ok": 1, "message_type": 0, "message_id": 24539, "session_id": ILUIWU, "datesent_utc": 2026-03-11 10:59:35, "file_name": ]
[11:59:36] [DB_UPGRADE] Upgrading message ID: -46 → 24539, preserveOriginalDate=false
[11:59:36] [DB_UPGRADE] ✅ Upgraded -46 → 24539 with send_status=0, 1 row(s) affected
[11:59:36] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -46 → 24539
[11:59:36] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -46 → 24539
[11:59:36] ReloadData 9
[11:59:36] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[11:59:36] [PUSH_TRACE] 📡 INCREMENTAL: Server returned 1 new messages, IDs=[24539]
[11:59:36] [PUSH_TRACE] 📡 INCREMENTAL: BEFORE merge, memory has 147 msgs, first 10 IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:36] [PUSH_TRACE] 📡 INCREMENTAL: AFTER merge, added 0 new, total 147, first 10 IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:36] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[11:59:36] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=147
[11:59:36] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=147
[11:59:36] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=168
[11:59:36] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=147, first5Ids=[24539, 24538, 24537, 24536, 24535]
[11:59:36] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 147 messages
[11:59:36] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:36] [RELOAD_TAB] 📊 Building chatRows from 147 messages
[11:59:36] [RELOAD_TAB] 📊 Built 149 chatRows, estHeight=0.0
[11:59:36] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=162
[11:59:36] [NETWORK] Status changed: connected
[11:59:37] [LIFECYCLE] App resigning active - cleared crash flag
[11:59:37] [NETWORK] Status changed: connected
[11:59:37] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:37] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:37] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:37] HELLO → sent (cached token, role=query)
[11:59:37] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[11:59:37] [WS] Query connection failed - cleaning up all agent connections and views
[11:59:37] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[11:59:37] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[11:59:37] [CLEANUP] ========================================
[11:59:37] [CLEANUP] Cleaning up all agent connections and views
[11:59:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:37] [CLEANUP] Stopped and removed 0 video connections
[11:59:37] [CLEANUP] Removed 0 video views
[11:59:37] [CLEANUP] Removed 0 feed scroll views
[11:59:37] [CLEANUP] Removed 0 status labels
[11:59:37] [CLEANUP] Reset agent query state
[11:59:37] [CLEANUP] Updated page indicator
[11:59:37] [CLEANUP] Rebuilt video layout
[11:59:37] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:37] [CLEANUP] ========================================
[11:59:37] [SERVER] Starting reconnect polling (5s interval)
[11:59:37] [CLEANUP] ========================================
[11:59:37] [CLEANUP] Cleaning up all agent connections and views
[11:59:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[11:59:37] [CLEANUP] Stopped and removed 0 video connections
[11:59:37] [CLEANUP] Removed 0 video views
[11:59:37] [CLEANUP] Removed 0 feed scroll views
[11:59:37] [CLEANUP] Removed 0 status labels
[11:59:37] [CLEANUP] Reset agent query state
[11:59:37] [CLEANUP] Updated page indicator
[11:59:37] [CLEANUP] Rebuilt video layout
[11:59:37] [CLEANUP] ✅ All agent connections and views cleaned up
[11:59:37] [CLEANUP] ========================================
[11:59:37] [SERVER] Starting reconnect polling (5s interval)
[11:59:38] [UPLOAD_QUEUE] ✅ Database flushed (WAL checkpoint) before background
[11:59:38] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[11:59:38] [SECURITY] Saved background timestamp
[11:59:38] [LIFECYCLE] App entering background - cleared crash flag
[11:59:38] [CLIENT_SIG] Disconnecting
[11:59:38] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[11:59:38] [DB] ✅ Chat database flushed (WAL checkpoint) before background
[11:59:38] [PUSH_TRACE] 💤 BACKGROUND: memory has 147 messages, first 10 IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:38] [LIFECYCLE] Background snapshot: count=147, maxId=24539
[11:59:38] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[11:59:38] [WS] Canceling WebSocket for query connection to iosILUIWU
[11:59:40] [CRASH] No crash detected
[11:59:40] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[11:59:40] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[11:59:40] [GIPHY] SDK not available - using REST API fallback
[11:59:40] [BACKGROUND] Background fetch enabled
[11:59:40] [SECURITY] Initial launch - within timeout (2.008646011352539s < 300.0s)
[11:59:40] [AUTH] Starting PIN authentication
[11:59:40] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[11:59:40] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:59:40] [CLEANUP] No old timer messages to delete
[11:59:40] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[11:59:40] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[11:59:40] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[11:59:40] [USER] ✅ User registered successfully
[11:59:40] [PUSH] User registration after token update: success
[11:59:40] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[11:59:40] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[11:59:40] [CLIENT_SIG] WebSocket opened
[11:59:40] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[11:59:40] [CLIENT_SIG] Connected! clientId=Pcq50ocpm2ZHlw9e
[11:59:40] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[11:59:40] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:59:40] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=24539)...
[11:59:40] [PRELOAD] No messages or parse error
[11:59:41] [PIN_AUTH] Correct PIN
[11:59:41] [SECURITY] Restored real session: ILUIWU
[11:59:41] [SECURITY] Restored real session: ILUIWU
[11:59:41] [SECURITY] Saved real session: ILUIWU
[11:59:41] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[11:59:41] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[11:59:41] [UPLOAD_QUEUE] ✅ Database integrity check passed
[11:59:41] [UPLOAD_QUEUE] Active background session tasks: 0 (standard uploads now use foreground session, so this should be 0 after the fix)
[11:59:41] Documents Directory: /var/mobile/Containers/Data/Application/4EDC3F86-886C-48D6-84F7-D458DE7BA650/Documents
[11:59:41] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[11:59:41] [THEME] Applying current theme
[11:59:41] [CHAT] Applied day theme (mode: day)
[11:59:41] [SECURITY] Saved real session: ILUIWU
[11:59:41] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[11:59:41] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:59:41] [NETWORK] Network monitor started
[11:59:41] [NETWORK] Status changed: connected
[11:59:41] Did transition
[11:59:41] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[11:59:41] [VIEWER] Screen lock enabled - normal idle behavior
[11:59:41] [QUERY] 🔍 Creating query connection for iOS broadcast: iosILUIWU
[11:59:41] [VCC] ========== VideoConnectionClass INIT ==========
[11:59:41] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[11:59:41] [DATA AUDIO] ========== setupWebRTC() START ==========
[11:59:41] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[11:59:41] [DATA AUDIO] Creating encoder/decoder factories...
[11:59:41] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[11:59:41] [CODEC] Viewer selected encoder: AV1 (best quality)
[11:59:41] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[11:59:41] [DATA AUDIO] ✅ Factory created
[11:59:41] [DATA AUDIO] RTCAudioSession locked
[11:59:41] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[11:59:41] [DATA AUDIO] RTCAudioSession unlocked
[11:59:41] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[11:59:41] [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:59:41] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[11:59:41] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:41] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[11:59:41] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[11:59:41] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[11:59:41] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[11:59:41] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[11:59:41] Did transition
[11:59:41] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[11:59:41] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[11:59:41] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[11:59:41] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[11:59:41] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[11:59:41] [READBY_OPT] Fetching readBy for 18 unsettled messages (targeted)
[11:59:41] [GALLERY_DB] Raw datesent for msg 24496: '2026-03-11 10:16:24'
[11:59:41] [GALLERY_DB] Raw datesent for msg 24486: '2026-03-11 10:04:07'
[11:59:41] [GALLERY_DB] Raw datesent for msg 24485: '2026-03-11 10:03:19'
[11:59:41] [USER] ✅ User registered successfully
[11:59:41] [USER] User registration successful
[11:59:42] [GALLERY_DB] ✅ Loaded 825 media messages
[11:59:42] [MIGRATION] No messages need sender_name backfill
[11:59:42] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[11:59:42] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24539, maxMemoryId=24539
[11:59:42] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24539
[11:59:42] [INCREMENTAL_SYNC] ✅ No new messages
[11:59:42] [GALLERY] Filtered 825 -> 782 (only with local thumbnails)
[11:59:42] [GALLERY] First 5 after sort (newest first):
[11:59:42] [GALLERY] 0: id=24496, date=2026-03-11 10:16:24, file=076d11e6bd354447.jpg
[11:59:42] [GALLERY] 1: id=24486, date=2026-03-11 10:04:07, file=5ecf01e7004d4766.mov
[11:59:42] [GALLERY] 2: id=24485, date=2026-03-11 10:03:19, file=45251fec95b850f2.jpg
[11:59:42] [GALLERY] 3: id=24484, date=2026-03-11 10:02:35, file=cc840d6fb7db7de0.jpg
[11:59:42] [GALLERY] 4: id=24436, date=2026-03-11 08:58:11, file=b1346ffb3de87a79.mov
[11:59:42] [SCROLL] 💓 alive, visible=0...0, rows=0, estHeight=0.0, heightCalls=0
[11:59:42] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[11:59:42] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[11:59:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[24539, 24538, 24537, 24536, 24535]
[11:59:42] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 50 messages
[11:59:42] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:42] [RELOAD_TAB] 📊 Building chatRows from 50 messages
[11:59:42] [RELOAD_TAB] 📊 Built 51 chatRows, estHeight=0.0
[11:59:42] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[11:59:42] [CELL_UPLOAD] configure: msgId=24496, file=076d11e6bd354447.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[11:59:42] [CELL_UPLOAD] → not my message, setting complete
[11:59:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=076d11e6bd354447.jpg, overlayExists=true
[11:59:42] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=59
[11:59:42] [SERVER] Starting reconnect polling (5s interval)
[11:59:42] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[11:59:42] [ICONS] Offset applied: -14.6
[11:59:42] [ICONS] New left margin: 11.2, New right margin: 11.3
[11:59:42] [COMBINED_FETCH] Loaded 18 read receipts, 0 messages with reactions
[11:59:42] [READBY_ENRICH] Enriched 18/18 unsettled messages with readBy data
[11:59:42] [ICONS] Chat center: (31.2, 87.0)
[11:59:42] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[11:59:42] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[11:59:42] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[11:59:42] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[11:59:42] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[11:59:42] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[11:59:42] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[11:59:42] [ICONS] Screen width: 440.0
[11:59:42] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:59:42] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:42] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:42] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[11:59:42] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[11:59:42] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[11:59:42] [UNSENT_RETRY] Checking for unsent messages...
[11:59:42] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[11:59:42] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[11:59:42] [UPLOAD_RECOVERY] Session: ILUIWU
[11:59:42] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[11:59:42] [UPLOAD_RECOVERY] Checking recent media messages on server...
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24427, file=0905b4b453eac6ab.mov, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24411, file=fa708c6c98048ba6.mov, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24404, file=22c2a6ef81cfd6e2.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24401, file=1934a5bb32cfa819.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24355, file=82b97926ca365db4.mp4, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24354, file=4a57b92272df0911.mp4, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24353, file=d6f3d52606d47e1a.mov, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24352, file=8b7fbeb6f5915db8.mov, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24343, file=1438d87832f7f49e.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24342, file=8c6ba79a0cccbba1.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24325, file=369d805a5bec6849.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24318, file=0715cca0f809130b.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24270, file=6e21a9721330998a.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24259, file=2c2f9eb26955cef7.mov, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24258, file=4ce5c44ee1bd2fe6.jpg, upload_status=complete
[11:59:42] [UPLOAD_RECOVERY] Verifying 15 media files exist on server...
[11:59:42] [PENDING_UPLOAD] Total pending upload messages: 0
[11:59:42] [UNSENT_RETRY] No unsent messages found
[11:59:42] new_session POST ok: token len=157
[11:59:42] HELLO → sent (fetched token, role=query)
[11:59:42] [SIG] hello_ok received for query connection - ready to query agents
[11:59:42] [SIG] get_agents request sent for sessionId=ILUIWU
[11:59:42] [SIG] get_agents request sent for sessionId=iosILUIWU
[11:59:42] [SERVER] Stopped reconnect polling
[11:59:42] [SIG] agents_list received: [["sessionId": iosILUIWU, "connected": 1, "agentId": zkiE1vaQ3a3sAK0K]]
[11:59:42] [SIG] agents_list received: [["agentId": zkiE1vaQ3a3sAK0K, "sessionId": iosILUIWU, "connected": 1]]
[11:59:42] [VCC] ========== VideoConnectionClass INIT ==========
[11:59:42] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: zkiE1vaQ3a3sAK0K
[11:59:42] [DATA AUDIO] ========== setupWebRTC() START ==========
[11:59:42] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[11:59:42] [DATA AUDIO] Creating encoder/decoder factories...
[11:59:42] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[11:59:42] [CODEC] Viewer selected encoder: AV1 (best quality)
[11:59:42] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[11:59:42] [DATA AUDIO] ✅ Factory created
[11:59:42] [DATA AUDIO] RTCAudioSession locked
[11:59:42] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[11:59:42] [DATA AUDIO] RTCAudioSession unlocked
[11:59:42] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[11:59:42] [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:59:42] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[11:59:42] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:42] [UPLOAD_RECOVERY] ✅ All media files verified on server
[11:59:42] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=72
[11:59:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[24539, 24538, 24537, 24536, 24535]
[11:59:42] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 50 messages
[11:59:42] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:42] [RELOAD_TAB] 📊 Building chatRows from 50 messages
[11:59:42] [RELOAD_TAB] 📊 Built 51 chatRows, estHeight=0.0
[11:59:42] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=64
[11:59:42] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU
[11:59:42] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:42] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:42] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[11:59:42] new_session POST ok: token len=157
[11:59:42] HELLO → sent (fetched token, role=viewer)
[11:59:42] [SIG] hello_ok received for viewer connection
[11:59:42] [NEGO] ========== startNegotiation() BEGIN ==========
[11:59:42] [NEGO] Session: iosILUIWU, AgentId: zkiE1vaQ3a3sAK0K
[11:59:42] [NEGO] ICE profile step: 0, forceRelayOnly: false
[11:59:42] [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"]
[11:59:42] [ICE] ========== CREATING PEER CONNECTION (profile step 0) ==========
[11:59:42] [ICE] ICE servers (2 entries):
[11:59:42] [ICE] [0] stun:stun.l.google.com:19302 (no credentials)
[11:59:42] [ICE] [1] turn:crivello.dyndns.org:3478?transport=udp (with credentials)
[11:59:42] [ICE] [1] turn:crivello.dyndns.org:3478?transport=tcp (with credentials)
[11:59:42] [ICE] [1] turns:crivello.dyndns.org:5349?transport=tcp (with credentials)
[11:59:42] [ICE] Reset candidate counters for new connection attempt
[11:59:42] peerConnectionShouldNegotiate → starting negotiation
[11:59:42] …ignored (busy)
[11:59:42] [WS AUDIO] Skipping data channel - audio received via WebSocket
[11:59:42] [WS AUDIO] Session: rate=48000.0Hz, buffer=20.0ms
[11:59:42] [WS AUDIO] Mixer actual format: 48000.0Hz, 2ch
[11:59:42] [WS AUDIO] ⚠️ Mixer mismatch - will convert 48kHz mono → 48000.0Hz 2ch
[11:59:42] [WS AUDIO] ✅ Created converter: 48kHz mono → 48000.0Hz 2ch
[11:59:43] [WS AUDIO] ✅ Audio player ready (max 10 buffers)
[11:59:43] [WS AUDIO] ✅ Audio player initialized - ready to receive via WebSocket
[11:59:43] [DATA AUDIO] ========== createPeerConnection() END ==========
[11:59:43] Before peerconnection
[11:59:43] agentOnline
[11:59:43] Within peerconnection
[11:59:43] 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"]
[11:59:43] [SIG] send offer ok
[11:59:43] [ICE] local offer ufrag=HjL6
[11:59:43] [NEGO] ✅ Offer sent successfully, waiting for answer...
[11:59:43] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates
[11:59:43] [ICE] Gathering state → 1 (RTCIceGatheringState(rawValue: 1))
[11:59:43] [ICE] Gathering state GATHERING - started collecting ICE candidates (timeout: 6s)
[11:59:43] [ICE] viewer local HOST #1: 192.168.1.177:56677 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #2: 84.227.75.34:56677 (udp) → sent
[11:59:43] [ICE] viewer local HOST #3: 10.50.3.244:57625 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #4: 194.230.158.30:49004 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #5: 194.230.158.30:4968 (udp) → sent
[11:59:43] [ICE] viewer local HOST #6: 10.29.166.113:57558 (udp) → sent
[11:59:43] [ICE] viewer local HOST #7: 10.29.166.113:55512 (udp) → sent
[11:59:43] [ICE] viewer local HOST #8: 10.29.166.113:49529 (udp) → sent
[11:59:43] [ICE] viewer local HOST #9: 10.29.166.113:52330 (udp) → sent
[11:59:43] [ICE] viewer local HOST #10: 10.29.166.113:63883 (udp) → sent
[11:59:43] [ICE] viewer local HOST #11: 10.29.166.113:64609 (udp) → sent
[11:59:43] [ICE] viewer local HOST #12: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:64980 (udp) → sent
[11:59:43] [ICE] viewer local HOST #13: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:52992 (udp) → sent
[11:59:43] [ICE] viewer local RELAY #14: 192.168.1.31:59430 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #15: 192.168.1.31:54918 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #16: 192.168.1.31:54378 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #17: 192.168.1.31:51450 (udp) → sent ✅
[11:59:43] [ICE] viewer local HOST #18: 192.168.1.177:51557 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #19: 10.50.3.244:51558 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #20: 10.29.166.113:51559 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #21: 10.29.166.113:51560 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #22: 10.29.166.113:51561 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #23: 10.29.166.113:51562 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #24: 10.29.166.113:51563 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #25: 10.29.166.113:51564 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #26: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:51565 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #27: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:51566 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #28: 192.168.1.177:65504 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #29: 84.227.75.34:65504 (udp) → sent
[11:59:43] [ICE] viewer local HOST #30: 10.50.3.244:50159 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #31: 194.230.158.30:49005 (udp) → sent
[11:59:43] [ICE] viewer local SRFLX #32: 194.230.158.30:4967 (udp) → sent
[11:59:43] [ICE] viewer local HOST #33: 10.29.166.113:63917 (udp) → sent
[11:59:43] [ICE] viewer local HOST #34: 10.29.166.113:50105 (udp) → sent
[11:59:43] [ICE] viewer local HOST #35: 10.29.166.113:53153 (udp) → sent
[11:59:43] [ICE] viewer local HOST #36: 10.29.166.113:51248 (udp) → sent
[11:59:43] [ICE] viewer local HOST #37: 10.29.166.113:55976 (udp) → sent
[11:59:43] [ICE] viewer local HOST #38: 10.29.166.113:61940 (udp) → sent
[11:59:43] [ICE] viewer local HOST #39: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:56325 (udp) → sent
[11:59:43] [ICE] viewer local HOST #40: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:61648 (udp) → sent
[11:59:43] [ICE] viewer local RELAY #41: 192.168.1.31:59300 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #42: 192.168.1.31:57087 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #43: 192.168.1.31:61616 (udp) → sent ✅
[11:59:43] [ICE] viewer local RELAY #44: 192.168.1.31:59350 (udp) → sent ✅
[11:59:43] [ICE] viewer local HOST #45: 192.168.1.177:51567 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #46: 10.50.3.244:51568 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #47: 10.29.166.113:51569 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #48: 10.29.166.113:51570 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #49: 10.29.166.113:51576 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #50: 10.29.166.113:51577 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #51: 10.29.166.113:51578 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #52: 10.29.166.113:51579 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #53: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:51580 (tcp) → sent
[11:59:43] [ICE] viewer local HOST #54: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:51581 (tcp) → sent
[11:59:43] [NETWORK] Status changed: connected
[11:59:49] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:59:49] [ICE] Watchdog fired: gatheringState=1, iceConnectionState=0, candidateCount=54, hasRelay=true, hasSrflx=true
[11:59:49] [ICE] Watchdog: skipping fallback - relay candidates present
[11:59:53] [PUSH] Silent push received
[11:59:53] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 10:59:53 +0000, appState=0, message_id=nil
[11:59:53] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=0, IDs=[]
[11:59:53] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 10:59:53 +0000
[11:59:53] [PUSH_EMBED] No embedded message_data in notification
[11:59:53] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[11:59:53] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=0, IDs=[], handled=false
[11:59:53] [PUSH] No embedded data, pre-loading messages from server
[11:59:53] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:59:53] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:59:53] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[11:59:53] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:53] [PUSH_TRACE] 🔀 mergeMessages: Different session (nil vs ILUIWU), replacing cache
[11:59:53] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[11:59:53] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:59:53] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 50 msgs, IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[11:59:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24539, AnyHashable("session_id"): ILUIWU]
[11:59:53] [PUSH] Parsed message_id: 24539
[11:59:53] [PUSH] Parsed operation_type: 3
[11:59:53] [PUSH] Taking direct action: opType=3, messageId=24539
[11:59:53] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24539
[11:59:54] [CLIENT_SIG] Event received: type=3 messageId=24539
[11:59:54] [WS_EVENT] Received event: type=3, messageId=24539
[11:59:54] [WS_EVENT] Read receipt for message 24539 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:59:56] [SIG] agent_connected received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [SIG] agent_connect received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [VCC] ========== VideoConnectionClass INIT ==========
[11:59:56] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: z-jNutu-3EqlGlG1
[11:59:56] [DATA AUDIO] ========== setupWebRTC() START ==========
[11:59:56] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[11:59:56] [DATA AUDIO] Creating encoder/decoder factories...
[11:59:56] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[11:59:56] [CODEC] Viewer selected encoder: AV1 (best quality)
[11:59:56] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[11:59:56] [DATA AUDIO] ✅ Factory created
[11:59:56] [DATA AUDIO] RTCAudioSession locked
[11:59:56] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[11:59:56] [DATA AUDIO] RTCAudioSession unlocked
[11:59:56] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[11:59:56] [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:59:56] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[11:59:56] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:59:56] [SIG] agents_list received: [["agentId": zkiE1vaQ3a3sAK0K, "sessionId": iosILUIWU, "connected": 1], ["agentId": z-jNutu-3EqlGlG1, "sessionId": iosILUIWU, "connected": 1]]
[11:59:56] [SIG] agent_connected received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": zkiE1vaQ3a3sAK0K], ["agentId": z-jNutu-3EqlGlG1, "sessionId": iosILUIWU, "connected": 1]]
[11:59:56] [SIG] agent_disconnected received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [SIG] agent_disconnect received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [AGENTS] Skipping vcc with different agentId (zkiE1vaQ3a3sAK0K != z-jNutu-3EqlGlG1)
[11:59:56] [AGENTS] Found connection for iosILUIWU, hiding remote video
[11:59:56] Will request stop of video 0
[11:59:56] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": zkiE1vaQ3a3sAK0K], ["agentId": z-jNutu-3EqlGlG1, "sessionId": iosILUIWU, "connected": 1]]
[11:59:56] [AGENTS] Skipping vcc with different agentId (zkiE1vaQ3a3sAK0K != z-jNutu-3EqlGlG1)
[11:59:56] [AGENTS] Found connection for iosILUIWU, hiding remote video
[11:59:56] Will request stop of video 0
[11:59:56] [PIP] Removing 0 tracks from PiP for connection 0
[11:59:56] [PIP] ✅ All tracks removed for connection 0
[11:59:56] [SIG] agent_disconnected received for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=z-jNutu-3EqlGlG1
[11:59:56] [PIP] Removing 0 tracks from PiP for connection 0
[11:59:56] [PIP] ✅ All tracks removed for connection 0
[11:59:56] [AGENTS] Skipping vcc with different agentId (zkiE1vaQ3a3sAK0K != z-jNutu-3EqlGlG1)
[11:59:56] [AGENTS] Found connection for iosILUIWU, hiding remote video
[11:59:56] Will request stop of video 0
[11:59:56] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": zkiE1vaQ3a3sAK0K], ["agentId": z-jNutu-3EqlGlG1, "sessionId": iosILUIWU, "connected": 1]]
[11:59:56] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:59:56] [PIP] Removing 0 tracks from PiP for connection 0
[11:59:56] [PIP] ✅ All tracks removed for connection 0
[11:59:56] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[11:59:56] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=false, connectionStr=iosILUIWU
[11:59:56] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:56] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:59:56] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[11:59:56] new_session POST ok: token len=157
[11:59:56] HELLO → sent (fetched token, role=viewer)
[11:59:56] [SIG] hello_ok received for viewer connection
[11:59:56] [NEGO] ========== startNegotiation() BEGIN ==========
[11:59:56] [NEGO] Session: iosILUIWU, AgentId: z-jNutu-3EqlGlG1
[11:59:56] [NEGO] ICE profile step: 0, forceRelayOnly: false
[11:59:56] [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"]
[11:59:56] [ICE] ========== CREATING PEER CONNECTION (profile step 0) ==========
[11:59:56] [ICE] ICE servers (2 entries):
[11:59:56] [ICE] [0] stun:stun.l.google.com:19302 (no credentials)
[11:59:56] [ICE] [1] turn:crivello.dyndns.org:3478?transport=udp (with credentials)
[11:59:56] [ICE] [1] turn:crivello.dyndns.org:3478?transport=tcp (with credentials)
[11:59:56] [ICE] [1] turns:crivello.dyndns.org:5349?transport=tcp (with credentials)
[11:59:56] [ICE] Reset candidate counters for new connection attempt
[11:59:56] peerConnectionShouldNegotiate → starting negotiation
[11:59:56] …ignored (busy)
[11:59:56] [WS AUDIO] Skipping data channel - audio received via WebSocket
[11:59:56] [WS AUDIO] Session: rate=48000.0Hz, buffer=20.0ms
[11:59:56] [WS AUDIO] Mixer actual format: 48000.0Hz, 2ch
[11:59:56] [WS AUDIO] ⚠️ Mixer mismatch - will convert 48kHz mono → 48000.0Hz 2ch
[11:59:56] [WS AUDIO] ✅ Created converter: 48kHz mono → 48000.0Hz 2ch
[11:59:56] [WS AUDIO] ✅ Audio player ready (max 10 buffers)
[11:59:56] [WS AUDIO] ✅ Audio player initialized - ready to receive via WebSocket
[11:59:56] [DATA AUDIO] ========== createPeerConnection() END ==========
[11:59:56] Before peerconnection
[11:59:56] agentOnline
[11:59:56] Within peerconnection
[11:59:56] 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"]
[11:59:56] [ICE] local offer ufrag=jSPU
[11:59:56] [NEGO] ✅ Offer sent successfully, waiting for answer...
[11:59:56] [SIG] send offer ok
[11:59:56] [NEGO] ICE gathering will begin - watching for TURN/STUN candidates
[11:59:56] [ICE] Gathering state → 1 (RTCIceGatheringState(rawValue: 1))
[11:59:56] [ICE] Gathering state GATHERING - started collecting ICE candidates (timeout: 6s)
[11:59:56] [ICE] viewer local HOST #1: 192.168.1.177:63516 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #2: 84.227.75.34:63516 (udp) → sent
[11:59:56] [ICE] viewer local HOST #3: 10.50.3.244:51101 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #4: 194.230.158.30:49012 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #5: 194.230.158.30:4972 (udp) → sent
[11:59:56] [ICE] viewer local HOST #6: 10.29.166.113:56663 (udp) → sent
[11:59:56] [ICE] viewer local HOST #7: 10.29.166.113:59403 (udp) → sent
[11:59:56] [ICE] viewer local HOST #8: 10.29.166.113:60961 (udp) → sent
[11:59:56] [ICE] viewer local HOST #9: 10.29.166.113:53581 (udp) → sent
[11:59:56] [ICE] viewer local HOST #10: 10.29.166.113:52396 (udp) → sent
[11:59:56] [ICE] viewer local HOST #11: 10.29.166.113:51195 (udp) → sent
[11:59:56] [ICE] viewer local HOST #12: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:64981 (udp) → sent
[11:59:56] [ICE] viewer local HOST #13: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:62595 (udp) → sent
[11:59:56] [ICE] viewer local HOST #14: 192.168.1.177:54388 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #15: 84.227.75.34:54388 (udp) → sent
[11:59:56] [ICE] viewer local HOST #16: 10.50.3.244:60315 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #17: 194.230.158.30:49013 (udp) → sent
[11:59:56] [ICE] viewer local SRFLX #18: 194.230.158.30:4973 (udp) → sent
[11:59:56] [ICE] viewer local HOST #19: 10.29.166.113:54958 (udp) → sent
[11:59:56] [ICE] viewer local HOST #20: 10.29.166.113:52956 (udp) → sent
[11:59:56] [ICE] viewer local HOST #21: 10.29.166.113:65267 (udp) → sent
[11:59:56] [ICE] viewer local HOST #22: 10.29.166.113:58465 (udp) → sent
[11:59:56] [ICE] viewer local HOST #23: 10.29.166.113:54995 (udp) → sent
[11:59:56] [ICE] viewer local HOST #24: 10.29.166.113:62682 (udp) → sent
[11:59:56] [ICE] viewer local HOST #25: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:49893 (udp) → sent
[11:59:56] [ICE] viewer local HOST #26: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:62816 (udp) → sent
[11:59:56] [ICE] viewer local RELAY #27: 192.168.1.31:60507 (udp) → sent ✅
[11:59:56] [ICE] viewer local RELAY #28: 192.168.1.31:61369 (udp) → sent ✅
[11:59:56] [ICE] viewer local RELAY #29: 192.168.1.31:54234 (udp) → sent ✅
[11:59:56] [ICE] viewer local RELAY #30: 192.168.1.31:56648 (udp) → sent ✅
[11:59:56] [ICE] viewer local HOST #31: 192.168.1.177:51771 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #32: 10.50.3.244:51772 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #33: 10.29.166.113:51773 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #34: 10.29.166.113:51774 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #35: 10.29.166.113:51775 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #36: 10.29.166.113:51776 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #37: 10.29.166.113:51777 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #38: 10.29.166.113:51778 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #39: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:51779 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #40: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:51780 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #41: 192.168.1.177:51781 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #42: 10.50.3.244:51782 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #43: 10.29.166.113:51783 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #44: 10.29.166.113:51784 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #45: 10.29.166.113:51785 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #46: 10.29.166.113:51786 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #47: 10.29.166.113:51787 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #48: 10.29.166.113:51788 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #49: fdaa:bbcc:ddee:0:1841:8c4f:993a:7857:51789 (tcp) → sent
[11:59:56] [ICE] viewer local HOST #50: 2001:1708:bb9:ed00:f479:bb47:df4:9a3a:51790 (tcp) → sent
[11:59:57] [ICE] viewer local RELAY #51: 192.168.1.31:50172 (udp) → sent ✅
[11:59:57] [ICE] viewer local RELAY #52: 192.168.1.31:54152 (udp) → sent ✅
[11:59:57] [ICE] viewer local RELAY #53: 192.168.1.31:55211 (udp) → sent ✅
[11:59:57] [ICE] viewer local RELAY #54: 192.168.1.31:53153 (udp) → sent ✅
[12:00:03] [ICE] Watchdog fired: gatheringState=1, iceConnectionState=0, candidateCount=54, hasRelay=true, hasSrflx=true
[12:00:03] [ICE] Watchdog: skipping fallback - relay candidates present
[12:00:03] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[12:00:06] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:00:08] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:00:10] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 11:00:10 +0000 - type: unknown, operation_type: 0, message_id: 24540, session_id: ILUIWU, state: 0
[12:00:10] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 24540, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-03-11 11:00:08";
"file_name" = "";
message = "Same\Ud83e\Udd72";
"message_id" = 24540;
"message_type" = 0;
"prev_session_message_id" = 24539;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
[12:00:10] [PUSH] App active - suppressing notification UI, posting internal event
[12:00:10] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:00:10 +0000
[12:00:10] [PUSH_TRACE] ⬇️ Processing embedded message_id=24540
[12:00:10] [PUSH_EMBED] 📩 Received embedded message: id=24540, type=0, sender=Esra
[12:00:10] [PUSH_TRACE] ⬇️ Message details: text="Same🥲...", datesent=2026-03-11 11:00:08
[12:00:10] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:00:10] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_EMBED] ✅ Saved message 24540 to local DB (sync)
[12:00:10] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24540
[12:00:10] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24540
[12:00:10] [PUSH_TRACE] 📦 Cache state: valid=true, count=50, IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[12:00:10] [PUSH_EMBED] Inserted message 24540 into existing cache (now 51 messages)
[12:00:10] [PUSH_TRACE] 📦 ✅ Inserted message 24540, cache now has IDs: [24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:10] [PUSH_TRACE] 📦 EXITING cache update queue for message 24540
[12:00:10] [PUSH_EMBED] Fetching evolution data for message 24540 in background
[12:00:10] [PUSH_EMBED] ✅ Fully processed message 24540
[12:00:10] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24540
[12:00:10] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 50 msgs, IDs=[24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531, 24530]
[12:00:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 24540, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-03-11 11:00:08";
"file_name" = "";
message = "Same\Ud83e\Udd72";
"message_id" = 24540;
"message_type" = 0;
"prev_session_message_id" = 24539;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
[12:00:10] [PUSH_EMBED_VC] Processing embedded message: id=24540, type=0, sender=Esra, prevId=24539
[12:00:10] [PUSH_EMBED_VC] Inserted message 24540 into allMessagesWithReadBy (now 51 messages)
[12:00:10] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=51
[12:00:10] [PUSH_EMBED_VC] ✅ Previous message 24539 exists in memory
[12:00:10] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:00:10] [PUSH] Parsed message_id: 24540
[12:00:10] [PUSH] Parsed operation_type: 0
[12:00:10] [PUSH] Taking direct action: opType=0, messageId=24540
[12:00:10] [PUSH_EMBED_VC] Saved message 24540 to local DB
[12:00:10] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24540
[12:00:10] [PUSH] ⚡ Message 24540 already in memory - skipping duplicate notification entirely
[12:00:10] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:00:10] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:00:10] [PUSH_TRACE] 👁️ Received message id=24540, text="Same🥲..."
[12:00:10] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:00:10] [PUSH_UI] Message 24540 already in memory - skipping insert
[12:00:10] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:00:10] [PUSH] Silent push received
[12:00:10] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:00:10 +0000, appState=0, message_id=24540
[12:00:10] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:10] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:00:10 +0000
[12:00:10] [PUSH_TRACE] ⬇️ Processing embedded message_id=24540
[12:00:10] [PUSH_EMBED] 📩 Received embedded message: id=24540, type=0, sender=Esra
[12:00:10] [PUSH_TRACE] ⬇️ Message details: text="Same🥲...", datesent=2026-03-11 11:00:08
[12:00:10] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:00:10] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_EMBED] ✅ Saved message 24540 to local DB (sync)
[12:00:10] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24540
[12:00:10] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24540
[12:00:10] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24540
[12:00:10] [PUSH_TRACE] 📦 Cache state: valid=true, count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:10] [PUSH_TRACE] 📦 ⚠️ Message 24540 already in cache, skipping insert
[12:00:10] [PUSH_TRACE] 📦 EXITING cache update queue for message 24540
[12:00:10] [PUSH_EMBED] Fetching evolution data for message 24540 in background
[12:00:10] [PUSH_EMBED] ✅ Fully processed message 24540
[12:00:10] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24540
[12:00:10] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531], handled=true
[12:00:10] [PUSH] Embedded message handled instantly from silent push
[12:00:10] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[12:00:10] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24540
[12:00:10] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:00:10] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:00:10] [PUSH_TRACE] 👁️ Received message id=24540, text="Same🥲..."
[12:00:10] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:00:10] [PUSH_UI] Message 24540 already in memory - skipping insert
[12:00:10] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:00:10] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 51 msgs, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 11:00:08";
"file_name" = "";
message = "Same\Ud83e\Udd72";
"message_id" = 24540;
"message_type" = 0;
"prev_session_message_id" = 24539;
"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"): 24540, AnyHashable("session_id"): ILUIWU]
[12:00:10] [PUSH_EMBED_VC] Message 24540 already in memory - skipping
[12:00:10] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:00:10] [PUSH] Parsed message_id: 24540
[12:00:10] [PUSH] Parsed operation_type: 0
[12:00:10] [PUSH] Taking direct action: opType=0, messageId=24540
[12:00:10] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24540
[12:00:10] [PUSH] ⚡ Message 24540 already in memory - skipping duplicate notification entirely
[12:00:10] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=64
[12:00:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[24540, 24539, 24538, 24537, 24536]
[12:00:10] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 51 messages
[12:00:10] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:10] [RELOAD_TAB] 📊 Building chatRows from 51 messages
[12:00:10] [RELOAD_TAB] 📊 Built 52 chatRows, estHeight=0.0
[12:00:10] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24539 → 24540
[12:00:10] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=66
[12:00:10] [SCROLL] 💓 alive, visible=38...51, rows=52, estHeight=0.0, heightCalls=120
[12:00:10] [CLIENT_SIG] Event received: type=0 messageId=24540
[12:00:10] [WS_EVENT] Received event: type=0, messageId=24540
[12:00:10] [WS_EVENT] 📨 New message notification (msgId=24540) - triggering incremental refresh, currentMsgCount=51
[12:00:10] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[12:00:10] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24540, maxMemoryId=24540
[12:00:10] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24540
[12:00:10] [INCREMENTAL_SYNC] ✅ No new messages
[12:00:10] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[12:00:10] [PUSH_EMBED] Got evolution data for message 24540, saving to local DB
[12:00:10] [PUSH_EMBED] Saved evolution data for message 24540
[12:00:10] [PUSH_EMBED] Got evolution data for message 24540, saving to local DB
[12:00:10] [PUSH_EMBED] Saved evolution data for message 24540
[12:00:11] [PUSH] Silent push received
[12:00:11] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:00:11 +0000, appState=0, message_id=nil
[12:00:11] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:11] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:00:11 +0000
[12:00:11] [PUSH_EMBED] No embedded message_data in notification
[12:00:11] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:00:11] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531], handled=false
[12:00:11] [PUSH] No embedded data, pre-loading messages from server
[12:00:11] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:00:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:00:11] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:00:11] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:11] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:11] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [24490]
[12:00:11] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=1, IDs=[24490]
[12:00:11] [PUSH_TRACE] 🔀 mergeMessages: merged.count=51, first 10 IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:11] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 1 from push)
[12:00:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:00:11] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 51 msgs, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24540]
[12:00:11] [PUSH] Parsed message_id: 24540
[12:00:11] [PUSH] Parsed operation_type: 3
[12:00:11] [PUSH] Taking direct action: opType=3, messageId=24540
[12:00:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24540
[12:00:12] [CLIENT_SIG] Event received: type=3 messageId=24540
[12:00:12] [WS_EVENT] Received event: type=3, messageId=24540
[12:00:12] [WS_EVENT] Read receipt for message 24540 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:00:21] [SCROLL] 💓 alive, visible=39...47, rows=52, estHeight=0.0, heightCalls=0
[12:00:21] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[12:00:26] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[12:00:26] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[12:00:26] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=52
[12:00:26] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=7
[12:00:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-1, 24540, 24539, 24538, 24537]
[12:00:26] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 52 messages
[12:00:26] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [-1, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:26] [RELOAD_TAB] 📊 Building chatRows from 52 messages
[12:00:26] [RELOAD_TAB] 📊 Built 53 chatRows, estHeight=0.0
[12:00:26] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=61
[12:00:26] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[12:00:26] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[12:00:26] [SCROLL] 💓 alive, visible=45...52, rows=53, estHeight=0.0, heightCalls=116
[12:00:27] [CLIENT_SIG] Event received: type=0 messageId=24541
[12:00:27] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":24541,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-03-11 11:00:26"}
[12:00:27] [WS_EVENT] Received event: type=0, messageId=24541
[12:00:27] [WS_EVENT] 📨 New message notification (msgId=24541) - triggering incremental refresh, currentMsgCount=52
[12:00:27] [CHAT] receive_message.php JSON: ["ok": 1, "file_name": , "message_id": 24541, "datesent_utc": 2026-03-11 11:00:26, "message_type": 0, "session_id": ILUIWU]
[12:00:27] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[12:00:27] [DB_UPGRADE] Upgrading message ID: -1 → 24541, preserveOriginalDate=false
[12:00:27] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24540, maxMemoryId=24540
[12:00:27] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24540
[12:00:27] [DB_UPGRADE] ✅ Upgraded -1 → 24541 with send_status=0, 1 row(s) affected
[12:00:27] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 24541
[12:00:27] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 24541
[12:00:27] ReloadData 9
[12:00:27] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[12:00:27] [PUSH_TRACE] 📡 INCREMENTAL: Server returned 1 new messages, IDs=[24541]
[12:00:27] [PUSH_TRACE] 📡 INCREMENTAL: BEFORE merge, memory has 52 msgs, first 10 IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:27] [PUSH_TRACE] 📡 INCREMENTAL: AFTER merge, added 0 new, total 52, first 10 IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:27] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[12:00:27] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=52
[12:00:27] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[12:00:27] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=60
[12:00:27] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[24541, 24540, 24539, 24538, 24537]
[12:00:27] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 52 messages
[12:00:27] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:27] [RELOAD_TAB] 📊 Building chatRows from 52 messages
[12:00:27] [RELOAD_TAB] 📊 Built 53 chatRows, estHeight=0.0
[12:00:27] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=60
[12:00:28] [PUSH] Silent push received
[12:00:28] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:00:28 +0000, appState=0, message_id=nil
[12:00:28] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:28] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:00:28 +0000
[12:00:28] [PUSH_EMBED] No embedded message_data in notification
[12:00:28] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:00:28] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531], handled=false
[12:00:28] [PUSH] No embedded data, pre-loading messages from server
[12:00:28] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:00:29] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:00:29] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:00:29] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:29] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=51, IDs=[24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532, 24531]
[12:00:29] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [24491, 24490]
[12:00:29] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=2, IDs=[24491, 24490]
[12:00:29] [PUSH_TRACE] 🔀 mergeMessages: merged.count=52, first 10 IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:29] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[12:00:29] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:00:29] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 52 msgs, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:00:29] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24541, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
[12:00:29] [PUSH] Parsed message_id: 24541
[12:00:29] [PUSH] Parsed operation_type: 3
[12:00:29] [PUSH] Taking direct action: opType=3, messageId=24541
[12:00:29] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24541
[12:00:29] [CLIENT_SIG] Event received: type=3 messageId=24541
[12:00:29] [WS_EVENT] Received event: type=3, messageId=24541
[12:00:29] [WS_EVENT] Read receipt for message 24541 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:00:39] [MENU] dismissAnyExistingMenu called
[12:00:39] [MENU] dismissAnyExistingMenu completed
[12:00:39] [SCROLL] 💓 alive, visible=47...52, rows=53, estHeight=0.0, heightCalls=60
[12:00:39] [LOG-KB] textViewShouldEndEditing: isInputField=true, allowKeyboardDismiss=true, returning=true, textView=<Eye.PastingTextView: 0x118f80c00; baseClass = UITextView; frame = (44 8; 320 36
[12:00:39] [LOG-KB] textViewDidEndEditing: isInputField=true, resetting allowKeyboardDismiss to false
[12:01:27] [SIG] agent_disconnect received for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [SIG] agent_disconnect received for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [SIG] agent_disconnected received for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] Found connection for iosILUIWU, hiding remote video
[12:01:27] Will request stop of video 0
[12:01:27] [AGENTS] Skipping vcc with different agentId (z-jNutu-3EqlGlG1 != zkiE1vaQ3a3sAK0K)
[12:01:27] [AGENTS] Found connection for iosILUIWU, hiding remote video
[12:01:27] Will request stop of video 0
[12:01:27] [AGENTS] Skipping vcc with different agentId (z-jNutu-3EqlGlG1 != zkiE1vaQ3a3sAK0K)
[12:01:27] [AGENTS] Found connection for iosILUIWU, hiding remote video
[12:01:27] Will request stop of video 0
[12:01:27] [AGENTS] Skipping vcc with different agentId (z-jNutu-3EqlGlG1 != zkiE1vaQ3a3sAK0K)
[12:01:27] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": zkiE1vaQ3a3sAK0K, "connected": 1]]
[12:01:27] [PIP] Removing 0 tracks from PiP for connection 0
[12:01:27] [PIP] ✅ All tracks removed for connection 0
[12:01:27] [PIP] Removing 0 tracks from PiP for connection 0
[12:01:27] [PIP] ✅ All tracks removed for connection 0
[12:01:27] [PIP] Removing 0 tracks from PiP for connection 0
[12:01:27] [PIP] ✅ All tracks removed for connection 0
[12:01:27] [SIG] agent_disconnected received for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] handleAgentDisconnect called for sessionId=iosILUIWU agentId=zkiE1vaQ3a3sAK0K
[12:01:27] [AGENTS] Found connection for iosILUIWU, hiding remote video
[12:01:27] Will request stop of video 0
[12:01:27] [AGENTS] Skipping vcc with different agentId (z-jNutu-3EqlGlG1 != zkiE1vaQ3a3sAK0K)
[12:01:27] [SIG] agents_list received: [["agentId": zkiE1vaQ3a3sAK0K, "connected": 1, "sessionId": iosILUIWU]]
[12:01:27] [PIP] Removing 0 tracks from PiP for connection 0
[12:01:27] [PIP] ✅ All tracks removed for connection 0
[12:02:12] [BROADCAST] Starting camera broadcast on session: iosILUIWU
[12:02:12] Initing with camera 0
[12:02:12] [START] AgentController.start() called with session: iosILUIWU
[12:02:12] [START] Cancelling any existing idle stop timer
[12:02:12] [BROADCAST] Lightbulb shown at lower left, frame=(370.0, 800.0, 50.0, 50.0)
[12:02:13] WS connected
[12:02:14] [SIG] agent_connected received for sessionId=iosILUIWU agentId=o8LAXAjGMBcoSW3A
[12:02:14] [CAM] ✅ Connected to signaling server. Session: iosILUIWU, agentId: o8LAXAjGMBcoSW3A
[12:02:14] [CAM] helloOK → connected=true, myAgentId=o8LAXAjGMBcoSW3A
[12:02:14] [WEBRTC] Creating new WebRTC client
[12:02:14] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1
[12:02:14] [CODEC] Agent selected encoder: AV1 (best quality)
[12:02:14] [WS AUDIO] Initializing WebSocket audio sender...
[12:02:14] [WS AUDIO] ✅ WebSocket audio sender initialized
[12:02:14] [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:02:14] [ICE] Using 2 ICE server entries
[12:02:14] [SIG] agent_connect received for sessionId=iosILUIWU agentId=o8LAXAjGMBcoSW3A
[12:02:14] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:o8LAXAjGMBcoSW3A
[12:02:14] [SIG] agent_connect received for sessionId=iosILUIWU agentId=o8LAXAjGMBcoSW3A
[12:02:14] [SIG] agents_list received: [["sessionId": iosILUIWU, "agentId": o8LAXAjGMBcoSW3A, "connected": 1]]
[12:02:14] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:o8LAXAjGMBcoSW3A
[12:02:14] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:o8LAXAjGMBcoSW3A
[12:02:14] [SIG] agent_connected received for sessionId=iosILUIWU agentId=o8LAXAjGMBcoSW3A
[12:02:14] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:o8LAXAjGMBcoSW3A
[12:02:14] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": o8LAXAjGMBcoSW3A]]
[12:02:14] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30
[12:02:14] [CAPTURE] Creating audio track
[12:02:14] [CAPTURE] DataChannelAudioSender already exists
[12:02:14] [CAPTURE] Creating front video source and track
[12:02:14] [CAPTURE] Creating back video source and track
[12:02:14] localVideoTrackFront ok
[12:02:14] localVideoTrackBack ok
[12:02:14] Marking tracks as ready and firing callbacks
[12:02:14] [CAPTURE] ✅ Device supports MultiCam, starting dual camera session
[12:02:14] [CAPTURE] configureAndStartMultiCamSession() starting...
[12:02:14] Video capture stopped (audio still running)
[12:02:14] [CAPTURE] Created MultiCamSession and began configuration
[12:02:14] [CAPTURE] Looking for camera devices...
[12:02:14] [CAPTURE] ✅ Found front camera: Front Camera
[12:02:14] [CAPTURE] ✅ Found back camera: Back Camera
[12:02:14] Selected camera format: 1920x1080, pixel format: 875704438
[12:02:14] [CAPTURE] Enabled continuous autofocus for front camera
[12:02:14] Selected camera format: 1920x1080, pixel format: 875704438
[12:02:14] [CAPTURE] Enabled continuous autofocus for back camera
[12:02:14] Selected camera format: 640x480, pixel format: 875704438
[12:02:14] Selected camera format: 640x480, pixel format: 875704438
[12:02:14] [iOS AUDIO] ========== START CAPTURE ==========
[12:02:14] [iOS AUDIO] BEFORE - category: AVAudioSessionCategoryPlayAndRecord
[12:02:14] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeVideoChat
[12:02:14] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false
[12:02:14] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"]
[12:02:14] [iOS AUDIO] BEFORE - currentRoute.inputs: ["iPhone Microphone"]
[12:02:14] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"]
[12:02:14] [iOS AUDIO] ✅ Audio session already .playAndRecord - keeping current config
[12:02:14] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord
[12:02:14] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat
[12:02:14] [iOS AUDIO] AFTER - currentRoute.inputs: ["iPhone Microphone"]
[12:02:14] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"]
[12:02:14] [iOS AUDIO] AFTER - recordPermission: 1735552628
[12:02:14] [iOS AUDIO] Creating AVAudioEngine...
[12:02:14] [iOS AUDIO] Got inputNode: <AVAudioInputNode: 0x12be3b830>
[12:02:14] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1
[12:02:14] [iOS AUDIO] Installing tap on inputNode...
[12:02:14] [iOS AUDIO] ✅ Tap installed
[12:02:14] [iOS AUDIO] Starting engine...
[12:02:14] [iOS AUDIO] ✅ AVAudioEngine started
[12:02:14] [iOS AUDIO] engine.isRunning: true
[12:02:14] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false
[12:02:14] [iOS AUDIO] ========== END START CAPTURE ==========
[12:02:14] [CAPTURE] Configuration committed
[12:02:14] [CAPTURE] Starting MultiCam session...
[12:02:14] [iOS AUDIO] 📤 Sent packet #1: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [iOS AUDIO] 📤 Sent packet #2: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [CAPTURE] ✅ AVCaptureMultiCamSession started successfully (front + back)
[12:02:14] [CAPTURE] Session running: true
[12:02:14] [CAM] viewerJoin → session: iosILUIWU, viewerId: ci6KMK9PNGYPbcPN
[12:02:14] [WEBRTC] WebRTC client already exists, reusing it
[12:02:14] [WEBRTC] WebRTC client already exists, reusing it
[12:02:14] ensureCaptureStarted - adding peer
[12:02:14] tracksReady = true
[12:02:14] Added front video track to peer connection for ci6KMK9PNGYPbcPN
[12:02:14] Added back video track to peer connection for ci6KMK9PNGYPbcPN
[12:02:14] Added audio track to peer connection for ci6KMK9PNGYPbcPN
[12:02:14] localVideoTrackFront ok
[12:02:14] localVideoTrackBack ok
[12:02:14] tracks already marked as ready
[12:02:14] Peer added with tracks, notifying viewer ready
[12:02:14] notifyViewerReady called
[12:02:14] notifyViewerReady -> Will send
[12:02:14] [CAM] Offer → session: iosILUIWU, viewerId: ci6KMK9PNGYPbcPN
[12:02:14] [WEBRTC] WebRTC client already exists, reusing it
[12:02:14] [CAM] Peer connection ready, processing offer immediately
[12:02:14] Creating answer for ci6KMK9PNGYPbcPN. Found 3 transceivers:
[12:02:14] Transceiver 0: video, direction=sendRecv, hasTrack=true
[12:02:14] Transceiver 1: video, direction=sendRecv, hasTrack=true
[12:02:14] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2935718825 1 udp 2122260224 192.168.1.8 57297 typ host generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote host → applying
[12:02:14] SEND answer for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] SDP length: 4819
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] ICE gathering state: 1
[12:02:14] Found s:candidate:406815022 1 udp 2122129152 100.76.19.55 51759 typ host generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] ICE state for vid=ci6KMK9PNGYPbcPN: 1 ( RTCIceConnectionState )
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121670400 192.0.0.6 61359 typ host generation 0 ufrag WTeX network-id 4 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121604864 192.0.0.6 60805 typ host generation 0 ufrag WTeX network-id 7 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:1763472453 1 udp 2122129151 192.168.1.177 55492 typ host generation 0 ufrag fmmj network-id 1 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3366556654 1 udp 2122063615 10.50.3.244 55283 typ host generation 0 ufrag fmmj network-id 11 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3588546498 1 udp 2121998079 10.29.166.113 54786 typ host generation 0 ufrag fmmj network-id 12 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3588546498 1 udp 2121932543 10.29.166.113 64854 typ host generation 0 ufrag fmmj network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3588546498 1 udp 2121867007 10.29.166.113 58549 typ host generation 0 ufrag fmmj network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121539328 192.0.0.6 63145 typ host generation 0 ufrag WTeX network-id 9 network-cost 50
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] [ICE] remote host → applying
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3588546498 1 udp 2121801471 10.29.166.113 63684 typ host generation 0 ufrag fmmj network-id 6 network-cost 50", "sdpMid": Optional("0")]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3588546498 1 udp 2121735935 10.29.166.113 50497 typ host generation 0 ufrag fmmj network-id 7 network-cost 50", "sdpMid": Optional("0")]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3588546498 1 udp 2121670399 10.29.166.113 57892 typ host generation 0 ufrag fmmj network-id 8 network-cost 50", "sdpMid": Optional("0")]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:2054782762 1 udp 2122265343 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 55783 typ host generation 0 ufrag fmmj network-id 3 network-cost 10", "sdpMid": Optional("0")]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:163731993 1 udp 2122197247 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 60875 typ host generation 0 ufrag fmmj network-id 2 network-cost 10", "sdpMid": Optional("0")]
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2642328360 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 65410 typ host generation 0 ufrag WTeX network-id 14 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2806046057 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 56340 typ host generation 0 ufrag WTeX network-id 5 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55538 typ host generation 0 ufrag WTeX network-id 6 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 49288 typ host generation 0 ufrag WTeX network-id 8 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55447 typ host generation 0 ufrag WTeX network-id 10 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2935718825 1 udp 2122260224 192.168.1.8 60810 typ host generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:406815022 1 udp 2122129152 100.76.19.55 54319 typ host generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121670400 192.0.0.6 63207 typ host generation 0 ufrag WTeX network-id 4 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121604864 192.0.0.6 54937 typ host generation 0 ufrag WTeX network-id 7 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [iOS AUDIO] 📤 Sent packet #3: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:11979770 1 udp 2121539328 192.0.0.6 57358 typ host generation 0 ufrag WTeX network-id 9 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2642328360 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 52771 typ host generation 0 ufrag WTeX network-id 14 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2806046057 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 55283 typ host generation 0 ufrag WTeX network-id 5 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55770 typ host generation 0 ufrag WTeX network-id 6 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 53828 typ host generation 0 ufrag WTeX network-id 8 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:2509171063 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 63160 typ host generation 0 ufrag WTeX network-id 10 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [ICE] agent local srflx
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) srflx candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3327563131 1 udp 1685921535 84.227.75.34 55492 typ srflx raddr 192.168.1.177 rport 55492 generation 0 ufrag fmmj network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3993104640 1 udp 1686052607 212.252.118.51 24117 typ srflx raddr 192.168.1.8 rport 57297 generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote srflx → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3993104640 1 udp 1686052607 212.252.118.51 24515 typ srflx raddr 192.168.1.8 rport 60810 generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote srflx → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3077922832 1 udp 1685921535 31.142.27.147 47599 typ srflx raddr 100.76.19.55 rport 54319 generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote srflx → applying
[12:02:14] [ICE] agent local relay → ip=192.168.1.31 port=55348
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) relay candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:894097117 1 udp 41755135 192.168.1.31 55348 typ relay raddr 84.227.75.34 rport 55492 generation 0 ufrag fmmj network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3077922832 1 udp 1685921535 31.142.27.147 48084 typ srflx raddr 100.76.19.55 rport 51759 generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote srflx → applying
[12:02:14] [ICE] agent local relay → ip=192.168.1.31 port=52965
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) relay candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:1267020869 1 udp 24977663 192.168.1.31 52965 typ relay raddr 84.227.75.34 rport 51836 generation 0 ufrag fmmj network-id 1 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1347508029 1 tcp 1518280447 192.168.1.8 54370 typ host tcptype passive generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3868546490 1 tcp 1518149375 100.76.19.55 54371 typ host tcptype passive generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517690623 192.0.0.6 54372 typ host tcptype passive generation 0 ufrag WTeX network-id 4 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517625087 192.0.0.6 54373 typ host tcptype passive generation 0 ufrag WTeX network-id 7 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517559551 192.0.0.6 54374 typ host tcptype passive generation 0 ufrag WTeX network-id 9 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1674866620 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54375 typ host tcptype passive generation 0 ufrag WTeX network-id 14 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1508510205 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54376 typ host tcptype passive generation 0 ufrag WTeX network-id 5 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54377 typ host tcptype passive generation 0 ufrag WTeX network-id 6 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54378 typ host tcptype passive generation 0 ufrag WTeX network-id 8 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54379 typ host tcptype passive generation 0 ufrag WTeX network-id 10 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1347508029 1 tcp 1518280447 192.168.1.8 54380 typ host tcptype passive generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:3868546490 1 tcp 1518149375 100.76.19.55 54381 typ host tcptype passive generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517690623 192.0.0.6 54382 typ host tcptype passive generation 0 ufrag WTeX network-id 4 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517625087 192.0.0.6 54383 typ host tcptype passive generation 0 ufrag WTeX network-id 7 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4263255918 1 tcp 1517559551 192.0.0.6 54384 typ host tcptype passive generation 0 ufrag WTeX network-id 9 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1674866620 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54385 typ host tcptype passive generation 0 ufrag WTeX network-id 14 network-cost 900
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1508510205 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54386 typ host tcptype passive generation 0 ufrag WTeX network-id 5 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54387 typ host tcptype passive generation 0 ufrag WTeX network-id 6 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54388 typ host tcptype passive generation 0 ufrag WTeX network-id 8 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:1797537251 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54389 typ host tcptype passive generation 0 ufrag WTeX network-id 10 network-cost 50
[12:02:14] [ICE] remote host → applying
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:399742685 1 tcp 1518149375 192.168.1.177 51852 typ host tcptype passive generation 0 ufrag fmmj network-id 1 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:3060167030 1 tcp 1518083839 10.50.3.244 51858 typ host tcptype passive generation 0 ufrag fmmj network-id 11 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1518018303 10.29.166.113 51864 typ host tcptype passive generation 0 ufrag fmmj network-id 12 network-cost 900", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1517952767 10.29.166.113 51870 typ host tcptype passive generation 0 ufrag fmmj network-id 4 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1517887231 10.29.166.113 51876 typ host tcptype passive generation 0 ufrag fmmj network-id 5 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1517821695 10.29.166.113 51882 typ host tcptype passive generation 0 ufrag fmmj network-id 6 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1517756159 10.29.166.113 51888 typ host tcptype passive generation 0 ufrag fmmj network-id 7 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:2871737690 1 tcp 1517690623 10.29.166.113 51894 typ host tcptype passive generation 0 ufrag fmmj network-id 8 network-cost 50", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:79076786 1 tcp 1518285567 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 51900 typ host tcptype passive generation 0 ufrag fmmj network-id 3 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [ICE] agent local host
[12:02:14] [ICE] local → remote (ci6KMK9PNGYPbcPN) host candidate
[12:02:14] SEND ice for viewerId=ci6KMK9PNGYPbcPN
[12:02:14] Candidate: ["candidate": "candidate:1997387905 1 tcp 1518217471 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 51906 typ host tcptype passive generation 0 ufrag fmmj network-id 2 network-cost 10", "sdpMid": Optional("0"), "sdpMLineIndex": 0]
[12:02:14] [iOS AUDIO] 📤 Sent packet #4: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [iOS AUDIO] 📤 Sent packet #5: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:4165745489 1 udp 41755135 192.168.1.31 49535 typ relay raddr 31.142.27.147 rport 48084 generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote relay → applying (ip=192.168.1.31 port=49535)
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:115797957 1 udp 25108735 192.168.1.31 49670 typ relay raddr 212.252.118.51 rport 23902 generation 0 ufrag WTeX network-id 1 network-cost 10
[12:02:14] [ICE] remote relay → applying (ip=192.168.1.31 port=49670)
[12:02:14] [iOS AUDIO] 📤 Sent packet #6: 9600 bytes (4800 samples, ~100ms)
[12:02:14] [CAM] iceFromViewer viewerId=ci6KMK9PNGYPbcPN
[12:02:14] [CAM] Peer connection ready, processing ICE candidate immediately
[12:02:14] addRemoteCandidate for vid=ci6KMK9PNGYPbcPN
[12:02:14] Found s:candidate:115797957 1 udp 24977663 192.168.1.31 53590 typ relay raddr 31.142.27.147 rport 47830 generation 0 ufrag WTeX network-id 13 network-cost 900
[12:02:14] [ICE] remote relay → applying (ip=192.168.1.31 port=53590)
[12:02:15] [iOS AUDIO] 📤 Sent packet #7: 9600 bytes (4800 samples, ~100ms)
[12:02:15] [iOS AUDIO] 📤 Sent packet #8: 9600 bytes (4800 samples, ~100ms)
[12:02:15] ICE state for vid=ci6KMK9PNGYPbcPN: 2 ( RTCIceConnectionState )
[12:02:15] [STATS] starting poll for vid=ci6KMK9PNGYPbcPN
[12:02:15] [iOS AUDIO] 📤 Sent packet #9: 9600 bytes (4800 samples, ~100ms)
[12:02:15] [iOS AUDIO] 📤 Sent packet #10: 9600 bytes (4800 samples, ~100ms)
[12:02:15] [NETWORK] Status changed: connected
[12:02:19] [iOS AUDIO] ✅ Streaming: 50 packets sent
[12:03:04] [iOS AUDIO] 📊 500 audio packets sent
[12:03:09] [LIFECYCLE] App resigning active - cleared crash flag
[12:03:10] [UPLOAD_QUEUE] ✅ Database flushed (WAL checkpoint) before background
[12:03:10] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[12:03:10] [SECURITY] Saved background timestamp
[12:03:10] [LIFECYCLE] App entering background - cleared crash flag
[12:03:10] [CLIENT_SIG] Disconnecting
[12:03:10] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[12:03:10] [DB] ✅ Chat database flushed (WAL checkpoint) before background
[12:03:10] [PUSH_TRACE] 💤 BACKGROUND: memory has 52 messages, first 10 IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:10] [LIFECYCLE] Background snapshot: count=52, maxId=24541
[12:03:10] [LIFECYCLE] Stopping camera broadcast due to background (will resume on foreground)
[12:03:10] [CAM] Disconnected from signaling server
[12:03:10] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=0
[12:03:10] [WS] Canceling WebSocket for viewer connection to iosILUIWU
[12:03:10] In cleanupPeer
[12:03:10] In cleanupPeer
[12:03:10] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=0
[12:03:10] [WS] Canceling WebSocket for viewer connection to iosILUIWU
[12:03:10] In cleanupPeer
[12:03:10] In cleanupPeer
[12:03:10] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[12:03:10] [WS] Canceling WebSocket for query connection to iosILUIWU
[12:03:10] In cleanupPeer
[12:03:10] In cleanupPeer
[12:03:10] [LIFECYCLE] WebRTC audio disabled
[12:03:11] [LIFECYCLE] AVAudioSession deactivated
[12:03:11] [LIFECYCLE] All connections stopped
[12:03:11] [CLIENT_SIG] WebSocket closed with code 1001
[12:03:11] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:03:11] [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:03:11] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:03:11] Video capture stopped (audio still running)
[12:03:11] [iOS AUDIO] Audio capture stopped
[12:03:11] Capture stopped (video + audio)
[12:03:11] ICE state for vid=ci6KMK9PNGYPbcPN: 6 ( RTCIceConnectionState )
[12:03:11] Video capture stopped (audio still running)
[12:03:11] Capture stopped (video + audio)
[12:03:11] [WEBRTC] WebRTCClient deinit - timers cleaned up
[12:03:11] [WEBRTC] ✅ Media teardown complete - camera stopped
[12:03:11] WS closed
[12:03:11] [SERVER] Stopped reconnect polling
[12:03:11] Will request stop of video 0
[12:03:11] [WS] WebSocket task completed with error - isQueryOnly=false: cancelled
[12:03:11] [AGENT] Chat-only mode - keeping WebSocket open despite no agent
[12:03:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[12:03:11] Will request stop of video 0
[12:03:11] Will request stop of video 0
[12:03:11] [WS] WebSocket task completed with error - isQueryOnly=false: cancelled
[12:03:11] [AGENT] Chat-only mode - keeping WebSocket open despite no agent
[12:03:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[12:03:11] Will request stop of video 0
[12:03:11] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[12:03:11] [WS] Query connection error - cleaning up all agent connections and views
[12:03:11] Will request stop of video 0
[12:03:11] Will request stop of video 0
[12:03:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[12:03:11] [WS] Query connection failed - cleaning up all agent connections and views
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [WS] URLSession invalidated successfully
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [WS] URLSession invalidated successfully
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [CLEANUP] ========================================
[12:03:11] [CLEANUP] Cleaning up all agent connections and views
[12:03:11] [CLEANUP] Current state: vccs=2, videoViews=0, feedScrollViews=0
[12:03:11] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=-1
[12:03:11] In cleanupPeer
[12:03:11] In cleanupPeer
[12:03:11] [WS] stopSignalingAndPeer called - isQueryOnly=false, connectionStr=iosILUIWU, wsState=-1
[12:03:11] In cleanupPeer
[12:03:11] In cleanupPeer
[12:03:11] [LIFECYCLE] 🔴 VideoConnectionClass DEALLOCATING - isQueryOnly=false, connectionStr=iosILUIWU
[12:03:11] [DATA AUDIO] Audio engine stopped
[12:03:11] [LIFECYCLE] 🔴 VideoConnectionClass DEALLOCATING - isQueryOnly=false, connectionStr=iosILUIWU
[12:03:11] [DATA AUDIO] Audio engine stopped
[12:03:11] [CLEANUP] Stopped and removed 2 video connections
[12:03:11] [CLEANUP] Removed 0 video views
[12:03:11] [CLEANUP] Removed 0 feed scroll views
[12:03:11] [CLEANUP] Removed 0 status labels
[12:03:11] [CLEANUP] Reset agent query state
[12:03:11] [CLEANUP] Updated page indicator
[12:03:11] [CLEANUP] Rebuilt video layout
[12:03:11] [CLEANUP] ✅ All agent connections and views cleaned up
[12:03:11] [CLEANUP] ========================================
[12:03:11] [SERVER] Skipping reconnect polling - app is in background
[12:03:11] [WS] URLSession invalidated successfully
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [PIP] Removing 0 tracks from PiP for connection 0
[12:03:11] [PIP] ✅ All tracks removed for connection 0
[12:03:11] [CLEANUP] ========================================
[12:03:11] [CLEANUP] Cleaning up all agent connections and views
[12:03:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[12:03:11] [CLEANUP] Stopped and removed 0 video connections
[12:03:11] [CLEANUP] Removed 0 video views
[12:03:11] [CLEANUP] Removed 0 feed scroll views
[12:03:11] [CLEANUP] Removed 0 status labels
[12:03:11] [CLEANUP] Reset agent query state
[12:03:11] [CLEANUP] Updated page indicator
[12:03:11] [CLEANUP] Rebuilt video layout
[12:03:11] [CLEANUP] ✅ All agent connections and views cleaned up
[12:03:11] [CLEANUP] ========================================
[12:03:11] [SERVER] Skipping reconnect polling - app is in background
[12:03:16] [SECURITY] Timeout check: elapsed=5.842187881469727s, timeout=300.0s
[12:03:16] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[12:03:16] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:03:16] [LIFECYCLE] App entering foreground - restoring connections
[12:03:16] [PUSH_TRACE] 🔄 FOREGROUND: memory has 52 msgs, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [PUSH_TRACE] 🔄 FOREGROUND: cache has 52 msgs, valid=true, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [NETWORK] Status changed: connected
[12:03:16] [UPLOAD_RETRY] No pending uploads to retry
[12:03:16] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=52
[12:03:16] [READBY_OPT] Fetching readBy for 2 unsettled messages (targeted)
[12:03:16] [LIFECYCLE] WebRTC audio re-enabled
[12:03:16] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[12:03:16] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[12:03:16] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:03:16] [VIEWER] Reconnecting after background - querying agents
[12:03:16] [LIFECYCLE] Restarting camera broadcast after foreground
[12:03:16] [BROADCAST] Starting camera broadcast on session: iosILUIWU
[12:03:16] Initing with camera 0
[12:03:16] [START] AgentController.start() called with session: iosILUIWU
[12:03:16] [START] Cancelling any existing idle stop timer
[12:03:16] [BROADCAST] Lightbulb shown at lower left, frame=(370.0, 800.0, 50.0, 50.0)
[12:03:16] [UNSENT_RETRY] Checking for unsent messages...
[12:03:16] [PENDING_UPLOAD] Total pending upload messages: 0
[12:03:16] [UNSENT_RETRY] No unsent messages found
[12:03:16] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[12:03:16] [WS] Opening session at ws://crivello.dyndns.org:8081/
[12:03:16] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:03:16] [COMBINED_FETCH] Loaded 2 read receipts, 0 messages with reactions
[12:03:16] [FOREGROUND] Enriched 0/2 unsettled messages with readBy data
[12:03:16] [LIFECYCLE] scrollToBottomIfNeeded time=false, count=52>52=false, maxId=24541>24541=false, shouldScroll=false
[12:03:16] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=52
[12:03:16] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[12:03:16] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=6
[12:03:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[24541, 24540, 24539, 24538, 24537]
[12:03:16] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 52 messages
[12:03:16] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [RELOAD_TAB] 📊 Building chatRows from 52 messages
[12:03:16] [RELOAD_TAB] 📊 Built 53 chatRows, estHeight=0.0
[12:03:16] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=65
[12:03:16] [CLIENT_SIG] WebSocket opened
[12:03:16] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:03:16] [CLIENT_SIG] Connected! clientId=3TaPju5dTrcAosGf
[12:03:16] WS connected
[12:03:16] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[12:03:16] [SECURITY] Within timeout - cleared background flag
[12:03:16] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[12:03:16] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 52 msgs, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [PUSH] handlePollEventsNotification userInfo: [:]
[12:03:16] [PUSH] No message_id in userInfo
[12:03:16] [PUSH] No operation_type in userInfo
[12:03:16] [FAST_REFRESH] Evolution disabled - performing incremental sync
[12:03:16] [PUSH_TRACE] 📬 POLL: cache state: valid=true, count=52, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [PUSH_TRACE] 📬 POLL: memory state: count=52, first 10 IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [FAST_REFRESH] Already have 52 messages in memory
[12:03:16] [FAST_REFRESH] maxMemoryId=24541, maxLocalId=24541
[12:03:16] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[12:03:16] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=52
[12:03:16] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[12:03:16] [READBY_OPT] Fetching readBy for 2 unsettled messages (targeted)
[12:03:16] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[12:03:16] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24541, maxMemoryId=24541
[12:03:16] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24541
[12:03:16] [COMBINED_FETCH] Loaded 2 read receipts, 0 messages with reactions
[12:03:16] [FAST_REFRESH] Enriched 2/2 unsettled messages with readBy data
[12:03:16] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=52
[12:03:16] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[12:03:16] [INCREMENTAL_SYNC] ✅ No new messages
[12:03:16] [FAST_REFRESH] Incremental sync complete - 52 messages
[12:03:16] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=65
[12:03:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[24541, 24540, 24539, 24538, 24537]
[12:03:16] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 52 messages
[12:03:16] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:03:16] [RELOAD_TAB] 📊 Building chatRows from 52 messages
[12:03:16] [RELOAD_TAB] 📊 Built 53 chatRows, estHeight=0.0
[12:03:16] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=65
[12:03:19] [CAM] ✅ Connected to signaling server. Session: iosILUIWU, agentId: y0Wx3A8AJPULlPyh
[12:03:19] [CAM] helloOK → connected=true, myAgentId=y0Wx3A8AJPULlPyh
[12:03:19] [WEBRTC] Creating new WebRTC client
[12:03:19] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1
[12:03:19] [CODEC] Agent selected encoder: AV1 (best quality)
[12:03:19] [WS AUDIO] Initializing WebSocket audio sender...
[12:03:19] [WS AUDIO] ✅ WebSocket audio sender initialized
[12:03:19] [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:19] [ICE] Using 2 ICE server entries
[12:03:19] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:03:19] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:03:19] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:03:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[12:03:19] HELLO → sent (cached token, role=query)
[12:03:19] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30
[12:03:19] [CAPTURE] Creating audio track
[12:03:19] [CAPTURE] DataChannelAudioSender already exists
[12:03:19] [CAPTURE] Creating front video source and track
[12:03:19] [CAPTURE] Creating back video source and track
[12:03:19] localVideoTrackFront ok
[12:03:19] localVideoTrackBack ok
[12:03:19] Marking tracks as ready and firing callbacks
[12:03:19] [CAPTURE] ✅ Device supports MultiCam, starting dual camera session
[12:03:19] [CAPTURE] configureAndStartMultiCamSession() starting...
[12:03:19] Video capture stopped (audio still running)
[12:03:19] [CAPTURE] Created MultiCamSession and began configuration
[12:03:19] [CAPTURE] Looking for camera devices...
[12:03:19] [CAPTURE] ✅ Found front camera: Front Camera
[12:03:19] [CAPTURE] ✅ Found back camera: Back Camera
[12:03:19] Selected camera format: 1920x1080, pixel format: 875704438
[12:03:19] [CAPTURE] Enabled continuous autofocus for front camera
[12:03:19] Selected camera format: 1920x1080, pixel format: 875704438
[12:03:19] [CAPTURE] Enabled continuous autofocus for back camera
[12:03:19] Selected camera format: 640x480, pixel format: 875704438
[12:03:19] Selected camera format: 640x480, pixel format: 875704438
[12:03:19] [iOS AUDIO] ========== START CAPTURE ==========
[12:03:19] [iOS AUDIO] BEFORE - category: AVAudioSessionCategoryPlayAndRecord
[12:03:19] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeVideoChat
[12:03:19] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false
[12:03:19] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"]
[12:03:19] [iOS AUDIO] BEFORE - currentRoute.inputs: []
[12:03:19] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"]
[12:03:19] [iOS AUDIO] ✅ Audio session already .playAndRecord - keeping current config
[12:03:19] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord
[12:03:19] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat
[12:03:19] [iOS AUDIO] AFTER - currentRoute.inputs: []
[12:03:19] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"]
[12:03:19] [iOS AUDIO] AFTER - recordPermission: 1735552628
[12:03:19] [iOS AUDIO] Creating AVAudioEngine...
[12:03:19] [iOS AUDIO] Got inputNode: <AVAudioInputNode: 0x12be3b310>
[12:03:19] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1
[12:03:19] [iOS AUDIO] Installing tap on inputNode...
[12:03:19] [iOS AUDIO] ✅ Tap installed
[12:03:19] [iOS AUDIO] Starting engine...
[12:03:19] [iOS AUDIO] ✅ AVAudioEngine started
[12:03:19] [iOS AUDIO] engine.isRunning: true
[12:03:19] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false
[12:03:19] [iOS AUDIO] ========== END START CAPTURE ==========
[12:03:19] [CAPTURE] Configuration committed
[12:03:19] [CAPTURE] Starting MultiCam session...
[12:03:19] [iOS AUDIO] 📤 Sent packet #1: 9600 bytes (4800 samples, ~100ms)
[12:03:19] [iOS AUDIO] 📤 Sent packet #2: 9600 bytes (4800 samples, ~100ms)
[12:03:19] [CAPTURE] ✅ AVCaptureMultiCamSession started successfully (front + back)
[12:03:19] [CAPTURE] Session running: true
[12:03:19] [SIG] hello_ok received for query connection - ready to query agents
[12:03:19] [SIG] get_agents request sent for sessionId=ILUIWU
[12:03:19] [SIG] get_agents request sent for sessionId=iosILUIWU
[12:03:19] [CAM] Offer → session: iosILUIWU, viewerId: ci6KMK9PNGYPbcPN
[12:03:19] [WEBRTC] WebRTC client already exists, reusing it
[12:03:19] [CAM] Peer connection not ready, storing offer as pending
[12:03:19] [SERVER] Stopped reconnect polling
[12:03:19] [CAM] viewerJoin → session: iosILUIWU, viewerId: 2C8nR9Fr5zXof3pC
[12:03:19] [WEBRTC] WebRTC client already exists, reusing it
[12:03:19] [WEBRTC] WebRTC client already exists, reusing it
[12:03:19] ensureCaptureStarted - adding peer
[12:03:19] tracksReady = true
[12:03:19] Added front video track to peer connection for 2C8nR9Fr5zXof3pC
[12:03:19] Added back video track to peer connection for 2C8nR9Fr5zXof3pC
[12:03:19] Added audio track to peer connection for 2C8nR9Fr5zXof3pC
[12:03:19] localVideoTrackFront ok
[12:03:19] localVideoTrackBack ok
[12:03:19] tracks already marked as ready
[12:03:19] Peer added with tracks, notifying viewer ready
[12:03:19] notifyViewerReady called
[12:03:19] notifyViewerReady -> Will send
[12:03:19] [CAM] Offer → session: iosILUIWU, viewerId: 2C8nR9Fr5zXof3pC
[12:03:19] [WEBRTC] WebRTC client already exists, reusing it
[12:03:19] [CAM] Peer connection ready, processing offer immediately
[12:03:19] Creating answer for 2C8nR9Fr5zXof3pC. Found 3 transceivers:
[12:03:19] Transceiver 0: video, direction=sendRecv, hasTrack=true
[12:03:19] Transceiver 1: video, direction=sendRecv, hasTrack=true
[12:03:19] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1425631410 1 udp 2122260224 192.168.1.8 62401 typ host generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote host → applying
[12:03:19] SEND answer for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] SDP length: 4815
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:4141273741 1 udp 2122129152 100.76.19.55 60715 typ host generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] ICE gathering state: 1
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3369824602 1 udp 2121670400 192.0.0.6 51702 typ host generation 0 ufrag 8SH3 network-id 4 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] ICE state for vid=2C8nR9Fr5zXof3pC: 1 ( RTCIceConnectionState )
[12:03:19] Found s:candidate:3369824602 1 udp 2121604864 192.0.0.6 51164 typ host generation 0 ufrag 8SH3 network-id 7 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3369824602 1 udp 2121539328 192.0.0.6 53798 typ host generation 0 ufrag 8SH3 network-id 9 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:2766235945 1 udp 2122129151 192.168.1.177 59223 typ host generation 0 ufrag O23g network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3846481582 1 udp 2122063615 10.50.3.244 50144 typ host generation 0 ufrag O23g network-id 11 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [SIG] agents_list received: [["agentId": y0Wx3A8AJPULlPyh, "sessionId": iosILUIWU, "connected": 1]]
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3537636575 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 51625 typ host generation 0 ufrag 8SH3 network-id 14 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121998079 10.29.166.113 52020 typ host generation 0 ufrag O23g network-id 12 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121932543 10.29.166.113 62247 typ host generation 0 ufrag O23g network-id 4 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121867007 10.29.166.113 55150 typ host generation 0 ufrag O23g network-id 5 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121801471 10.29.166.113 55139 typ host generation 0 ufrag O23g network-id 6 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121735935 10.29.166.113 49801 typ host generation 0 ufrag O23g network-id 7 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3615590145 1 udp 2121670399 10.29.166.113 59873 typ host generation 0 ufrag O23g network-id 8 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:2046783723 1 udp 2122265343 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 61288 typ host generation 0 ufrag O23g network-id 3 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [ICE] agent local host
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:3327961816 1 udp 2122197247 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 55502 typ host generation 0 ufrag O23g network-id 2 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [SIG] agents_list received: [["connected": 1, "sessionId": iosILUIWU, "agentId": y0Wx3A8AJPULlPyh]]
[12:03:19] [AGENTS] Filtering out own broadcasts with agentIds: ["y0Wx3A8AJPULlPyh"]
[12:03:19] [AGENTS] Skipping own broadcast (by agentId): iosILUIWU:y0Wx3A8AJPULlPyh
[12:03:19] [AGENTS] Skipping own broadcast (by agentId): iosILUIWU:y0Wx3A8AJPULlPyh
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1508606910 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 57961 typ host generation 0 ufrag 8SH3 network-id 5 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 51867 typ host generation 0 ufrag 8SH3 network-id 6 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 52003 typ host generation 0 ufrag 8SH3 network-id 8 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55878 typ host generation 0 ufrag 8SH3 network-id 10 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1425631410 1 udp 2122260224 192.168.1.8 59818 typ host generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:4141273741 1 udp 2122129152 100.76.19.55 61281 typ host generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3369824602 1 udp 2121670400 192.0.0.6 52725 typ host generation 0 ufrag 8SH3 network-id 4 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3369824602 1 udp 2121604864 192.0.0.6 64353 typ host generation 0 ufrag 8SH3 network-id 7 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3369824602 1 udp 2121539328 192.0.0.6 50998 typ host generation 0 ufrag 8SH3 network-id 9 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3537636575 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 57429 typ host generation 0 ufrag 8SH3 network-id 14 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1508606910 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 55471 typ host generation 0 ufrag 8SH3 network-id 5 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 62189 typ host generation 0 ufrag 8SH3 network-id 6 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 61649 typ host generation 0 ufrag 8SH3 network-id 8 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1337163410 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 60816 typ host generation 0 ufrag 8SH3 network-id 10 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1904256856 1 udp 1686052607 212.252.118.51 24461 typ srflx raddr 192.168.1.8 rport 62401 generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote srflx → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:708217386 1 tcp 1518280447 192.168.1.8 54492 typ host tcptype passive generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:2283352085 1 tcp 1518149375 100.76.19.55 54493 typ host tcptype passive generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517690623 192.0.0.6 54494 typ host tcptype passive generation 0 ufrag 8SH3 network-id 4 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517625087 192.0.0.6 54495 typ host tcptype passive generation 0 ufrag 8SH3 network-id 7 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517559551 192.0.0.6 54496 typ host tcptype passive generation 0 ufrag 8SH3 network-id 9 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:2886987335 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54497 typ host tcptype passive generation 0 ufrag 8SH3 network-id 14 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:656695590 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54498 typ host tcptype passive generation 0 ufrag 8SH3 network-id 5 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54499 typ host tcptype passive generation 0 ufrag 8SH3 network-id 6 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54500 typ host tcptype passive generation 0 ufrag 8SH3 network-id 8 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54501 typ host tcptype passive generation 0 ufrag 8SH3 network-id 10 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:708217386 1 tcp 1518280447 192.168.1.8 54502 typ host tcptype passive generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:2283352085 1 tcp 1518149375 100.76.19.55 54503 typ host tcptype passive generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517690623 192.0.0.6 54504 typ host tcptype passive generation 0 ufrag 8SH3 network-id 4 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517625087 192.0.0.6 54505 typ host tcptype passive generation 0 ufrag 8SH3 network-id 7 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3054801858 1 tcp 1517559551 192.0.0.6 54506 typ host tcptype passive generation 0 ufrag 8SH3 network-id 9 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:2886987335 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54507 typ host tcptype passive generation 0 ufrag 8SH3 network-id 14 network-cost 900
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:656695590 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54508 typ host tcptype passive generation 0 ufrag 8SH3 network-id 5 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54509 typ host tcptype passive generation 0 ufrag 8SH3 network-id 6 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [ICE] agent local srflx
[12:03:19] [ICE] local → remote (2C8nR9Fr5zXof3pC) srflx candidate
[12:03:19] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:19] Candidate: ["candidate": "candidate:1697594979 1 udp 1685921535 84.227.75.34 59223 typ srflx raddr 192.168.1.177 rport 59223 generation 0 ufrag O23g network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54510 typ host tcptype passive generation 0 ufrag 8SH3 network-id 8 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:830249994 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54511 typ host tcptype passive generation 0 ufrag 8SH3 network-id 10 network-cost 50
[12:03:19] [ICE] remote host → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:1904256856 1 udp 1686052607 212.252.118.51 24538 typ srflx raddr 192.168.1.8 rport 59818 generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:19] [ICE] remote srflx → applying
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3056377892 1 udp 1685921535 31.142.27.147 47940 typ srflx raddr 100.76.19.55 rport 60715 generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote srflx → applying
[12:03:19] [iOS AUDIO] 📤 Sent packet #3: 9600 bytes (4800 samples, ~100ms)
[12:03:19] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:19] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:19] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:19] Found s:candidate:3056377892 1 udp 1685921535 31.142.27.147 47701 typ srflx raddr 100.76.19.55 rport 61281 generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:19] [ICE] remote srflx → applying
[12:03:20] [ICE] agent local srflx
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) srflx candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["candidate": "candidate:2780746759 1 udp 1685855999 194.230.158.30 49234 typ srflx raddr 10.50.3.244 rport 50144 generation 0 ufrag O23g network-id 11 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:20] [ICE] agent local relay → ip=192.168.1.31 port=60881
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) relay candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["candidate": "candidate:1516840189 1 udp 41755135 192.168.1.31 60881 typ relay raddr 84.227.75.34 rport 59223 generation 0 ufrag O23g network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:20] [ICE] agent local srflx
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) srflx candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["candidate": "candidate:2780746759 1 udp 1685855999 194.230.158.30 4979 typ srflx raddr 10.50.3.244 rport 50144 generation 0 ufrag O23g network-id 11 network-cost 900", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:03:20] [ICE] agent local relay → ip=192.168.1.31 port=65350
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) relay candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:2764304489 1 udp 24977663 192.168.1.31 65350 typ relay raddr 84.227.75.34 rport 51925 generation 0 ufrag O23g network-id 1 network-cost 10", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:1514913213 1 tcp 1518149375 192.168.1.177 51944 typ host tcptype passive generation 0 ufrag O23g network-id 1 network-cost 10", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:468611642 1 tcp 1518083839 10.50.3.244 51950 typ host tcptype passive generation 0 ufrag O23g network-id 11 network-cost 900", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1518018303 10.29.166.113 51956 typ host tcptype passive generation 0 ufrag O23g network-id 12 network-cost 900", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1517952767 10.29.166.113 51962 typ host tcptype passive generation 0 ufrag O23g network-id 4 network-cost 50", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1517887231 10.29.166.113 51968 typ host tcptype passive generation 0 ufrag O23g network-id 5 network-cost 50", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1517821695 10.29.166.113 51974 typ host tcptype passive generation 0 ufrag O23g network-id 6 network-cost 50", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1517756159 10.29.166.113 51980 typ host tcptype passive generation 0 ufrag O23g network-id 7 network-cost 50", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:690705301 1 tcp 1517690623 10.29.166.113 51986 typ host tcptype passive generation 0 ufrag O23g network-id 8 network-cost 50", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:2270536831 1 tcp 1518285567 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 51992 typ host tcptype passive generation 0 ufrag O23g network-id 3 network-cost 10", "sdpMLineIndex": 0]
[12:03:20] [ICE] agent local host
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) host candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:955678284 1 tcp 1518217471 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 51998 typ host tcptype passive generation 0 ufrag O23g network-id 2 network-cost 10", "sdpMLineIndex": 0]
[12:03:20] [iOS AUDIO] 📤 Sent packet #4: 9600 bytes (4800 samples, ~100ms)
[12:03:20] [ICE] agent local relay → ip=192.168.1.31 port=53861
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) relay candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1516840189 1 udp 41689599 192.168.1.31 53861 typ relay raddr 194.230.158.30 rport 49234 generation 0 ufrag O23g network-id 11 network-cost 900"]
[12:03:20] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:20] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:20] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:20] Found s:candidate:1350939527 1 udp 41755135 192.168.1.31 65060 typ relay raddr 31.142.27.147 rport 47940 generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:20] [ICE] remote relay → applying (ip=192.168.1.31 port=65060)
[12:03:20] [ICE] agent local relay → ip=192.168.1.31 port=54306
[12:03:20] [ICE] local → remote (2C8nR9Fr5zXof3pC) relay candidate
[12:03:20] SEND ice for viewerId=2C8nR9Fr5zXof3pC
[12:03:20] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:2764304489 1 udp 24912127 192.168.1.31 54306 typ relay raddr 194.230.158.30 rport 6365 generation 0 ufrag O23g network-id 11 network-cost 900"]
[12:03:20] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:20] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:20] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:20] Found s:candidate:776622367 1 udp 25108735 192.168.1.31 63298 typ relay raddr 212.252.118.51 rport 24107 generation 0 ufrag 8SH3 network-id 1 network-cost 10
[12:03:20] [ICE] remote relay → applying (ip=192.168.1.31 port=63298)
[12:03:20] [iOS AUDIO] 📤 Sent packet #5: 9600 bytes (4800 samples, ~100ms)
[12:03:20] [CAM] iceFromViewer viewerId=2C8nR9Fr5zXof3pC
[12:03:20] [CAM] Peer connection ready, processing ICE candidate immediately
[12:03:20] addRemoteCandidate for vid=2C8nR9Fr5zXof3pC
[12:03:20] Found s:candidate:776622367 1 udp 24977663 192.168.1.31 57655 typ relay raddr 31.142.27.147 rport 48043 generation 0 ufrag 8SH3 network-id 13 network-cost 900
[12:03:20] [ICE] remote relay → applying (ip=192.168.1.31 port=57655)
[12:03:20] [iOS AUDIO] 📤 Sent packet #6: 9600 bytes (4800 samples, ~100ms)
[12:03:20] [iOS AUDIO] 📤 Sent packet #7: 9600 bytes (4800 samples, ~100ms)
[12:03:20] ICE state for vid=2C8nR9Fr5zXof3pC: 2 ( RTCIceConnectionState )
[12:03:20] [STATS] starting poll for vid=2C8nR9Fr5zXof3pC
[12:03:20] [iOS AUDIO] 📤 Sent packet #8: 9600 bytes (4800 samples, ~100ms)
[12:03:20] [iOS AUDIO] 📤 Sent packet #9: 9600 bytes (4800 samples, ~100ms)
[12:03:20] [iOS AUDIO] 📤 Sent packet #10: 9600 bytes (4800 samples, ~100ms)
[12:03:24] [iOS AUDIO] ✅ Streaming: 50 packets sent
[12:03:26] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[12:03:26] [WS] Query connection error - cleaning up all agent connections and views
[12:03:26] [CLEANUP] ========================================
[12:03:26] [CLEANUP] Cleaning up all agent connections and views
[12:03:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[12:03:26] [CLEANUP] Stopped and removed 0 video connections
[12:03:26] [CLEANUP] Removed 0 video views
[12:03:26] [CLEANUP] Removed 0 feed scroll views
[12:03:26] [CLEANUP] Removed 0 status labels
[12:03:26] [CLEANUP] Reset agent query state
[12:03:26] [CLEANUP] Updated page indicator
[12:03:26] [CLEANUP] Rebuilt video layout
[12:03:26] [CLEANUP] ✅ All agent connections and views cleaned up
[12:03:26] [CLEANUP] ========================================
[12:03:26] [SERVER] Starting reconnect polling (5s interval)
[12:03:31] [SERVER] Polling - attempting to reconnect...
[12:03:33] [NETWORK] Status changed: connected
[12:03:36] [SERVER] Polling - attempting to reconnect...
[12:03:41] [SERVER] Polling - attempting to reconnect...
[12:03:46] [SERVER] Polling - attempting to reconnect...
[12:03:51] [SERVER] Polling - attempting to reconnect...
[12:03:55] [NETWORK] Status changed: connected
[12:03:56] [SERVER] Polling - attempting to reconnect...
[12:03:59] [NETWORK] Status changed: connected
[12:04:01] [SERVER] Polling - attempting to reconnect...
[12:04:06] [SERVER] Polling - attempting to reconnect...
[12:04:09] [iOS AUDIO] 📊 500 audio packets sent
[12:04:11] [SERVER] Polling - attempting to reconnect...
[12:04:16] [SERVER] Polling - attempting to reconnect...
[12:04:21] [SERVER] Polling - attempting to reconnect...
[12:04:26] [SERVER] Polling - attempting to reconnect...
[12:04:31] [SERVER] Polling - attempting to reconnect...
[12:04:36] [SERVER] Polling - attempting to reconnect...
[12:04:41] [SERVER] Polling - attempting to reconnect...
[12:04:46] [SERVER] Polling - attempting to reconnect...
[12:04:51] [SERVER] Polling - attempting to reconnect...
[12:04:56] [SERVER] Polling - attempting to reconnect...
[12:04:59] [iOS AUDIO] 📊 1000 audio packets sent
[12:05:01] [SERVER] Polling - attempting to reconnect...
[12:05:06] [SERVER] Polling - attempting to reconnect...
[12:05:11] [SERVER] Polling - attempting to reconnect...
[12:05:16] [SERVER] Polling - attempting to reconnect...
[12:05:21] [SERVER] Polling - attempting to reconnect...
[12:05:26] [SERVER] Polling - attempting to reconnect...
[12:05:31] [SERVER] Polling - attempting to reconnect...
[12:05:36] [SERVER] Polling - attempting to reconnect...
[12:05:41] [SERVER] Polling - attempting to reconnect...
[12:05:46] [SERVER] Polling - attempting to reconnect...
[12:05:49] [iOS AUDIO] 📊 1500 audio packets sent
[12:05:51] [SERVER] Polling - attempting to reconnect...
[12:05:56] [SERVER] Polling - attempting to reconnect...
[12:06:01] [SERVER] Polling - attempting to reconnect...
[12:06:06] [SERVER] Polling - attempting to reconnect...
[12:06:11] [SERVER] Polling - attempting to reconnect...
[12:06:16] [SERVER] Polling - attempting to reconnect...
[12:06:21] [SERVER] Polling - attempting to reconnect...
[12:06:26] [SERVER] Polling - attempting to reconnect...
[12:06:31] [SERVER] Polling - attempting to reconnect...
[12:06:36] [SERVER] Polling - attempting to reconnect...
[12:06:39] [iOS AUDIO] 📊 2000 audio packets sent
[12:06:40] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:41] [SERVER] Polling - attempting to reconnect...
[12:06:45] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:45] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:46] [SERVER] Polling - attempting to reconnect...
[12:06:47] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 11:06:47 +0000 - type: unknown, operation_type: 0, message_id: 24542, session_id: ILUIWU, state: 0
[12:06:47] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24542, 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-03-11 11:06:45";
"file_name" = "";
message = ILU;
"message_id" = 24542;
"message_type" = 0;
"prev_session_message_id" = 24541;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:06:47] [PUSH] App active - suppressing notification UI, posting internal event
[12:06:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:47 +0000
[12:06:47] [PUSH_TRACE] ⬇️ Processing embedded message_id=24542
[12:06:47] [PUSH_EMBED] 📩 Received embedded message: id=24542, type=0, sender=Esra
[12:06:47] [PUSH_TRACE] ⬇️ Message details: text="ILU...", datesent=2026-03-11 11:06:45
[12:06:47] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:47] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_EMBED] ✅ Saved message 24542 to local DB (sync)
[12:06:47] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24542
[12:06:47] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24542
[12:06:47] [PUSH_TRACE] 📦 Cache state: valid=true, count=52, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:06:47] [PUSH_EMBED] Inserted message 24542 into existing cache (now 53 messages)
[12:06:47] [PUSH_TRACE] 📦 ✅ Inserted message 24542, cache now has IDs: [24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:47] [PUSH_TRACE] 📦 EXITING cache update queue for message 24542
[12:06:47] [PUSH_EMBED] Fetching evolution data for message 24542 in background
[12:06:47] [PUSH_EMBED] ✅ Fully processed message 24542
[12:06:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24542
[12:06:47] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 52 msgs, IDs=[24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533, 24532]
[12:06:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24542, 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-03-11 11:06:45";
"file_name" = "";
message = ILU;
"message_id" = 24542;
"message_type" = 0;
"prev_session_message_id" = 24541;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:06:47] [PUSH_EMBED_VC] Processing embedded message: id=24542, type=0, sender=Esra, prevId=24541
[12:06:47] [PUSH_EMBED_VC] Inserted message 24542 into allMessagesWithReadBy (now 53 messages)
[12:06:47] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=53
[12:06:47] [PUSH_EMBED_VC] ✅ Previous message 24541 exists in memory
[12:06:47] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:47] [PUSH] Parsed message_id: 24542
[12:06:47] [PUSH] Parsed operation_type: 0
[12:06:47] [PUSH] Taking direct action: opType=0, messageId=24542
[12:06:47] [PUSH_EMBED_VC] Saved message 24542 to local DB
[12:06:47] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24542
[12:06:47] [PUSH] ⚡ Message 24542 already in memory - skipping duplicate notification entirely
[12:06:47] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:47] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:47] [PUSH_TRACE] 👁️ Received message id=24542, text="ILU..."
[12:06:47] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:47] [PUSH_UI] Message 24542 already in memory - skipping insert
[12:06:47] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:47] [PUSH] Silent push received
[12:06:47] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:47 +0000, appState=0, message_id=24542
[12:06:47] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=53, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:47 +0000
[12:06:47] [PUSH_TRACE] ⬇️ Processing embedded message_id=24542
[12:06:47] [PUSH_EMBED] 📩 Received embedded message: id=24542, type=0, sender=Esra
[12:06:47] [PUSH_TRACE] ⬇️ Message details: text="ILU...", datesent=2026-03-11 11:06:45
[12:06:47] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:47] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_EMBED] ✅ Saved message 24542 to local DB (sync)
[12:06:47] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24542
[12:06:47] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24542
[12:06:47] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24542
[12:06:47] [PUSH_TRACE] 📦 Cache state: valid=true, count=53, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:47] [PUSH_TRACE] 📦 ⚠️ Message 24542 already in cache, skipping insert
[12:06:47] [PUSH_TRACE] 📦 EXITING cache update queue for message 24542
[12:06:47] [PUSH_EMBED] Fetching evolution data for message 24542 in background
[12:06:47] [PUSH_EMBED] ✅ Fully processed message 24542
[12:06:47] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24542
[12:06:47] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=53, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533], handled=true
[12:06:47] [PUSH] Embedded message handled instantly from silent push
[12:06:47] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[12:06:47] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24542
[12:06:47] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:47] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:47] [PUSH_TRACE] 👁️ Received message id=24542, text="ILU..."
[12:06:47] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:47] [PUSH_UI] Message 24542 already in memory - skipping insert
[12:06:47] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:47] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 53 msgs, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24542, 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-03-11 11:06:45";
"file_name" = "";
message = ILU;
"message_id" = 24542;
"message_type" = 0;
"prev_session_message_id" = 24541;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:06:47] [PUSH_EMBED_VC] Message 24542 already in memory - skipping
[12:06:47] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:47] [PUSH] Parsed message_id: 24542
[12:06:47] [PUSH] Parsed operation_type: 0
[12:06:47] [PUSH] Taking direct action: opType=0, messageId=24542
[12:06:47] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24542
[12:06:47] [PUSH] ⚡ Message 24542 already in memory - skipping duplicate notification entirely
[12:06:47] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=65
[12:06:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[24542, 24541, 24540, 24539, 24538]
[12:06:47] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 53 messages
[12:06:47] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:47] [RELOAD_TAB] 📊 Building chatRows from 53 messages
[12:06:47] [RELOAD_TAB] 📊 Built 54 chatRows, estHeight=0.0
[12:06:47] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24541 → 24542
[12:06:47] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=67
[12:06:47] [SCROLL] 💓 alive, visible=41...53, rows=54, estHeight=0.0, heightCalls=123
[12:06:47] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:47] [CLIENT_SIG] Event received: type=0 messageId=24542
[12:06:47] [WS_EVENT] Received event: type=0, messageId=24542
[12:06:47] [WS_EVENT] 📨 New message notification (msgId=24542) - triggering incremental refresh, currentMsgCount=53
[12:06:47] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53
[12:06:47] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24542, maxMemoryId=24542
[12:06:47] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24542
[12:06:48] [PUSH_EMBED] Got evolution data for message 24542, saving to local DB
[12:06:48] [PUSH_EMBED] Saved evolution data for message 24542
[12:06:48] [PUSH_EMBED] Got evolution data for message 24542, saving to local DB
[12:06:48] [PUSH_EMBED] Saved evolution data for message 24542
[12:06:48] [INCREMENTAL_SYNC] ✅ No new messages
[12:06:48] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[12:06:48] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:49] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 11:06:49 +0000 - type: unknown, operation_type: 0, message_id: 24543, session_id: ILUIWU, state: 0
[12:06:49] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:48";
"file_name" = "";
message = "SOOO MUCH";
"message_id" = 24543;
"message_type" = 0;
"prev_session_message_id" = 24542;
"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"): 24543, AnyHashable("session_id"): ILUIWU]
[12:06:49] [PUSH] App active - suppressing notification UI, posting internal event
[12:06:49] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:49 +0000
[12:06:49] [PUSH_TRACE] ⬇️ Processing embedded message_id=24543
[12:06:49] [PUSH_EMBED] 📩 Received embedded message: id=24543, type=0, sender=Esra
[12:06:49] [PUSH_TRACE] ⬇️ Message details: text="SOOO MUCH...", datesent=2026-03-11 11:06:48
[12:06:49] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:49] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_EMBED] ✅ Saved message 24543 to local DB (sync)
[12:06:49] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24543
[12:06:49] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24543
[12:06:49] [PUSH_TRACE] 📦 Cache state: valid=true, count=53, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:49] [PUSH_EMBED] Inserted message 24543 into existing cache (now 54 messages)
[12:06:49] [PUSH_TRACE] 📦 ✅ Inserted message 24543, cache now has IDs: [24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:49] [PUSH_TRACE] 📦 EXITING cache update queue for message 24543
[12:06:49] [PUSH_EMBED] Fetching evolution data for message 24543 in background
[12:06:49] [PUSH_EMBED] ✅ Fully processed message 24543
[12:06:49] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24543
[12:06:49] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 53 msgs, IDs=[24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534, 24533]
[12:06:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:48";
"file_name" = "";
message = "SOOO MUCH";
"message_id" = 24543;
"message_type" = 0;
"prev_session_message_id" = 24542;
"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"): 24543, AnyHashable("session_id"): ILUIWU]
[12:06:49] [PUSH_EMBED_VC] Processing embedded message: id=24543, type=0, sender=Esra, prevId=24542
[12:06:49] [PUSH_EMBED_VC] Inserted message 24543 into allMessagesWithReadBy (now 54 messages)
[12:06:49] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=54
[12:06:49] [PUSH_EMBED_VC] ✅ Previous message 24542 exists in memory
[12:06:49] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:49] [PUSH] Parsed message_id: 24543
[12:06:49] [PUSH] Parsed operation_type: 0
[12:06:49] [PUSH] Taking direct action: opType=0, messageId=24543
[12:06:49] [PUSH_EMBED_VC] Saved message 24543 to local DB
[12:06:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24543
[12:06:49] [PUSH] ⚡ Message 24543 already in memory - skipping duplicate notification entirely
[12:06:49] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:49] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:49] [PUSH_TRACE] 👁️ Received message id=24543, text="SOOO MUCH..."
[12:06:49] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:49] [PUSH_UI] Message 24543 already in memory - skipping insert
[12:06:49] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:49] [PUSH] Silent push received
[12:06:49] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:49 +0000, appState=0, message_id=24543
[12:06:49] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:49] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:49 +0000
[12:06:49] [PUSH_TRACE] ⬇️ Processing embedded message_id=24543
[12:06:49] [PUSH_EMBED] 📩 Received embedded message: id=24543, type=0, sender=Esra
[12:06:49] [PUSH_TRACE] ⬇️ Message details: text="SOOO MUCH...", datesent=2026-03-11 11:06:48
[12:06:49] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:49] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_EMBED] ✅ Saved message 24543 to local DB (sync)
[12:06:49] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24543
[12:06:49] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24543
[12:06:49] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24543
[12:06:49] [PUSH_TRACE] 📦 Cache state: valid=true, count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:49] [PUSH_TRACE] 📦 ⚠️ Message 24543 already in cache, skipping insert
[12:06:49] [PUSH_TRACE] 📦 EXITING cache update queue for message 24543
[12:06:49] [PUSH_EMBED] Fetching evolution data for message 24543 in background
[12:06:49] [PUSH_EMBED] ✅ Fully processed message 24543
[12:06:49] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24543
[12:06:49] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534], handled=true
[12:06:49] [PUSH] Embedded message handled instantly from silent push
[12:06:49] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[12:06:49] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24543
[12:06:49] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:49] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:49] [PUSH_TRACE] 👁️ Received message id=24543, text="SOOO MUCH..."
[12:06:49] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:49] [PUSH_UI] Message 24543 already in memory - skipping insert
[12:06:49] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:49] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 54 msgs, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:48";
"file_name" = "";
message = "SOOO MUCH";
"message_id" = 24543;
"message_type" = 0;
"prev_session_message_id" = 24542;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 24543, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
[12:06:49] [PUSH_EMBED_VC] Message 24543 already in memory - skipping
[12:06:49] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:49] [PUSH] Parsed message_id: 24543
[12:06:49] [PUSH] Parsed operation_type: 0
[12:06:49] [PUSH] Taking direct action: opType=0, messageId=24543
[12:06:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24543
[12:06:49] [PUSH] ⚡ Message 24543 already in memory - skipping duplicate notification entirely
[12:06:49] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[12:06:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[24543, 24542, 24541, 24540, 24539]
[12:06:49] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 54 messages
[12:06:49] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:49] [RELOAD_TAB] 📊 Building chatRows from 54 messages
[12:06:49] [RELOAD_TAB] 📊 Built 55 chatRows, estHeight=0.0
[12:06:49] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24542 → 24543
[12:06:49] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=68
[12:06:49] [SCROLL] 💓 alive, visible=42...54, rows=55, estHeight=0.0, heightCalls=125
[12:06:50] [CLIENT_SIG] Event received: type=0 messageId=24543
[12:06:50] [WS_EVENT] Received event: type=0, messageId=24543
[12:06:50] [WS_EVENT] 📨 New message notification (msgId=24543) - triggering incremental refresh, currentMsgCount=54
[12:06:50] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[12:06:50] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24543, maxMemoryId=24543
[12:06:50] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24543
[12:06:50] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:50] [INCREMENTAL_SYNC] ✅ No new messages
[12:06:50] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54
[12:06:50] [PUSH_EMBED] Got evolution data for message 24543, saving to local DB
[12:06:50] [PUSH_EMBED] Saved evolution data for message 24543
[12:06:50] [PUSH_EMBED] Got evolution data for message 24543, saving to local DB
[12:06:50] [PUSH_EMBED] Saved evolution data for message 24543
[12:06:51] [PUSH] Silent push received
[12:06:51] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:51 +0000, appState=0, message_id=nil
[12:06:51] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:51 +0000
[12:06:51] [PUSH_EMBED] No embedded message_data in notification
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:06:51] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534], handled=false
[12:06:51] [PUSH] No embedded data, pre-loading messages from server
[12:06:51] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:06:51] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:06:51] [SERVER] Polling - attempting to reconnect...
[12:06:51] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-03-11 11:06:51 +0000 - type: unknown, operation_type: 0, message_id: 24544, session_id: ILUIWU, state: 0
[12:06:51] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:50";
"file_name" = "";
message = "A LOT!";
"message_id" = 24544;
"message_type" = 0;
"prev_session_message_id" = 24543;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24544, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
[12:06:51] [PUSH] App active - suppressing notification UI, posting internal event
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:51 +0000
[12:06:51] [PUSH_TRACE] ⬇️ Processing embedded message_id=24544
[12:06:51] [PUSH_EMBED] 📩 Received embedded message: id=24544, type=0, sender=Esra
[12:06:51] [PUSH_TRACE] ⬇️ Message details: text="A LOT!...", datesent=2026-03-11 11:06:50
[12:06:51] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:51] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_EMBED] ✅ Saved message 24544 to local DB (sync)
[12:06:51] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24544
[12:06:51] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24544
[12:06:51] [PUSH_TRACE] 📦 Cache state: valid=true, count=54, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:51] [PUSH_EMBED] Inserted message 24544 into existing cache (now 55 messages)
[12:06:51] [PUSH_TRACE] 📦 ✅ Inserted message 24544, cache now has IDs: [24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:51] [PUSH_TRACE] 📦 EXITING cache update queue for message 24544
[12:06:51] [PUSH_EMBED] Fetching evolution data for message 24544 in background
[12:06:51] [PUSH_EMBED] ✅ Fully processed message 24544
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24544
[12:06:51] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 54 msgs, IDs=[24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535, 24534]
[12:06:51] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:50";
"file_name" = "";
message = "A LOT!";
"message_id" = 24544;
"message_type" = 0;
"prev_session_message_id" = 24543;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 24544, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
[12:06:51] [PUSH_EMBED_VC] Processing embedded message: id=24544, type=0, sender=Esra, prevId=24543
[12:06:51] [PUSH_EMBED_VC] Inserted message 24544 into allMessagesWithReadBy (now 55 messages)
[12:06:51] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=55
[12:06:51] [PUSH_EMBED_VC] ✅ Previous message 24543 exists in memory
[12:06:51] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:51] [PUSH] Parsed message_id: 24544
[12:06:51] [PUSH] Parsed operation_type: 0
[12:06:51] [PUSH] Taking direct action: opType=0, messageId=24544
[12:06:51] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24544
[12:06:51] [PUSH_EMBED_VC] Saved message 24544 to local DB
[12:06:51] [PUSH] ⚡ Message 24544 already in memory - skipping duplicate notification entirely
[12:06:51] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:51] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:51] [PUSH_TRACE] 👁️ Received message id=24544, text="A LOT!..."
[12:06:51] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:51] [PUSH_UI] Message 24544 already in memory - skipping insert
[12:06:51] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:51] [PUSH] Silent push received
[12:06:51] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:51 +0000, appState=0, message_id=24544
[12:06:51] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=55, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:51 +0000
[12:06:51] [PUSH_TRACE] ⬇️ Processing embedded message_id=24544
[12:06:51] [PUSH_EMBED] 📩 Received embedded message: id=24544, type=0, sender=Esra
[12:06:51] [PUSH_TRACE] ⬇️ Message details: text="A LOT!...", datesent=2026-03-11 11:06:50
[12:06:51] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:51] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_EMBED] ✅ Saved message 24544 to local DB (sync)
[12:06:51] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24544
[12:06:51] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24544
[12:06:51] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24544
[12:06:51] [PUSH_TRACE] 📦 Cache state: valid=true, count=55, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:51] [PUSH_TRACE] 📦 ⚠️ Message 24544 already in cache, skipping insert
[12:06:51] [PUSH_TRACE] 📦 EXITING cache update queue for message 24544
[12:06:51] [PUSH_EMBED] Fetching evolution data for message 24544 in background
[12:06:51] [PUSH_EMBED] ✅ Fully processed message 24544
[12:06:51] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24544
[12:06:51] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=55, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535], handled=true
[12:06:51] [PUSH] Embedded message handled instantly from silent push
[12:06:51] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[12:06:51] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24544
[12:06:51] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:06:51] [PUSH_TRACE] 👁️ handlePushMessageReceived START
[12:06:51] [PUSH_TRACE] 👁️ Received message id=24544, text="A LOT!..."
[12:06:51] [PUSH_UI_BLACKOUT] blackoutView=false, currentTab=0, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:06:51] [PUSH_UI] Message 24544 already in memory - skipping insert
[12:06:51] [PUSH_TRACE] 👁️ handlePushMessageReceived END - already exists
[12:06:51] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 55 msgs, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:51] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 24544, AnyHashable("message_data"): {
datesent = "2026-03-11 11:06:50";
"file_name" = "";
message = "A LOT!";
"message_id" = 24544;
"message_type" = 0;
"prev_session_message_id" = 24543;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
[12:06:51] [PUSH_EMBED_VC] Message 24544 already in memory - skipping
[12:06:51] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:06:51] [PUSH] Parsed message_id: 24544
[12:06:51] [PUSH] Parsed operation_type: 0
[12:06:51] [PUSH] Taking direct action: opType=0, messageId=24544
[12:06:51] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=24544
[12:06:51] [PUSH] ⚡ Message 24544 already in memory - skipping duplicate notification entirely
[12:06:51] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[12:06:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[24544, 24543, 24542, 24541, 24540]
[12:06:51] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 55 messages
[12:06:51] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:51] [RELOAD_TAB] 📊 Building chatRows from 55 messages
[12:06:51] [RELOAD_TAB] 📊 Built 56 chatRows, estHeight=0.0
[12:06:51] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24543 → 24544
[12:06:51] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=69
[12:06:51] [SCROLL] 💓 alive, visible=43...55, rows=56, estHeight=0.0, heightCalls=127
[12:06:52] [CLIENT_SIG] Event received: type=0 messageId=24544
[12:06:52] [WS_EVENT] Received event: type=0, messageId=24544
[12:06:52] [WS_EVENT] 📨 New message notification (msgId=24544) - triggering incremental refresh, currentMsgCount=55
[12:06:52] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[12:06:52] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24544, maxMemoryId=24544
[12:06:52] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24544
[12:06:52] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:06:52] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:06:52] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:52] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=55, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:52] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [24494, 24493, 24492, 24491, 24490]
[12:06:52] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=5, IDs=[24494, 24493, 24492, 24491, 24490]
[12:06:52] [PUSH_TRACE] 🔀 mergeMessages: merged.count=55, first 10 IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:52] [PUSH_PRELOAD] ⚡ Pre-cached 55 messages for instant display (preserved 5 from push)
[12:06:52] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:06:52] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 55 msgs, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:52] [PUSH_EMBED] Got evolution data for message 24544, saving to local DB
[12:06:52] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 24542, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[12:06:52] [PUSH] Parsed message_id: 24542
[12:06:52] [PUSH] Parsed operation_type: 3
[12:06:52] [PUSH] Taking direct action: opType=3, messageId=24542
[12:06:52] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24542
[12:06:52] [PUSH_EMBED] Saved evolution data for message 24544
[12:06:52] [PUSH_EMBED] Got evolution data for message 24544, saving to local DB
[12:06:52] [PUSH_EMBED] Saved evolution data for message 24544
[12:06:52] [INCREMENTAL_SYNC] ✅ No new messages
[12:06:52] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[12:06:52] [CLIENT_SIG] Event received: type=3 messageId=24542
[12:06:52] [WS_EVENT] Received event: type=3, messageId=24542
[12:06:53] [CRASH] No crash detected
[12:06:53] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[12:06:53] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[12:06:53] [GIPHY] SDK not available - using REST API fallback
[12:06:53] [BACKGROUND] Background fetch enabled
[12:06:53] [SECURITY] Initial launch - within timeout (222.94920897483826s < 300.0s)
[12:06:53] [AUTH] Starting PIN authentication
[12:06:53] [PUSH] Silent push received
[12:06:53] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:53 +0000, appState=2, message_id=nil
[12:06:53] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=0, IDs=[]
[12:06:53] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:53 +0000
[12:06:53] [PUSH_EMBED] No embedded message_data in notification
[12:06:53] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:06:53] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=0, IDs=[], handled=false
[12:06:53] [PUSH] No embedded data, pre-loading messages from server
[12:06:53] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:06:53] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[12:06:53] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[12:06:53] [CLEANUP] No old timer messages to delete
[12:06:53] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[12:06:53] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=24544)...
[12:06:53] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[12:06:53] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[12:06:53] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[12:06:53] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:06:53] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:06:53] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:53] [PUSH_TRACE] 🔀 mergeMessages: Different session (nil vs ILUIWU), replacing cache
[12:06:53] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:06:53] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:06:53] [PRELOAD] No messages or parse error
[12:06:53] [USER] ✅ User registered successfully
[12:06:53] [PUSH] User registration after token update: success
[12:06:53] [USER] ✅ User registered successfully
[12:06:53] [PUSH] User registration after token update: success
[12:06:54] [PUSH] Silent push received
[12:06:54] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:54 +0000, appState=2, message_id=nil
[12:06:54] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=50, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:54] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:54 +0000
[12:06:54] [PUSH_EMBED] No embedded message_data in notification
[12:06:54] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:06:54] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=50, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535], handled=false
[12:06:54] [PUSH] No embedded data, pre-loading messages from server
[12:06:54] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:06:54] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:06:54] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:06:54] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:54] [PUSH_TRACE] 🔀 mergeMessages: existingMessages.count=50, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:54] [PUSH_TRACE] 🔀 mergeMessages: preservedMessages.count=0, IDs=[]
[12:06:54] [PUSH_TRACE] 🔀 mergeMessages: merged.count=50, first 10 IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:54] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:06:54] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:06:57] [PUSH] Silent push received
[12:06:57] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:06:57 +0000, appState=2, message_id=24545
[12:06:57] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=50, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:57] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:06:57 +0000
[12:06:57] [PUSH_TRACE] ⬇️ Processing embedded message_id=24545
[12:06:57] [PUSH_EMBED] 📩 Received embedded message: id=24545, type=0, sender=Esra
[12:06:57] [PUSH_TRACE] ⬇️ Message details: text="And I need you!...", datesent=2026-03-11 11:06:56
[12:06:57] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:06:57] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24545
[12:06:57] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24545
[12:06:57] [PUSH_EMBED] ✅ Saved message 24545 to local DB (sync)
[12:06:57] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24545
[12:06:57] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24545
[12:06:57] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24545
[12:06:57] [PUSH_TRACE] 📦 Cache state: valid=true, count=50, IDs=[24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536, 24535]
[12:06:57] [PUSH_EMBED] Inserted message 24545 into existing cache (now 51 messages)
[12:06:57] [PUSH_TRACE] 📦 ✅ Inserted message 24545, cache now has IDs: [24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:06:57] [PUSH_TRACE] 📦 EXITING cache update queue for message 24545
[12:06:57] [PUSH_EMBED] Fetching evolution data for message 24545 in background
[12:06:57] [PUSH_EMBED] ✅ Fully processed message 24545
[12:06:57] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24545
[12:06:57] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=51, IDs=[24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536], handled=true
[12:06:57] [PUSH] Embedded message handled instantly from silent push
[12:06:57] [PUSH_TRACE] 🔔 SILENT: About to post pollEventsNow notification
[12:06:57] [PUSH_TRACE] 🔔 SILENT: Completed with .newData for message_id=24545
[12:06:58] [PUSH_EMBED] Got evolution data for message 24545, saving to local DB
[12:06:58] [PUSH_EMBED] Saved evolution data for message 24545
[12:07:03] [PUSH] Notification tapped - session_id: ILUIWU
[12:07:03] [PUSH] Max message_id before tap: 24545
[12:07:03] [PUSH] Stored pending session: ILUIWU
[12:07:03] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:07:03 +0000
[12:07:03] [PUSH_TRACE] ⬇️ Processing embedded message_id=24545
[12:07:03] [PUSH_EMBED] 📩 Received embedded message: id=24545, type=0, sender=Esra
[12:07:03] [PUSH_TRACE] ⬇️ Message details: text="And I need you!...", datesent=2026-03-11 11:06:56
[12:07:03] [PUSH_TRACE] ⬇️ Session check: msgSession=ILUIWU, currentSession=ILUIWU
[12:07:03] [PUSH_TRACE] ⬇️ About to enter pushMessageQueue.sync for message 24545
[12:07:03] [PUSH_TRACE] ⬇️ INSIDE pushMessageQueue.sync for message 24545
[12:07:03] [PUSH_EMBED] ✅ Saved message 24545 to local DB (sync)
[12:07:03] [PUSH_TRACE] ⬇️ EXITING pushMessageQueue.sync for message 24545
[12:07:03] [PUSH_TRACE] 📦 About to update PreloadedDataCache for message 24545
[12:07:03] [PUSH_TRACE] 📦 INSIDE cache update queue for message 24545
[12:07:03] [PUSH_TRACE] 📦 Cache state: valid=true, count=51, IDs=[24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:07:03] [PUSH_TRACE] 📦 ⚠️ Message 24545 already in cache, skipping insert
[12:07:03] [PUSH_TRACE] 📦 EXITING cache update queue for message 24545
[12:07:03] [PUSH_EMBED] Fetching evolution data for message 24545 in background
[12:07:03] [PUSH_EMBED] ✅ Fully processed message 24545
[12:07:03] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - SUCCESS for message 24545
[12:07:03] [PUSH] Embedded message handled instantly on tap
[12:07:03] [PUSH] Fetching server messages since_id=24545 to catch coalesced notifications on tap
[12:07:03] [PUSH_PRELOAD] Fetching up to 50 messages since_id=24545 to catch coalesced notifications
[12:07:03] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[12:07:03] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:07:03] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:07:03] [PUSH_EMBED] Got evolution data for message 24545, saving to local DB
[12:07:03] [PUSH_EMBED] Saved evolution data for message 24545
[12:07:03] [PUSH_PRELOAD] No messages or parse error
[12:07:03] [PUSH] Server fetch on tap completed (success=false)
[12:07:03] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[12:07:03] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[12:07:03] [CLIENT_SIG] WebSocket opened
[12:07:03] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:07:03] [CLIENT_SIG] Connected! clientId=DCV8Qq3oG2KSc1tt
[12:07:03] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:07:03] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:07:05] [PIN_AUTH] Correct PIN
[12:07:05] [SECURITY] Restored real session: ILUIWU
[12:07:05] [SECURITY] Restored real session: ILUIWU
[12:07:05] [SECURITY] Saved real session: ILUIWU
[12:07:05] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[12:07:05] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[12:07:05] [UPLOAD_QUEUE] ✅ Database integrity check passed
[12:07:05] [UPLOAD_QUEUE] Active background session tasks: 0 (standard uploads now use foreground session, so this should be 0 after the fix)
[12:07:05] Documents Directory: /var/mobile/Containers/Data/Application/4EDC3F86-886C-48D6-84F7-D458DE7BA650/Documents
[12:07:05] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[12:07:05] [THEME] Applying current theme
[12:07:05] [CHAT] Applied day theme (mode: day)
[12:07:05] [SECURITY] Saved real session: ILUIWU
[12:07:05] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[12:07:05] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:07:05] [NETWORK] Network monitor started
[12:07:05] [NETWORK] Status changed: connected
[12:07:05] Did transition
[12:07:05] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[12:07:05] [VIEWER] Screen lock enabled - normal idle behavior
[12:07:05] [QUERY] 🔍 Creating query connection for iOS broadcast: iosILUIWU
[12:07:05] [VCC] ========== VideoConnectionClass INIT ==========
[12:07:05] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[12:07:05] [DATA AUDIO] ========== setupWebRTC() START ==========
[12:07:05] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[12:07:05] [DATA AUDIO] Creating encoder/decoder factories...
[12:07:05] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[12:07:05] [CODEC] Viewer selected encoder: AV1 (best quality)
[12:07:05] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[12:07:05] [DATA AUDIO] ✅ Factory created
[12:07:05] [DATA AUDIO] RTCAudioSession locked
[12:07:05] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[12:07:05] [DATA AUDIO] RTCAudioSession unlocked
[12:07:05] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[12:07:05] [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:07:05] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[12:07:05] [WS] Opening session at ws://crivello.dyndns.org:8081/
[12:07:05] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[12:07:05] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[12:07:05] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[12:07:05] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[12:07:05] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[12:07:05] Did transition
[12:07:05] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[12:07:05] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[12:07:05] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[12:07:05] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[12:07:05] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[12:07:05] [READBY_OPT] Fetching readBy for 2 unsettled messages (targeted)
[12:07:05] [GALLERY_DB] Raw datesent for msg 24496: '2026-03-11 10:16:24'
[12:07:05] [GALLERY_DB] Raw datesent for msg 24486: '2026-03-11 10:04:07'
[12:07:05] [GALLERY_DB] Raw datesent for msg 24485: '2026-03-11 10:03:19'
[12:07:05] [USER] ✅ User registered successfully
[12:07:05] [USER] User registration successful
[12:07:06] [GALLERY_DB] ✅ Loaded 825 media messages
[12:07:06] [MIGRATION] No messages need sender_name backfill
[12:07:06] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[12:07:06] [PUSH_TRACE] 📡 INCREMENTAL: maxLocalId (from DB)=24545, maxMemoryId=24545
[12:07:06] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 24545
[12:07:06] [INCREMENTAL_SYNC] ✅ No new messages
[12:07:06] [GALLERY] Filtered 825 -> 782 (only with local thumbnails)
[12:07:06] [GALLERY] First 5 after sort (newest first):
[12:07:06] [GALLERY] 0: id=24496, date=2026-03-11 10:16:24, file=076d11e6bd354447.jpg
[12:07:06] [GALLERY] 1: id=24486, date=2026-03-11 10:04:07, file=5ecf01e7004d4766.mov
[12:07:06] [GALLERY] 2: id=24485, date=2026-03-11 10:03:19, file=45251fec95b850f2.jpg
[12:07:06] [GALLERY] 3: id=24484, date=2026-03-11 10:02:35, file=cc840d6fb7db7de0.jpg
[12:07:06] [GALLERY] 4: id=24436, date=2026-03-11 08:58:11, file=b1346ffb3de87a79.mov
[12:07:06] [SCROLL] 💓 alive, visible=0...0, rows=0, estHeight=0.0, heightCalls=0
[12:07:06] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[12:07:06] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=0
[12:07:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[24545, 24544, 24543, 24542, 24541]
[12:07:06] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 50 messages
[12:07:06] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:07:06] [RELOAD_TAB] 📊 Building chatRows from 50 messages
[12:07:06] [RELOAD_TAB] 📊 Built 51 chatRows, estHeight=0.0
[12:07:06] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[12:07:06] [CELL_UPLOAD] configure: msgId=24496, file=076d11e6bd354447.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[12:07:06] [CELL_UPLOAD] → not my message, setting complete
[12:07:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=076d11e6bd354447.jpg, overlayExists=true
[12:07:06] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=58
[12:07:06] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 24544 → 24545
[12:07:06] [SERVER] Starting reconnect polling (5s interval)
[12:07:06] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[12:07:06] [ICONS] Offset applied: -14.6
[12:07:06] [ICONS] New left margin: 11.2, New right margin: 11.3
[12:07:06] [COMBINED_FETCH] Loaded 2 read receipts, 0 messages with reactions
[12:07:06] [READBY_ENRICH] Enriched 2/2 unsettled messages with readBy data
[12:07:06] [ICONS] Chat center: (31.2, 87.0)
[12:07:06] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[12:07:06] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[12:07:06] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[12:07:06] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[12:07:06] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[12:07:06] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[12:07:06] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[12:07:06] [ICONS] Screen width: 440.0
[12:07:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[12:07:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[12:07:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[12:07:06] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[12:07:06] [RELOAD_TAB] 📢 reloadMessagesForCurrentTab (debounced) called, msgs=50
[12:07:06] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[12:07:06] [UNSENT_RETRY] Checking for unsent messages...
[12:07:06] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[12:07:06] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[12:07:06] [UPLOAD_RECOVERY] Session: ILUIWU
[12:07:06] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[12:07:06] [UPLOAD_RECOVERY] Checking recent media messages on server...
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24427, file=0905b4b453eac6ab.mov, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24411, file=fa708c6c98048ba6.mov, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24404, file=22c2a6ef81cfd6e2.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24401, file=1934a5bb32cfa819.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24355, file=82b97926ca365db4.mp4, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24354, file=4a57b92272df0911.mp4, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24353, file=d6f3d52606d47e1a.mov, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24352, file=8b7fbeb6f5915db8.mov, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24343, file=1438d87832f7f49e.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24342, file=8c6ba79a0cccbba1.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24325, file=369d805a5bec6849.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24318, file=0715cca0f809130b.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24270, file=6e21a9721330998a.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24259, file=2c2f9eb26955cef7.mov, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=24258, file=4ce5c44ee1bd2fe6.jpg, upload_status=complete
[12:07:06] [UPLOAD_RECOVERY] Verifying 15 media files exist on server...
[12:07:06] [PENDING_UPLOAD] Total pending upload messages: 0
[12:07:06] [UNSENT_RETRY] No unsent messages found
[12:07:06] new_session POST ok: token len=157
[12:07:06] HELLO → sent (fetched token, role=query)
[12:07:06] [SIG] hello_ok received for query connection - ready to query agents
[12:07:06] [SIG] get_agents request sent for sessionId=ILUIWU
[12:07:06] [SIG] get_agents request sent for sessionId=iosILUIWU
[12:07:06] [SERVER] Stopped reconnect polling
[12:07:06] [SIG] agents_list received: []
[12:07:06] [SIG] agents_list received: []
[12:07:06] [UPLOAD_RECOVERY] ✅ All media files verified on server
[12:07:06] [RELOAD_TAB] ⚡ performReload ENTER, skip=false, estHeight=0.0, heightCalls=70
[12:07:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[24545, 24544, 24543, 24542, 24541]
[12:07:06] [PUSH_TRACE] 📺 RELOAD: allMessagesWithReadBy has 50 messages
[12:07:06] [PUSH_TRACE] 📺 RELOAD: First 10 IDs: [24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:07:06] [RELOAD_TAB] 📊 Building chatRows from 50 messages
[12:07:06] [RELOAD_TAB] 📊 Built 51 chatRows, estHeight=0.0
[12:07:06] [RELOAD_TAB] ⚡ performReload LAYOUT DONE, heightCalls=63
[12:07:07] [BROADCAST] Starting camera broadcast on session: iosILUIWU
[12:07:07] Initing with camera 0
[12:07:07] [START] AgentController.start() called with session: iosILUIWU
[12:07:07] [START] Cancelling any existing idle stop timer
[12:07:07] [BROADCAST] Lightbulb shown at lower left, frame=(370.0, 800.0, 50.0, 50.0)
[12:07:07] WS connected
[12:07:07] [PUSH] Silent push received
[12:07:07] [PUSH_TRACE] 🔔 SILENT PUSH at 2026-03-11 11:07:07 +0000, appState=0, message_id=nil
[12:07:07] [PUSH_TRACE] 🔔 SILENT: cache BEFORE: count=0, IDs=[]
[12:07:07] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData START at 2026-03-11 11:07:07 +0000
[12:07:07] [PUSH_EMBED] No embedded message_data in notification
[12:07:07] [PUSH_TRACE] ⬇️ handleEmbeddedMessageData END - no message_data
[12:07:07] [PUSH_TRACE] 🔔 SILENT: cache AFTER: count=0, IDs=[], handled=false
[12:07:07] [PUSH] No embedded data, pre-loading messages from server
[12:07:07] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:07:07] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:07:07] [PUSH_TRACE] 🔀 mergeMessages called: newMessages.count=50, sessionId=ILUIWU
[12:07:07] [PUSH_TRACE] 🔀 mergeMessages: newMessages IDs=[24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:07:07] [PUSH_TRACE] 🔀 mergeMessages: Different session (nil vs ILUIWU), replacing cache
[12:07:07] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:07:07] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:07:07] [PUSH_TRACE] 📬 handlePollEventsNotification START: memory has 50 msgs, IDs=[24545, 24544, 24543, 24542, 24541, 24540, 24539, 24538, 24537, 24536]
[12:07:07] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 24545, AnyHashable("session_id"): ILUIWU]
[12:07:07] [PUSH] Parsed message_id: 24545
[12:07:07] [PUSH] Parsed operation_type: 3
[12:07:07] [PUSH] Taking direct action: opType=3, messageId=24545
[12:07:07] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=24545
[12:07:09] [SIG] agent_connected received for sessionId=iosILUIWU agentId=uaG9MBH_VsD2ua6E
[12:07:09] [CAM] ✅ Connected to signaling server. Session: iosILUIWU, agentId: uaG9MBH_VsD2ua6E
[12:07:09] [CAM] helloOK → connected=true, myAgentId=uaG9MBH_VsD2ua6E
[12:07:09] [WEBRTC] Creating new WebRTC client
[12:07:09] [CODEC] Available video codecs: H264, H264, VP8, VP9, AV1
[12:07:09] [CODEC] Agent selected encoder: AV1 (best quality)
[12:07:09] [WS AUDIO] Initializing WebSocket audio sender...
[12:07:09] [WS AUDIO] ✅ WebSocket audio sender initialized
[12:07:09] [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:07:09] [ICE] Using 2 ICE server entries
[12:07:09] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:uaG9MBH_VsD2ua6E
[12:07:09] [SIG] agents_list received: [["agentId": uaG9MBH_VsD2ua6E, "sessionId": iosILUIWU, "connected": 1]]
[12:07:09] [CLIENT_SIG] Event received: type=3 messageId=24545
[12:07:09] [WS_EVENT] Received event: type=3, messageId=24545
[12:07:09] [WS_EVENT] Read receipt for message 24545 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:07:09] [SIG] agent_connected received for sessionId=iosILUIWU agentId=uaG9MBH_VsD2ua6E
[12:07:09] [AGENTS] Skipping own broadcast connection (by agentId): iosILUIWU:uaG9MBH_VsD2ua6E
[12:07:09] [SIG] agents_list received: [["connected": 1, "agentId": uaG9MBH_VsD2ua6E, "sessionId": iosILUIWU]]
[12:07:09] [CAPTURE] startCapture() called with width:1920, height:1080, fps:30
[12:07:09] [CAPTURE] Creating audio track
[12:07:09] [CAPTURE] DataChannelAudioSender already exists
[12:07:09] [CAPTURE] Creating front video source and track
[12:07:09] [CAPTURE] Creating back video source and track
[12:07:09] localVideoTrackFront ok
[12:07:09] localVideoTrackBack ok
[12:07:09] Marking tracks as ready and firing callbacks
[12:07:09] [CAPTURE] ✅ Device supports MultiCam, starting dual camera session
[12:07:09] [CAPTURE] configureAndStartMultiCamSession() starting...
[12:07:09] Video capture stopped (audio still running)
[12:07:09] [CAPTURE] Created MultiCamSession and began configuration
[12:07:09] [CAPTURE] Looking for camera devices...
[12:07:09] [CAPTURE] ✅ Found front camera: Front Camera
[12:07:09] [CAPTURE] ✅ Found back camera: Back Camera
[12:07:09] Selected camera format: 1920x1080, pixel format: 875704438
[12:07:09] [CAPTURE] Enabled continuous autofocus for front camera
[12:07:09] Selected camera format: 1920x1080, pixel format: 875704438
[12:07:09] [CAPTURE] Enabled continuous autofocus for back camera
[12:07:09] Selected camera format: 640x480, pixel format: 875704438
[12:07:09] Selected camera format: 640x480, pixel format: 875704438
[12:07:09] [iOS AUDIO] ========== START CAPTURE ==========
[12:07:09] [iOS AUDIO] BEFORE - category: AVAudioSessionCategorySoloAmbient
[12:07:09] [iOS AUDIO] BEFORE - mode: AVAudioSessionModeDefault
[12:07:09] [iOS AUDIO] BEFORE - isOtherAudioPlaying: false
[12:07:09] [iOS AUDIO] BEFORE - availableInputs: ["iPhone Microphone"]
[12:07:09] [iOS AUDIO] BEFORE - currentRoute.inputs: []
[12:07:09] [iOS AUDIO] BEFORE - currentRoute.outputs: ["Speaker"]
[12:07:09] [iOS AUDIO] Setting category to .playAndRecord...
[12:07:09] [iOS AUDIO] Activating audio session...
[12:07:09] [iOS AUDIO] ✅ Audio session configured
[12:07:09] [iOS AUDIO] AFTER - category: AVAudioSessionCategoryPlayAndRecord
[12:07:09] [iOS AUDIO] AFTER - mode: AVAudioSessionModeVideoChat
[12:07:09] [iOS AUDIO] AFTER - currentRoute.inputs: ["iPhone Microphone"]
[12:07:09] [iOS AUDIO] AFTER - currentRoute.outputs: ["Speaker"]
[12:07:09] [iOS AUDIO] AFTER - recordPermission: 1735552628
[12:07:09] [iOS AUDIO] Creating AVAudioEngine...
[12:07:09] [iOS AUDIO] Got inputNode: <AVAudioInputNode: 0x122ec12d0>
[12:07:09] [iOS AUDIO] Input format: 48000.0Hz, 1 channels, 1
[12:07:09] [iOS AUDIO] Installing tap on inputNode...
[12:07:09] [iOS AUDIO] ✅ Tap installed
[12:07:09] [iOS AUDIO] Starting engine...
[12:07:09] [iOS AUDIO] ✅ AVAudioEngine started
[12:07:09] [iOS AUDIO] engine.isRunning: true
[12:07:09] [iOS AUDIO] inputNode.isVoiceProcessingEnabled: false
[12:07:09] [iOS AUDIO] ========== END START CAPTURE ==========
[12:07:09] [CAPTURE] Configuration committed
[12:07:09] [CAPTURE] Starting MultiCam session...
[12:07:09] [iOS AUDIO] 📤 Sent packet #1: 9600 bytes (4800 samples, ~100ms)
[12:07:09] [CAPTURE] ✅ AVCaptureMultiCamSession started successfully (front + back)
[12:07:09] [CAPTURE] Session running: true
[12:07:09] [iOS AUDIO] 📤 Sent packet #2: 9600 bytes (4800 samples, ~100ms)
[12:07:09] [iOS AUDIO] 📤 Sent packet #3: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #4: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #5: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #6: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #7: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #8: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #9: 9600 bytes (4800 samples, ~100ms)
[12:07:10] [iOS AUDIO] 📤 Sent packet #10: 9600 bytes (4800 samples, ~100ms)
[12:07:14] [iOS AUDIO] ✅ Streaming: 50 packets sent
[12:07:20] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[12:07:23] [CAM] viewerJoin → session: iosILUIWU, viewerId: dTsxnGHFtXhChXvx
[12:07:23] [WEBRTC] WebRTC client already exists, reusing it
[12:07:23] [WEBRTC] WebRTC client already exists, reusing it
[12:07:23] ensureCaptureStarted - adding peer
[12:07:23] tracksReady = true
[12:07:23] Added front video track to peer connection for dTsxnGHFtXhChXvx
[12:07:23] Added back video track to peer connection for dTsxnGHFtXhChXvx
[12:07:23] Added audio track to peer connection for dTsxnGHFtXhChXvx
[12:07:23] localVideoTrackFront ok
[12:07:23] localVideoTrackBack ok
[12:07:23] tracks already marked as ready
[12:07:23] Peer added with tracks, notifying viewer ready
[12:07:23] notifyViewerReady called
[12:07:23] notifyViewerReady -> Will send
[12:07:23] [CAM] Offer → session: iosILUIWU, viewerId: dTsxnGHFtXhChXvx
[12:07:23] [WEBRTC] WebRTC client already exists, reusing it
[12:07:23] [CAM] Peer connection ready, processing offer immediately
[12:07:23] Creating answer for dTsxnGHFtXhChXvx. Found 3 transceivers:
[12:07:23] Transceiver 0: video, direction=sendRecv, hasTrack=true
[12:07:23] Transceiver 1: video, direction=sendRecv, hasTrack=true
[12:07:23] Transceiver 2: audio, direction=sendRecv, hasTrack=true
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:590239771 1 udp 2122260224 192.168.1.8 61690 typ host generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote host → applying
[12:07:23] SEND answer for viewerId=dTsxnGHFtXhChXvx
[12:07:23] SDP length: 4815
[12:07:23] ICE gathering state: 1
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:2164384292 1 udp 2122129152 100.76.19.55 50770 typ host generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] ICE state for vid=dTsxnGHFtXhChXvx: 1 ( RTCIceConnectionState )
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121670400 192.0.0.6 64949 typ host generation 0 ufrag 2SB8 network-id 4 network-cost 50
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] remote host → applying
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1574383754 1 udp 2122129151 192.168.1.177 55855 typ host generation 0 ufrag jqvO network-id 1 network-cost 10", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:967042347 1 udp 2122063615 10.50.3.244 61135 typ host generation 0 ufrag jqvO network-id 11 network-cost 900", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121998079 10.29.166.113 60903 typ host generation 0 ufrag jqvO network-id 12 network-cost 900", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121932543 10.29.166.113 53183 typ host generation 0 ufrag jqvO network-id 4 network-cost 50", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121867007 10.29.166.113 59982 typ host generation 0 ufrag jqvO network-id 5 network-cost 50", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121801471 10.29.166.113 49415 typ host generation 0 ufrag jqvO network-id 6 network-cost 50", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121735935 10.29.166.113 63721 typ host generation 0 ufrag jqvO network-id 7 network-cost 50", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:3288313147 1 udp 2121670399 10.29.166.113 61613 typ host generation 0 ufrag jqvO network-id 8 network-cost 50", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121604864 192.0.0.6 50684 typ host generation 0 ufrag 2SB8 network-id 7 network-cost 50
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] [ICE] remote host → applying
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:1413745042 1 udp 2122265343 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 64618 typ host generation 0 ufrag jqvO network-id 3 network-cost 10", "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMLineIndex": 0, "candidate": "candidate:863484181 1 udp 2122197247 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 64142 typ host generation 0 ufrag jqvO network-id 2 network-cost 10", "sdpMid": Optional("0")]
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121539328 192.0.0.6 57629 typ host generation 0 ufrag 2SB8 network-id 9 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:2768977014 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 55650 typ host generation 0 ufrag 2SB8 network-id 14 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:775729943 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 58134 typ host generation 0 ufrag 2SB8 network-id 5 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 57874 typ host generation 0 ufrag 2SB8 network-id 6 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 55689 typ host generation 0 ufrag 2SB8 network-id 8 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 61990 typ host generation 0 ufrag 2SB8 network-id 10 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:590239771 1 udp 2122260224 192.168.1.8 63598 typ host generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:2164384292 1 udp 2122129152 100.76.19.55 55850 typ host generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121670400 192.0.0.6 49832 typ host generation 0 ufrag 2SB8 network-id 4 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121604864 192.0.0.6 60708 typ host generation 0 ufrag 2SB8 network-id 7 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3205251571 1 udp 2121539328 192.0.0.6 56406 typ host generation 0 ufrag 2SB8 network-id 9 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:2768977014 1 udp 2122197248 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 56046 typ host generation 0 ufrag 2SB8 network-id 14 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:775729943 1 udp 2122068736 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 55246 typ host generation 0 ufrag 2SB8 network-id 5 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2122003200 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 64083 typ host generation 0 ufrag 2SB8 network-id 6 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2121937664 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 60118 typ host generation 0 ufrag 2SB8 network-id 8 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:946097723 1 udp 2121872128 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 57325 typ host generation 0 ufrag 2SB8 network-id 10 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [ICE] agent local srflx
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) srflx candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:489505315 1 udp 1685921535 84.227.75.34 55855 typ srflx raddr 192.168.1.177 rport 55855 generation 0 ufrag jqvO network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:106403825 1 udp 1686052607 212.252.118.51 23995 typ srflx raddr 192.168.1.8 rport 61690 generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote srflx → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3254489229 1 udp 1685921535 31.142.27.147 47760 typ srflx raddr 100.76.19.55 rport 50770 generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote srflx → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1575074435 1 tcp 1518280447 192.168.1.8 54719 typ host tcptype passive generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:4291690684 1 tcp 1518149375 100.76.19.55 54720 typ host tcptype passive generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517690623 192.0.0.6 54721 typ host tcptype passive generation 0 ufrag 2SB8 network-id 4 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517625087 192.0.0.6 54722 typ host tcptype passive generation 0 ufrag 2SB8 network-id 7 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517559551 192.0.0.6 54723 typ host tcptype passive generation 0 ufrag 2SB8 network-id 9 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3687112430 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54724 typ host tcptype passive generation 0 ufrag 2SB8 network-id 14 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1358123407 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54725 typ host tcptype passive generation 0 ufrag 2SB8 network-id 5 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54726 typ host tcptype passive generation 0 ufrag 2SB8 network-id 6 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54727 typ host tcptype passive generation 0 ufrag 2SB8 network-id 8 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54728 typ host tcptype passive generation 0 ufrag 2SB8 network-id 10 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1575074435 1 tcp 1518280447 192.168.1.8 54729 typ host tcptype passive generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:4291690684 1 tcp 1518149375 100.76.19.55 54730 typ host tcptype passive generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517690623 192.0.0.6 54731 typ host tcptype passive generation 0 ufrag 2SB8 network-id 4 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517625087 192.0.0.6 54732 typ host tcptype passive generation 0 ufrag 2SB8 network-id 7 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3250824043 1 tcp 1517559551 192.0.0.6 54733 typ host tcptype passive generation 0 ufrag 2SB8 network-id 9 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:3687112430 1 tcp 1518217471 2a02:4e0:5b7:dc52:b015:b8d0:57de:bf27 54734 typ host tcptype passive generation 0 ufrag 2SB8 network-id 14 network-cost 900
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1358123407 1 tcp 1518088959 fd74:6572:6d6e:7573:c:e0f6:10fa:d736 54735 typ host tcptype passive generation 0 ufrag 2SB8 network-id 5 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1518023423 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54736 typ host tcptype passive generation 0 ufrag 2SB8 network-id 6 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1517957887 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54737 typ host tcptype passive generation 0 ufrag 2SB8 network-id 8 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1185655971 1 tcp 1517892351 fd74:6572:6d6e:7573:d:e0f6:10fa:d736 54738 typ host tcptype passive generation 0 ufrag 2SB8 network-id 10 network-cost 50
[12:07:23] [ICE] remote host → applying
[12:07:23] [ICE] agent local relay → ip=192.168.1.31 port=54364
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) relay candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3089083441 1 udp 41755135 192.168.1.31 54364 typ relay raddr 84.227.75.34 rport 55855 generation 0 ufrag jqvO network-id 1 network-cost 10"]
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:106403825 1 udp 1686052607 212.252.118.51 24503 typ srflx raddr 192.168.1.8 rport 63598 generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote srflx → applying
[12:07:23] [ICE] agent local relay → ip=192.168.1.31 port=64523
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) relay candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3330378044 1 udp 24977663 192.168.1.31 64523 typ relay raddr 84.227.75.34 rport 52008 generation 0 ufrag jqvO network-id 1 network-cost 10", "sdpMLineIndex": 0]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:591992199 1 tcp 1518149375 192.168.1.177 52024 typ host tcptype passive generation 0 ufrag jqvO network-id 1 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:1195229222 1 tcp 1518083839 10.50.3.244 52030 typ host tcptype passive generation 0 ufrag jqvO network-id 11 network-cost 900"]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3177285686 1 tcp 1518018303 10.29.166.113 52036 typ host tcptype passive generation 0 ufrag jqvO network-id 12 network-cost 900", "sdpMLineIndex": 0]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "candidate": "candidate:3177285686 1 tcp 1517952767 10.29.166.113 52042 typ host tcptype passive generation 0 ufrag jqvO network-id 4 network-cost 50", "sdpMLineIndex": 0]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3177285686 1 tcp 1517887231 10.29.166.113 52048 typ host tcptype passive generation 0 ufrag jqvO network-id 5 network-cost 50"]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["sdpMid": Optional("0"), "sdpMLineIndex": 0, "candidate": "candidate:3177285686 1 tcp 1517821695 10.29.166.113 52054 typ host tcptype passive generation 0 ufrag jqvO network-id 6 network-cost 50"]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:3177285686 1 tcp 1517756159 10.29.166.113 52060 typ host tcptype passive generation 0 ufrag jqvO network-id 7 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:3177285686 1 tcp 1517690623 10.29.166.113 52066 typ host tcptype passive generation 0 ufrag jqvO network-id 8 network-cost 50", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:718941343 1 tcp 1518285567 fdaa:bbcc:ddee:0:1841:8c4f:993a:7857 52072 typ host tcptype passive generation 0 ufrag jqvO network-id 3 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [ICE] agent local host
[12:07:23] [ICE] local → remote (dTsxnGHFtXhChXvx) host candidate
[12:07:23] SEND ice for viewerId=dTsxnGHFtXhChXvx
[12:07:23] Candidate: ["candidate": "candidate:1307155480 1 tcp 1518217471 2001:1708:bb9:ed00:f479:bb47:df4:9a3a 52078 typ host tcptype passive generation 0 ufrag jqvO network-id 2 network-cost 10", "sdpMLineIndex": 0, "sdpMid": Optional("0")]
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:659718958 1 udp 41755135 192.168.1.31 64163 typ relay raddr 31.142.27.147 rport 47760 generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote relay → applying (ip=192.168.1.31 port=64163)
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1503486390 1 udp 25108735 192.168.1.31 49495 typ relay raddr 212.252.118.51 rport 24482 generation 0 ufrag 2SB8 network-id 1 network-cost 10
[12:07:23] [ICE] remote relay → applying (ip=192.168.1.31 port=49495)
[12:07:23] [CAM] iceFromViewer viewerId=dTsxnGHFtXhChXvx
[12:07:23] [CAM] Peer connection ready, processing ICE candidate immediately
[12:07:23] addRemoteCandidate for vid=dTsxnGHFtXhChXvx
[12:07:23] Found s:candidate:1503486390 1 udp 24977663 192.168.1.31 59785 typ relay raddr 31.142.27.147 rport 47711 generation 0 ufrag 2SB8 network-id 13 network-cost 900
[12:07:23] [ICE] remote relay → applying (ip=192.168.1.31 port=59785)
[12:07:23] ICE state for vid=dTsxnGHFtXhChXvx: 2 ( RTCIceConnectionState )
[12:07:23] [STATS] starting poll for vid=dTsxnGHFtXhChXvx
[12:07:25] [LOG] Long press on chat icon detected! Triggering log upload...
[12:07:25] [LOG-PROMPT] ====== promptForLogDescription START ======
[12:07:25] [LOG-PROMPT] presentedVC=nil
[12:07:25] [LOG-PROMPT] isViewLoaded=true, view.window=YES
[12:07:25] [LOG-PROMPT] inputField.isFirstResponder=false
[12:07:25] [LOG-PROMPT] allowKeyboardDismiss BEFORE=false
[12:07:25] [LOG-PROMPT] allowKeyboardDismiss set to TRUE
[12:07:25] [LOG-PROMPT] view.endEditing(true) returned true
[12:07:25] [LOG-PROMPT] inputField.isFirstResponder AFTER endEditing=false
[12:07:25] [LOG-PROMPT] allowKeyboardDismiss AFTER endEditing=true
[12:07:25] [LOG-PROMPT] No keyboard active — presenting alert immediately
[12:07:25] [LOG-ALERT] ---- presentLogDescriptionAlert about to present ----
[12:07:25] [LOG-ALERT] inputField.isFirstResponder=false, allowKeyboardDismiss=true
[12:07:25] [LOG-ALERT] final endEditing returned=true, inputField.isFirstResponder AFTER=false
[12:07:25] [LOG-ALERT] allowKeyboardDismiss AFTER final endEditing=true
[12:07:25] [LOG-ALERT] presentedVC=nil
[12:07:25] [LOG-ALERT] ---- present completion handler fired ----
[12:07:25] [LOG-ALERT] inputField.isFirstResponder=false
[12:07:25] [LOG-ALERT] textView.window=YES
[12:07:25] [LOG-ALERT] textView.canBecomeFirstResponder=true
[12:07:25] [LOG-ALERT] textView.isEditable=true, isUserInteractionEnabled=true
[12:07:25] [LOG-ALERT] textView.frame=(16.0, 64.0, 288.0, 100.0), isHidden=false, alpha=1.0
[12:07:25] [LOG-ALERT] textView.superview=Optional("<_UIAlertControllerPhoneTVMacView: 0x122edc000; frame = (60 373; 320 238); layer")
[12:07:25] [LOG-ALERT] textView.becomeFirstResponder()=true
[12:07:25] [LOG-ALERT] ---- present completion handler done ----
[12:07:25] [SCROLL] 💓 alive, visible=39...46, rows=51, estHeight=0.0, heightCalls=64
[12:07:25] [SCROLL_BTN] Showing button - 309pt from bottom > half 223pt
[12:07:28] [SCROLL] 💓 alive, visible=39...50, rows=51, estHeight=0.0, heightCalls=7