=== Eye Viewer Log Rotated at 2026-01-21 10:56:04 +0000 ===
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 11:04:49";
"file_name" = "";
message = Okii;
"message_id" = 18384;
"message_type" = 0;
"prev_session_message_id" = 18383;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18384, AnyHashable("operation_type"): 3]
- 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
datesent = "2026-01-21 11:20:40";
"file_name" = "";
message = "\Ud83d\Udc8b";
"message_id" = 18385;
"message_type" = 0;
"prev_session_message_id" = 18384;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18385]
datesent = "2026-01-21 11:20:40";
"file_name" = "";
message = "\Ud83d\Udc8b";
"message_id" = 18385;
"message_type" = 0;
"prev_session_message_id" = 18384;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18385]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 11:20:40";
"file_name" = "";
message = "\Ud83d\Udc8b";
"message_id" = 18385;
"message_type" = 0;
"prev_session_message_id" = 18384;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
- 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
"LocalWebSocketTask <622300CF-5BD1-445E-9935-9BE955B4F47C>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <622300CF-5BD1-445E-9935-9BE955B4F47C>.<1>}
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18386, AnyHashable("operation_type"): 3]
"LocalWebSocketTask <37837BEB-46F9-4935-AF5A-43BDB98CA0DD>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <37837BEB-46F9-4935-AF5A-43BDB98CA0DD>.<1>}
datesent = "2026-01-21 12:16:28";
"file_name" = "";
message = "I was in a call with sasa baby";
"message_id" = 18388;
"message_type" = 0;
"prev_session_message_id" = 18387;
"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;
}]
datesent = "2026-01-21 12:16:31";
"file_name" = "";
message = "Sorry\Ud83e\Udd72";
"message_id" = 18389;
"message_type" = 0;
"prev_session_message_id" = 18388;
"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 = 2;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 12:16:31";
"file_name" = "";
message = "Sorry\Ud83e\Udd72";
"message_id" = 18389;
"message_type" = 0;
"prev_session_message_id" = 18388;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18389]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18390]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18391]
"LocalWebSocketTask <5B5E188C-4F2F-44A5-A562-5B4D26D46C91>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <5B5E188C-4F2F-44A5-A562-5B4D26D46C91>.<1>}
datesent = "2026-01-21 12:24:40";
"file_name" = "";
message = "Im sure it will baby\U2665\Ufe0f";
"message_id" = 18393;
"message_type" = 0;
"prev_session_message_id" = 18392;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18393, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18393, AnyHashable("message_data"): {
datesent = "2026-01-21 12:24:40";
"file_name" = "";
message = "Im sure it will baby\U2665\Ufe0f";
"message_id" = 18393;
"message_type" = 0;
"prev_session_message_id" = 18392;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"LocalWebSocketTask <BA7106B1-EAB1-4727-AB8A-DA2CC99C2DEF>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <BA7106B1-EAB1-4727-AB8A-DA2CC99C2DEF>.<1>}
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 12:35:13";
"file_name" = "";
message = "Babyyy!!!!!!";
"message_id" = 18396;
"message_type" = 0;
"prev_session_message_id" = 18395;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18396]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18396]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 12:35:22";
"file_name" = "";
message = "\Ud83d\Ude21";
"message_id" = 18397;
"message_type" = 0;
"prev_session_message_id" = 18396;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18397, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"LocalWebSocketTask <6DEF45AE-ECF0-48E2-ABCE-C8D608D0AC30>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <6DEF45AE-ECF0-48E2-ABCE-C8D608D0AC30>.<1>}
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18397, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 12:35:22";
"file_name" = "";
message = "\Ud83d\Ude21";
"message_id" = 18397;
"message_type" = 0;
"prev_session_message_id" = 18396;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18397]
datesent = "2026-01-21 12:56:37";
"file_name" = "";
message = "I do, I always do !";
"message_id" = 18400;
"message_type" = 0;
"prev_session_message_id" = 18399;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18400, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"LocalDataTask <7074F352-0D31-4D01-A5AE-7D58AE30AFF6>.<150>"
), NSLocalizedDescription=The network connection was lost., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, _kCFStreamErrorDomainKey=4}
- 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
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18404, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
datesent = "2026-01-21 16:09:06";
"file_name" = "";
message = "Ahhh I wish I can go\Ud83e\Udd72";
"message_id" = 18416;
"message_type" = 0;
"prev_session_message_id" = 18415;
"replied_message" = "Maybe Pilates ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18408;
"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 = 7;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18415]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18414]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18412]
"content-available" = 1;
}, AnyHashable("message_id"): 18410]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18419]
datesent = "2026-01-21 16:37:39";
"file_name" = "";
message = "I haven\U2019t eaten anything yet today";
"message_id" = 18420;
"message_type" = 0;
"prev_session_message_id" = 18419;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18420, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-21 16:37:39";
"file_name" = "";
message = "I haven\U2019t eaten anything yet today";
"message_id" = 18420;
"message_type" = 0;
"prev_session_message_id" = 18419;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18420, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-21 16:37:39";
"file_name" = "";
message = "I haven\U2019t eaten anything yet today";
"message_id" = 18420;
"message_type" = 0;
"prev_session_message_id" = 18419;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18420, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18421, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 16:38:16";
"file_name" = "";
message = "Yes I was baby";
"message_id" = 18423;
"message_type" = 0;
"prev_session_message_id" = 18422;
"replied_message" = "Were you alone at home today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18406;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 16:38:16";
"file_name" = "";
message = "Yes I was baby";
"message_id" = 18423;
"message_type" = 0;
"prev_session_message_id" = 18422;
"replied_message" = "Were you alone at home today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18406;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18423, AnyHashable("message_data"): {
datesent = "2026-01-21 16:38:16";
"file_name" = "";
message = "Yes I was baby";
"message_id" = 18423;
"message_type" = 0;
"prev_session_message_id" = 18422;
"replied_message" = "Were you alone at home today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18406;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18423, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18424]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 16:38:43";
"file_name" = "";
message = "Not sure about that, gained some weight during weekend \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18425;
"message_type" = 0;
"prev_session_message_id" = 18424;
"replied_message" = "More needed for me than for you !";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18422;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18425]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 16:38:43";
"file_name" = "";
message = "Not sure about that, gained some weight during weekend \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18425;
"message_type" = 0;
"prev_session_message_id" = 18424;
"replied_message" = "More needed for me than for you !";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18422;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18425]
datesent = "2026-01-21 16:38:43";
"file_name" = "";
message = "Not sure about that, gained some weight during weekend \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18425;
"message_type" = 0;
"prev_session_message_id" = 18424;
"replied_message" = "More needed for me than for you !";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18422;
"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"): 18425, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18425]
"LocalWebSocketTask <C46221C8-5A4A-4F2B-9DAC-2BE6B035669B>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <C46221C8-5A4A-4F2B-9DAC-2BE6B035669B>.<1>, NSLocalizedDescription=The network connection was lost.}
"LocalWebSocketTask <6E11C228-B24A-4F7A-AC00-58DDE0A5B60C>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <6E11C228-B24A-4F7A-AC00-58DDE0A5B60C>.<1>}
"LocalWebSocketTask <B20088FB-C92D-472A-A471-0DCB51C8A677>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <B20088FB-C92D-472A-A471-0DCB51C8A677>.<1>}
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18429,"event_type":2}
"content-available" = 1;
}, AnyHashable("message_id"): 18428]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18429,"event_type":2}
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18432,"event_type":2}
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:54:13";
"file_name" = "";
message = "Oki Im not gonna say but.. \Ud83e\Udd13\Ud83e\Udd23";
"message_id" = 18435;
"message_type" = 0;
"prev_session_message_id" = 18434;
"replied_message" = "But please when you reconnect I don't want you to be sorry. If you tell sorry a single time, you'll get punished \Ud83d\Ude08";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18432;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:54:13";
"file_name" = "";
message = "Oki Im not gonna say but.. \Ud83e\Udd13\Ud83e\Udd23";
"message_id" = 18435;
"message_type" = 0;
"prev_session_message_id" = 18434;
"replied_message" = "But please when you reconnect I don't want you to be sorry. If you tell sorry a single time, you'll get punished \Ud83d\Ude08";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18432;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18435, AnyHashable("message_data"): {
datesent = "2026-01-21 18:54:13";
"file_name" = "";
message = "Oki Im not gonna say but.. \Ud83e\Udd13\Ud83e\Udd23";
"message_id" = 18435;
"message_type" = 0;
"prev_session_message_id" = 18434;
"replied_message" = "But please when you reconnect I don't want you to be sorry. If you tell sorry a single time, you'll get punished \Ud83d\Ude08";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18432;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18435, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18436, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18439]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18439]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18440, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18441]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18442, AnyHashable("message_data"): {
datesent = "2026-01-21 18:56:25";
"file_name" = "";
message = "I want you to do 5 1-0s until tomorrow lunch time\Ud83d\Ude0f";
"message_id" = 18442;
"message_type" = 0;
"prev_session_message_id" = 18441;
"replied_message" = "If my baby is in the mood and wants to give me orders for tonight in bed and / or tomorrow morning at wake up and / or under shower, her slave will have no other choice than to obey. If my baby is less in the mood, then absolutely no problem \U2764\Ufe0f";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18429;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:56:25";
"file_name" = "";
message = "I want you to do 5 1-0s until tomorrow lunch time\Ud83d\Ude0f";
"message_id" = 18442;
"message_type" = 0;
"prev_session_message_id" = 18441;
"replied_message" = "If my baby is in the mood and wants to give me orders for tonight in bed and / or tomorrow morning at wake up and / or under shower, her slave will have no other choice than to obey. If my baby is less in the mood, then absolutely no problem \U2764\Ufe0f";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18429;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18443]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:57:49";
"file_name" = "";
message = "You should start in 1 hr";
"message_id" = 18444;
"message_type" = 0;
"prev_session_message_id" = 18443;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18444]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:57:49";
"file_name" = "";
message = "You should start in 1 hr";
"message_id" = 18444;
"message_type" = 0;
"prev_session_message_id" = 18443;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18444]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 18:57:49";
"file_name" = "";
message = "You should start in 1 hr";
"message_id" = 18444;
"message_type" = 0;
"prev_session_message_id" = 18443;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18444]
"content-available" = 1;
}, AnyHashable("message_id"): 18444]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18445, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 18:58:12";
"file_name" = "";
message = "For the next sessions I\U2019ll let you know \Ud83d\Ude0f";
"message_id" = 18450;
"message_type" = 0;
"prev_session_message_id" = 18449;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18450, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"LocalWebSocketTask <993FA04D-7827-4411-B1BC-9A841D07A0D8>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <993FA04D-7827-4411-B1BC-9A841D07A0D8>.<1>}
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18452]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18455]
"content-available" = 1;
}, AnyHashable("message_id"): 18457]
"content-available" = 1;
}, AnyHashable("message_id"): 18458]
"content-available" = 1;
}, AnyHashable("message_id"): 18459]
"content-available" = 1;
}, AnyHashable("message_id"): 18460]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18460,"event_type":2}
"content-available" = 1;
}]
datesent = "2026-01-21 20:16:37";
"file_name" = "";
message = "Babyy\Ud83d\Ude0d\Ud83d\Ude0d";
"message_id" = 18461;
"message_type" = 0;
"prev_session_message_id" = 18460;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18461, AnyHashable("aps"): {
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}]
datesent = "2026-01-21 20:17:37";
"file_name" = "";
message = "Before you sleep, you will do one more 1-0";
"message_id" = 18463;
"message_type" = 0;
"prev_session_message_id" = 18462;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18463, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18464]
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18465, AnyHashable("message_data"): {
datesent = "2026-01-21 20:18:44";
"file_name" = "";
message = "For 2nd round 10, for 3rd 15";
"message_id" = 18465;
"message_type" = 0;
"prev_session_message_id" = 18464;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18465, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18467]
"content-available" = 1;
}, AnyHashable("message_id"): 18468, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 20:20:52";
"file_name" = "";
message = "If you dont, then you will do morning, in that case you have to remain 15mins.";
"message_id" = 18468;
"message_type" = 0;
"prev_session_message_id" = 18467;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18468, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18469, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18470, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18471, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 20:21:48";
"file_name" = "";
message = "Please baby\Ud83d\Ude0f\Ud83d\Ude0f";
"message_id" = 18472;
"message_type" = 0;
"prev_session_message_id" = 18471;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18472, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 20:22:26";
"file_name" = "";
message = "Probably I\U2019ll read all morning \Ud83e\Udd2d";
"message_id" = 18473;
"message_type" = 0;
"prev_session_message_id" = 18472;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("message_id"): 18474, AnyHashable("message_data"): {
datesent = "2026-01-21 20:22:43";
"file_name" = "";
message = "Its 23:22 here, almost bedtime for me";
"message_id" = 18474;
"message_type" = 0;
"prev_session_message_id" = 18473;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18474]
"content-available" = 1;
}]
datesent = "2026-01-21 20:22:50";
"file_name" = "";
message = "And office tomorrow \Ud83e\Udd72";
"message_id" = 18475;
"message_type" = 0;
"prev_session_message_id" = 18474;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18475, AnyHashable("aps"): {
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18475]
"content-available" = 1;
}, AnyHashable("message_data"): {
datesent = "2026-01-21 20:30:25";
"file_name" = "";
message = "Good night \Ud83d\Ude0f\Ud83d\Ude0f\Ud83d\Ude0f";
"message_id" = 18478;
"message_type" = 0;
"prev_session_message_id" = 18477;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18477, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18478]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 662]
"content-available" = 1;
}, AnyHashable("message_id"): 664, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 665, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 699, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 700]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 701]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 705]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 704]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 707, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 710, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 719, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 718, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 716]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 15913, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18514,"event_type":2}
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18534,"event_type":2}[02:59:32] [LOG] Pruned 15680 entries older than 3 hours
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18544,"event_type":2}
"content-available" = 1;
}]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18564,"event_type":2}
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18607, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18608]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18609, AnyHashable("operation_type"): 3]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18611, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18612, AnyHashable("operation_type"): 3]
- 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
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18601, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18599]
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18603]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18604]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18605]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18613]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18614]
"content-available" = 1;
}, AnyHashable("message_id"): 18615, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18616]
"content-available" = 1;
}, AnyHashable("message_id"): 18618, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18617, AnyHashable("session_id"): ILUIWU]
"LocalWebSocketTask <D9A36B23-AE51-4CF9-88E3-AFF514785CF1>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <D9A36B23-AE51-4CF9-88E3-AFF514785CF1>.<1>, NSLocalizedDescription=The network connection was lost.}
"LocalWebSocketTask <92DCA5D8-0B25-4C64-8AB6-2587258A16B7>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <92DCA5D8-0B25-4C64-8AB6-2587258A16B7>.<1>}
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"LocalWebSocketTask <5D60B215-CD05-4F5F-8702-F311400A96FC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <5D60B215-CD05-4F5F-8702-F311400A96FC>.<1>, NSLocalizedDescription=The network connection was lost.}
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 06:37:22";
"file_name" = "";
message = "Thank youuu\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 18619;
"message_type" = 0;
"prev_session_message_id" = 18618;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18619]
"content-available" = 1;
}, AnyHashable("message_id"): 18619, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18621,"event_type":2}
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 07:19:55";
"file_name" = "";
message = "My looove\U2665\Ufe0f";
"message_id" = 18639;
"message_type" = 0;
"prev_session_message_id" = 18638;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18622;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18639, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18641]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18657, AnyHashable("message_data"): {
datesent = "2026-01-22 08:51:57";
"file_name" = "";
message = "ILU, I love the game that we are playing";
"message_id" = 18657;
"message_type" = 0;
"prev_session_message_id" = 18656;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-22 08:51:57";
"file_name" = "";
message = "ILU, I love the game that we are playing";
"message_id" = 18657;
"message_type" = 0;
"prev_session_message_id" = 18656;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
datesent = "2026-01-22 09:05:40";
"file_name" = "";
message = "Because ILU\U2665\Ufe0f because you deserve \U2665\Ufe0f because you are perfect \U2665\Ufe0f because you are mine !";
"message_id" = 18660;
"message_type" = 0;
"prev_session_message_id" = 18659;
"replied_message" = "Why are you so kind to me ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18641;
"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;
}]
datesent = "2026-01-22 09:05:40";
"file_name" = "";
message = "Because ILU\U2665\Ufe0f because you deserve \U2665\Ufe0f because you are perfect \U2665\Ufe0f because you are mine !";
"message_id" = 18660;
"message_type" = 0;
"prev_session_message_id" = 18659;
"replied_message" = "Why are you so kind to me ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18641;
"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;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18660, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-22 09:58:11";
"file_name" = "";
message = "ILU2\U2665\Ufe0f\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 18685;
"message_type" = 0;
"prev_session_message_id" = 18684;
"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 = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18685]
datesent = "2026-01-22 09:58:16";
"file_name" = "";
message = "I hope you enjoyed";
"message_id" = 18686;
"message_type" = 0;
"prev_session_message_id" = 18685;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18686, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-22 09:58:16";
"file_name" = "";
message = "I hope you enjoyed";
"message_id" = 18686;
"message_type" = 0;
"prev_session_message_id" = 18685;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18686, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-22 09:58:16";
"file_name" = "";
message = "I hope you enjoyed";
"message_id" = 18686;
"message_type" = 0;
"prev_session_message_id" = 18685;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18686, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18685]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18684]
"content-available" = 1;
}]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18689,"event_type":2}
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18689,"event_type":2}
- 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
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18714, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18719, AnyHashable("message_data"): {
datesent = "2026-01-22 11:55:56";
"file_name" = "";
message = "Just my hands\Ud83d\Ude0f\Ud83d\Ude0f???";
"message_id" = 18719;
"message_type" = 0;
"prev_session_message_id" = 18718;
"replied_message" = "Your hands ARE on me";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18702;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("message_id"): 18718, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18719, AnyHashable("session_id"): ILUIWU]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18720,"event_type":2}
"LocalWebSocketTask <2B5C9C23-286B-4F70-9C58-A7DD50C4C270>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <2B5C9C23-286B-4F70-9C58-A7DD50C4C270>.<1>}
"LocalWebSocketTask <B7DA5A92-FB02-42FC-9B91-DBFC5E81FFD4>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <B7DA5A92-FB02-42FC-9B91-DBFC5E81FFD4>.<1>}
"LocalWebSocketTask <581B959D-9707-4620-8EAE-676244B44AB5>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <581B959D-9707-4620-8EAE-676244B44AB5>.<1>}
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18720]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-22 12:42:30";
"file_name" = "";
message = "Me too my loveee";
"message_id" = 18722;
"message_type" = 0;
"prev_session_message_id" = 18721;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18722]
"LocalWebSocketTask <0657C1BB-3D2A-4926-ABD6-04F95825EBC3>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <0657C1BB-3D2A-4926-ABD6-04F95825EBC3>.<1>}
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18723, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 12:42:33";
"file_name" = "";
message = "Me too\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72";
"message_id" = 18723;
"message_type" = 0;
"prev_session_message_id" = 18722;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18724, AnyHashable("message_data"): {
datesent = "2026-01-22 12:43:07";
"file_name" = "";
message = "Im missing sleeping with you";
"message_id" = 18724;
"message_type" = 0;
"prev_session_message_id" = 18723;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"LocalWebSocketTask <D728C428-F87F-4781-AB49-1C0F3278CF09>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <D728C428-F87F-4781-AB49-1C0F3278CF09>.<1>}
datesent = "2026-01-22 12:43:07";
"file_name" = "";
message = "Im missing sleeping with you";
"message_id" = 18725;
"message_type" = 0;
"prev_session_message_id" = 18724;
"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 = 3;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18725]
alert = {
body = "New message received";
title = Eye;
};
badge = 4;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 12:43:12";
"file_name" = "";
message = "Waking up with you";
"message_id" = 18726;
"message_type" = 0;
"prev_session_message_id" = 18725;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18726, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 5;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18727]
"LocalDataTask <F41E3F1A-F9A0-42D0-B1F8-AF23BB27790C>.<387>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=18727, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=18727, _kCFStreamErrorDomainKey=4}
"LocalWebSocketTask <C93AAD77-5493-43C2-952D-3D95C53558FA>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <C93AAD77-5493-43C2-952D-3D95C53558FA>.<1>}
"content-available" = 1;
}, AnyHashable("message_id"): 18727, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"LocalWebSocketTask <3951D1BC-16A7-42EC-8B53-5CD520C747A3>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <3951D1BC-16A7-42EC-8B53-5CD520C747A3>.<1>}
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18723, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18725]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 13:25:20";
"file_name" = "";
message = "Good baby thanks\U2665\Ufe0f";
"message_id" = 18730;
"message_type" = 0;
"prev_session_message_id" = 18729;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
datesent = "2026-01-22 13:25:20";
"file_name" = "";
message = "Good baby thanks\U2665\Ufe0f";
"message_id" = 18730;
"message_type" = 0;
"prev_session_message_id" = 18729;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18730, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18730]
datesent = "2026-01-22 13:25:39";
"file_name" = "";
message = "Done for me\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18732;
"message_type" = 0;
"prev_session_message_id" = 18731;
"replied_message" = "Last meeting of the day starting now \Ud83d\Ude0a";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18728;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18732, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-22 13:25:39";
"file_name" = "";
message = "Done for me\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18732;
"message_type" = 0;
"prev_session_message_id" = 18731;
"replied_message" = "Last meeting of the day starting now \Ud83d\Ude0a";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18728;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18732, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-22 13:25:39";
"file_name" = "";
message = "Done for me\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18732;
"message_type" = 0;
"prev_session_message_id" = 18731;
"replied_message" = "Last meeting of the day starting now \Ud83d\Ude0a";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18728;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18732, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18731, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18733, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18734, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18735,"event_type":2}
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
datesent = "2026-01-22 13:27:01";
"file_name" = "";
message = "Nope baby, I wont";
"message_id" = 18736;
"message_type" = 0;
"prev_session_message_id" = 18735;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18736, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-22 13:27:01";
"file_name" = "";
message = "Nope baby, I wont";
"message_id" = 18736;
"message_type" = 0;
"prev_session_message_id" = 18735;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18736, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-22 13:27:01";
"file_name" = "";
message = "Nope baby, I wont";
"message_id" = 18736;
"message_type" = 0;
"prev_session_message_id" = 18735;
"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("message_id"): 18736, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18736]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 13:27:11";
"file_name" = "";
message = "My neck is still hurting a bit";
"message_id" = 18737;
"message_type" = 0;
"prev_session_message_id" = 18736;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18737]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 13:27:11";
"file_name" = "";
message = "My neck is still hurting a bit";
"message_id" = 18737;
"message_type" = 0;
"prev_session_message_id" = 18736;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18737]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 13:27:11";
"file_name" = "";
message = "My neck is still hurting a bit";
"message_id" = 18737;
"message_type" = 0;
"prev_session_message_id" = 18736;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18737]
"content-available" = 1;
}, AnyHashable("message_id"): 18737, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 13:27:24";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18738;
"message_type" = 0;
"prev_session_message_id" = 18737;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18738]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 13:27:24";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18738;
"message_type" = 0;
"prev_session_message_id" = 18737;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18738]
datesent = "2026-01-22 13:27:24";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18738;
"message_type" = 0;
"prev_session_message_id" = 18737;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"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"): 18738, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18738, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18739,"event_type":2}
"content-available" = 1;
}]
"LocalWebSocketTask <DA18A2BE-FC72-4D00-AD1C-B7CEF46D93B6>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <DA18A2BE-FC72-4D00-AD1C-B7CEF46D93B6>.<1>}
- 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
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18740;
"message_type" = 0;
"prev_session_message_id" = 18739;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18740, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18740;
"message_type" = 0;
"prev_session_message_id" = 18739;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18740, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18740;
"message_type" = 0;
"prev_session_message_id" = 18739;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18740]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18741, AnyHashable("message_data"): {
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18741;
"message_type" = 0;
"prev_session_message_id" = 18740;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18741, AnyHashable("message_data"): {
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18741;
"message_type" = 0;
"prev_session_message_id" = 18740;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18741, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-22 14:00:14";
"file_name" = "";
message = "In 30 mins I hope";
"message_id" = 18741;
"message_type" = 0;
"prev_session_message_id" = 18740;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18741, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 14:11:14";
"file_name" = "";
message = "Leaving now \Ud83d\Ude43\Ud83d\Ude43";
"message_id" = 18742;
"message_type" = 0;
"prev_session_message_id" = 18741;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 14:11:14";
"file_name" = "";
message = "Leaving now \Ud83d\Ude43\Ud83d\Ude43";
"message_id" = 18742;
"message_type" = 0;
"prev_session_message_id" = 18741;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-22 14:11:14";
"file_name" = "";
message = "Leaving now \Ud83d\Ude43\Ud83d\Ude43";
"message_id" = 18742;
"message_type" = 0;
"prev_session_message_id" = 18741;
"replied_message" = "Leaving not too late today ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18734;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18744, AnyHashable("operation_type"): 0]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18743]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18746,"event_type":2}
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18747, AnyHashable("session_id"): ILUIWU]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18746,"event_type":2}
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18748]
"content-available" = 1;
}]
datesent = "2026-01-22 17:47:58";
"file_name" = "";
message = "Before vacation my love";
"message_id" = 18755;
"message_type" = 0;
"prev_session_message_id" = 18754;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18755]
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-22 17:48:09";
"file_name" = "";
message = "Couldn\U2019t remember the exact date";
"message_id" = 18756;
"message_type" = 0;
"prev_session_message_id" = 18755;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18756, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 2, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18756]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18756]
"content-available" = 1;
}, AnyHashable("operation_type"): 2, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18756]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18757,"event_type":2}
"LocalWebSocketTask <DA752E95-BBF8-4050-AD83-18A7E587EAA0>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <DA752E95-BBF8-4050-AD83-18A7E587EAA0>.<1>}
"content-available" = 1;
}, AnyHashable("message_id"): 18758, AnyHashable("message_data"): {
datesent = "2026-01-22 19:47:48";
"file_name" = "";
message = "Nope baby, Im not feeling well %100, probably I\U2019ll be sick \Ud83e\Udd12";
"message_id" = 18758;
"message_type" = 0;
"prev_session_message_id" = 18757;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18758]
"content-available" = 1;
}, AnyHashable("message_id"): 18761, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18763, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}][06:07:22] [LOG] Pruned 2394 entries older than 3 hours
"content-available" = 1;
}, AnyHashable("message_id"): 18767]
"content-available" = 1;
}]
datesent = "2026-01-23 07:19:58";
"file_name" = "";
message = "And you?";
"message_id" = 18771;
"message_type" = 0;
"prev_session_message_id" = 18770;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18771, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-23 07:19:58";
"file_name" = "";
message = "And you?";
"message_id" = 18771;
"message_type" = 0;
"prev_session_message_id" = 18770;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18771, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18771, AnyHashable("message_data"): {
datesent = "2026-01-23 07:19:58";
"file_name" = "";
message = "And you?";
"message_id" = 18771;
"message_type" = 0;
"prev_session_message_id" = 18770;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("message_id"): 18772, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18775, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18774]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:19";
"file_name" = "";
message = "Seems home for you\Ud83e\Udd70";
"message_id" = 18777;
"message_type" = 0;
"prev_session_message_id" = 18776;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18774;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18777]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:19";
"file_name" = "";
message = "Seems home for you\Ud83e\Udd70";
"message_id" = 18777;
"message_type" = 0;
"prev_session_message_id" = 18776;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18774;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18777]
datesent = "2026-01-23 07:21:19";
"file_name" = "";
message = "Seems home for you\Ud83e\Udd70";
"message_id" = 18777;
"message_type" = 0;
"prev_session_message_id" = 18776;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18774;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18777, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18777, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18778, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:23";
"file_name" = "";
message = Yeap;
"message_id" = 18778;
"message_type" = 0;
"prev_session_message_id" = 18777;
"replied_message" = "Office ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18776;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18778, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:23";
"file_name" = "";
message = Yeap;
"message_id" = 18778;
"message_type" = 0;
"prev_session_message_id" = 18777;
"replied_message" = "Office ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18776;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18778, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:23";
"file_name" = "";
message = Yeap;
"message_id" = 18778;
"message_type" = 0;
"prev_session_message_id" = 18777;
"replied_message" = "Office ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18776;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18778]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18779]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18780, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:56";
"file_name" = "";
message = "Happy for you babyy";
"message_id" = 18780;
"message_type" = 0;
"prev_session_message_id" = 18779;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"LocalWebSocketTask <F57E740D-E798-4F68-BFB7-C6871E5BFF7E>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <F57E740D-E798-4F68-BFB7-C6871E5BFF7E>.<1>}
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18780, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 07:21:56";
"file_name" = "";
message = "Happy for you babyy";
"message_id" = 18780;
"message_type" = 0;
"prev_session_message_id" = 18779;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
datesent = "2026-01-23 07:22:11";
"file_name" = "";
message = "2nd for me \Ud83e\Udd2d\Ud83e\Udd2d";
"message_id" = 18781;
"message_type" = 0;
"prev_session_message_id" = 18780;
"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]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18781, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-23 07:22:11";
"file_name" = "";
message = "2nd for me \Ud83e\Udd2d\Ud83e\Udd2d";
"message_id" = 18781;
"message_type" = 0;
"prev_session_message_id" = 18780;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18781, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
datesent = "2026-01-23 07:22:37";
"file_name" = "";
message = "Ha ha true \Ud83e\Udd23";
"message_id" = 18784;
"message_type" = 0;
"prev_session_message_id" = 18783;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18784]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18784, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 07:22:37";
"file_name" = "";
message = "Ha ha true \Ud83e\Udd23";
"message_id" = 18784;
"message_type" = 0;
"prev_session_message_id" = 18783;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
datesent = "2026-01-23 07:30:08";
"file_name" = "";
message = "Alone?";
"message_id" = 18785;
"message_type" = 0;
"prev_session_message_id" = 18784;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18785, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18788, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18791, AnyHashable("message_data"): {
datesent = "2026-01-23 09:27:57";
"file_name" = "";
message = "Hi babyyyy";
"message_id" = 18791;
"message_type" = 0;
"prev_session_message_id" = 18790;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 09:27:57";
"file_name" = "";
message = "Hi babyyyy";
"message_id" = 18791;
"message_type" = 0;
"prev_session_message_id" = 18790;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18791, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}]
"LocalDataTask <63C09C9E-3ABC-4476-8348-1E3B8EEE98A3>.<235>"
), NSLocalizedDescription=The network connection was lost., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, _kCFStreamErrorDomainKey=1}
datesent = "2026-01-23 09:50:29";
"file_name" = "";
message = "No, Im not actually baby";
"message_id" = 18794;
"message_type" = 0;
"prev_session_message_id" = 18793;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18794, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18794, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18794]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18796, AnyHashable("message_data"): {
datesent = "2026-01-23 09:51:11";
"file_name" = "";
message = "Because Im not believing this process tbh \Ud83d\Ude43";
"message_id" = 18796;
"message_type" = 0;
"prev_session_message_id" = 18795;
"replied_message" = "No, Im not actually baby";
"replied_sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"replied_sender_name" = Esra;
"reply_to_id" = 18794;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-23 09:51:11";
"file_name" = "";
message = "Because Im not believing this process tbh \Ud83d\Ude43";
"message_id" = 18796;
"message_type" = 0;
"prev_session_message_id" = 18795;
"replied_message" = "No, Im not actually baby";
"replied_sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"replied_sender_name" = Esra;
"reply_to_id" = 18794;
"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;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18798, AnyHashable("message_data"): {
datesent = "2026-01-23 09:51:42";
"file_name" = "";
message = "Some presentation maybe, but depends on the participants or subjects";
"message_id" = 18798;
"message_type" = 0;
"prev_session_message_id" = 18797;
"replied_message" = "Good. Relaxed baby. What is stressing you in life ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18795;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18798, AnyHashable("message_data"): {
datesent = "2026-01-23 09:51:42";
"file_name" = "";
message = "Some presentation maybe, but depends on the participants or subjects";
"message_id" = 18798;
"message_type" = 0;
"prev_session_message_id" = 18797;
"replied_message" = "Good. Relaxed baby. What is stressing you in life ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18795;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-23 09:51:42";
"file_name" = "";
message = "Some presentation maybe, but depends on the participants or subjects";
"message_id" = 18798;
"message_type" = 0;
"prev_session_message_id" = 18797;
"replied_message" = "Good. Relaxed baby. What is stressing you in life ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18795;
"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;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18799, AnyHashable("operation_type"): 3]
datesent = "2026-01-23 09:53:00";
"file_name" = "";
message = "You are not getting a note depends on your value that you created, its more related to other\U2019s.";
"message_id" = 18801;
"message_type" = 0;
"prev_session_message_id" = 18800;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18801, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}]
"content-available" = 1;
}]
[11:32:48] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:32:48] [PUSH] Notification tapped - session_id: ILUIWU
[11:32:48] [PUSH] Max message_id before tap: 18803
[11:32:48] [PUSH] Stored pending session: ILUIWU
[11:32:48] [PUSH_EMBED] 📩 Received embedded message: id=18804, type=0, sender=Esra
[11:32:48] [PUSH_EMBED] ✅ Saved message 18804 to local DB (sync)
[11:32:48] [PUSH_EMBED] Created new cache with embedded message 18804
[11:32:48] [PUSH_EMBED] Fetching evolution data for message 18804 in background
[11:32:48] [PUSH_EMBED] ✅ Fully processed message 18804
[11:32:48] [PUSH] Embedded message handled instantly on tap
[11:32:48] [SECURITY] Timeout check: elapsed=2027.476000070572s, timeout=300.0s
[11:32:48] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[11:32:48] [PUSH] Fetching server messages since_id=18803 to catch coalesced notifications on tap
[11:32:48] [AUTH] ✅ All guards passed, showing privacy cover
[11:32:48] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18803 to catch coalesced notifications
[11:32:48] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:32:48] [LIFECYCLE] App entering foreground - restoring connections
[11:32:48] [LIFECYCLE] Away > 2 minutes (2027s) - will scroll to bottom
[11:32:48] [UPLOAD_RETRY] No pending uploads to retry
[11:32:48] [LIFECYCLE] Merged 910 reactions from local DB
[11:32:48] [LIFECYCLE] WebRTC audio re-enabled
[11:32:48] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[11:32:48] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[11:32:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:32:48] [VIEWER] Reconnecting after background - querying agents
[11:32:48] [UNSENT_RETRY] Checking for unsent messages...
[11:32:48] [PENDING_UPLOAD] Total pending upload messages: 0
[11:32:48] [UNSENT_RETRY] No unsent messages found
[11:32:48] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:32:48] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:32:48] [PUSH_UI] Inserted message 18804 into UI (now 53 messages)
[11:32:48] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[11:32:48] [PUSH_EMBED] Got evolution data for message 18804, saving to local DB
[11:32:48] [PUSH_EMBED] Saved evolution data for message 18804
[11:32:48] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[11:32:48] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push)
[11:32:48] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:32:48] [PUSH] Server fetch on tap completed (success=true)
[11:32:48] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 10:32:37";
"file_name" = "";
message = "\Ud83e\Udd2d\Ud83e\Udd2d\Ud83e\Udd2d\Ud83e\Udd2d";
"message_id" = 18804;
"message_type" = 0;
"prev_session_message_id" = 18803;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18804, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
[11:32:48] [PUSH_EMBED_VC] Message 18804 already in memory - skipping
[11:32:48] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:32:48] [PUSH] Parsed message_id: 18804
[11:32:48] [PUSH] Parsed operation_type: 0
[11:32:48] [PUSH] Taking direct action: opType=0, messageId=18804
[11:32:48] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18804
[11:32:48] [PUSH] ⚡ Message 18804 already in memory - skipping duplicate notification entirely
[11:32:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755]
[11:32:48] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18803 → 18804
[11:32:48] [CLIENT_SIG] WebSocket opened
[11:32:48] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[11:32:48] [CLIENT_SIG] Connected! clientId=jIksdF62ra4yFHEo
[11:32:48] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[11:32:48] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:32:48] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:32:49] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[11:32:49] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[11:32:49] [PUSH] handlePollEventsNotification userInfo: [:]
[11:32:49] [PUSH] No message_id in userInfo
[11:32:49] [PUSH] No operation_type in userInfo
[11:32:49] [FAST_REFRESH] Evolution disabled - performing incremental sync
[11:32:49] [FAST_REFRESH] Already have 53 messages - skipping local DB load
[11:32:49] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[11:32:49] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[11:32:49] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53
[11:32:49] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18804
[11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755]
[11:32:49] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions
[11:32:49] [FOREGROUND] Enriched 3 messages with readBy data from server
[11:32:49] [INCREMENTAL_SYNC] ✅ No new messages
[11:32:49] [FAST_REFRESH] Incremental sync complete - 53 messages
[11:32:49] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755]
[11:32:49] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions
[11:32:49] [FAST_REFRESH] Enriched 53 messages with readBy data
[11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755][11:32:50] [LOG] Pruned 31803 entries older than 3 hours
[11:32:50] [SECURITY] Restored real session: ILUIWU
[11:32:50] [SECURITY] Restored real session: ILUIWU
[11:32:50] [PUSH] Silent push received
[11:32:50] [PUSH_EMBED] No embedded message_data in notification
[11:32:50] [PUSH] No embedded data, pre-loading messages from server
[11:32:50] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:32:50] [PUSH] Silent push received
[11:32:50] [PUSH_EMBED] No embedded message_data in notification
[11:32:50] [PUSH] No embedded data, pre-loading messages from server
[11:32:50] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:32:50] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[11:32:50] [AUTH] UI update complete
[11:32:50] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[11:32:50] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:32:50] [FAKE MODE] Exiting fake mode, restoring real session
[11:32:50] [SECURITY] Restored real session: ILUIWU
[11:32:50] [SECURITY] Saved real session: ILUIWU
[11:32:50] [FAKE MODE] ✅ Restored real session: ILUIWU
[11:32:50] [FAKE MODE] Loaded 50 messages (limited to page size)
[11:32:50] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[11:32:50] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[11:32:50] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:32:50] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[11:32:50] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:32:50] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[11:32:50] [USER] ✅ User registered successfully
[11:32:50] [PUSH] User registration after token update: success
[11:32:50] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:32:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18804, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[11:32:50] [PUSH] Parsed message_id: 18804
[11:32:50] [PUSH] Parsed operation_type: 3
[11:32:50] [PUSH] Taking direct action: opType=3, messageId=18804
[11:32:50] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18804
[11:32:50] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:32:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18804, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
[11:32:50] [PUSH] Parsed message_id: 18804
[11:32:50] [PUSH] Parsed operation_type: 3
[11:32:50] [PUSH] Taking direct action: opType=3, messageId=18804
[11:32:50] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18804
[11:32:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18755, 18756, 18757, 18758, 18759]
[11:32:51] [CLIENT_SIG] Event received: type=3 messageId=18804
[11:32:51] [WS_EVENT] Received event: type=3, messageId=18804
[11:32:51] [WS_EVENT] Read receipt for message 18804 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:32:51] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions
[11:32:51] [FAKE MODE] Enriched 50 messages with readBy data
[11:32:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18755, 18756, 18757, 18758, 18759]
[11:32:56] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:32:56] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[11:32:56] [SEND_MESSAGE] ✅ Added optimistic message id=-20 to arrays, newMsgCount=51
[11:32:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-20, 18804, 18803, 18802, 18801]
[11:32:56] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:32:56] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:32:57] [LIFECYCLE] App resigning active - cleared crash flag
[11:32:57] [CLIENT_SIG] Event received: type=0 messageId=18805
[11:32:57] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18805,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 10:32:56"}
[11:32:57] [WS_EVENT] Received event: type=0, messageId=18805
[11:32:57] [WS_EVENT] 📨 New message notification (msgId=18805) - triggering incremental refresh, currentMsgCount=51
[11:32:57] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[11:32:57] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "message_id": 18805, "datesent_utc": 2026-01-23 10:32:56, "file_name": , "ok": 1]
[11:32:57] [DB_UPGRADE] Upgrading message ID: -20 → 18805, preserveOriginalDate=false
[11:32:57] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18804
[11:32:57] [DB_UPGRADE] ✅ Upgraded -20 → 18805 with send_status=0, 1 row(s) affected
[11:32:57] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -20 → 18805
[11:32:57] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -20 → 18805
[11:32:57] ReloadData 9
[11:32:57] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[11:32:57] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[11:32:57] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[11:32:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18755, 18756, 18757, 18758, 18759]
[11:32:57] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[11:32:57] [SECURITY] Saved background timestamp
[11:32:57] [LIFECYCLE] App entering background - cleared crash flag
[11:32:57] [CLIENT_SIG] Disconnecting
[11:32:57] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[11:32:57] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[11:32:57] In cleanupPeer
[11:32:57] In cleanupPeer
[11:32:57] [LIFECYCLE] WebRTC audio disabled
[11:32:57] [LIFECYCLE] AVAudioSession deactivated
[11:32:57] [LIFECYCLE] All connections stopped
[11:32:58] [CLIENT_SIG] WebSocket closed with code 1001
[11:32:58] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[11:32:58] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[11:32:58] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[11:32:58] [SERVER] Stopped reconnect polling
[11:32:58] Will request stop of video 0
[11:32:58] Will request stop of video 0
[11:32:58] [PIP] Removing 0 tracks from PiP for connection 0
[11:32:58] [PIP] ✅ All tracks removed for connection 0
[11:32:58] [PIP] Removing 0 tracks from PiP for connection 0
[11:32:58] [PIP] ✅ All tracks removed for connection 0
[11:33:21] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:33:21] [PUSH] Notification tapped - session_id: ILUIWU
[11:33:21] [PUSH] Max message_id before tap: 18805
[11:33:21] [PUSH] Stored pending session: ILUIWU
[11:33:21] [PUSH_EMBED] 📩 Received embedded message: id=18806, type=0, sender=Esra
[11:33:21] [PUSH_EMBED] ✅ Saved message 18806 to local DB (sync)
[11:33:21] [PUSH_EMBED] Inserted message 18806 into existing cache (now 51 messages)
[11:33:21] [PUSH_EMBED] Fetching evolution data for message 18806 in background
[11:33:21] [PUSH_EMBED] ✅ Fully processed message 18806
[11:33:21] [PUSH] Embedded message handled instantly on tap
[11:33:21] [SECURITY] Timeout check: elapsed=23.570384979248047s, timeout=300.0s
[11:33:21] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[11:33:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:33:21] [PUSH] Fetching server messages since_id=18805 to catch coalesced notifications on tap
[11:33:21] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18805 to catch coalesced notifications
[11:33:21] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:33:21] [LIFECYCLE] App entering foreground - restoring connections
[11:33:21] [UPLOAD_RETRY] No pending uploads to retry
[11:33:21] [LIFECYCLE] Merged 910 reactions from local DB
[11:33:21] [LIFECYCLE] WebRTC audio re-enabled
[11:33:21] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[11:33:21] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[11:33:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:33:21] [VIEWER] Reconnecting after background - querying agents
[11:33:21] [UNSENT_RETRY] Checking for unsent messages...
[11:33:21] [PENDING_UPLOAD] Total pending upload messages: 0
[11:33:21] [UNSENT_RETRY] No unsent messages found
[11:33:21] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:33:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:33:21] [PUSH_UI] Inserted message 18806 into UI (now 52 messages)
[11:33:21] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[11:33:21] [PUSH_EMBED] Got evolution data for message 18806, saving to local DB
[11:33:21] [PUSH_EMBED] Saved evolution data for message 18806
[11:33:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:33:21] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18805 → 18806
[11:33:21] [CLIENT_SIG] WebSocket opened
[11:33:21] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[11:33:21] [CLIENT_SIG] Connected! clientId=x8JVcnbVL7zGGW9m
[11:33:21] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[11:33:21] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:33:21] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[11:33:21] [PRELOAD_CACHE] Preserving 50 push-inserted messages: [18804, 18803, 18802, 18801, 18800, 18799, 18798, 18797, 18796, 18795, 18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774, 18773, 18772, 18771, 18770, 18769, 18768, 18767, 18766, 18765, 18764, 18763, 18762, 18761, 18760, 18759, 18758, 18757, 18756, 18755]
[11:33:21] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 50 from push)
[11:33:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:33:21] [PUSH] Server fetch on tap completed (success=true)
[11:33:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18806, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 10:33:12";
"file_name" = "";
message = "Thank youuuuu my love\U2665\Ufe0f";
"message_id" = 18806;
"message_type" = 0;
"prev_session_message_id" = 18805;
"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:33:21] [PUSH_EMBED_VC] Message 18806 already in memory - skipping
[11:33:21] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:33:21] [PUSH] Parsed message_id: 18806
[11:33:21] [PUSH] Parsed operation_type: 0
[11:33:21] [PUSH] Taking direct action: opType=0, messageId=18806
[11:33:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18806
[11:33:21] [PUSH] ⚡ Message 18806 already in memory - skipping duplicate notification entirely
[11:33:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[11:33:22] [SECURITY] Within timeout - cleared background flag
[11:33:22] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[11:33:22] [PUSH] handlePollEventsNotification userInfo: [:]
[11:33:22] [PUSH] No message_id in userInfo
[11:33:22] [PUSH] No operation_type in userInfo
[11:33:22] [FAST_REFRESH] Evolution disabled - performing incremental sync
[11:33:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load
[11:33:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[11:33:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[11:33:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[11:33:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18806
[11:33:22] [INCREMENTAL_SYNC] ✅ No new messages
[11:33:22] [FAST_REFRESH] Incremental sync complete - 52 messages
[11:33:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:33:22] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions
[11:33:22] [FOREGROUND] Enriched 2 messages with readBy data from server
[11:33:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:33:22] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions
[11:33:22] [FAST_REFRESH] Enriched 52 messages with readBy data
[11:33:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:33:23] [LIFECYCLE] App resigning active - cleared crash flag
[11:33:23] [PUSH] Silent push received
[11:33:23] [PUSH_EMBED] 📩 Received embedded message: id=18806, type=0, sender=Esra
[11:33:23] [PUSH_EMBED] ✅ Saved message 18806 to local DB (sync)
[11:33:23] [PUSH_EMBED] Fetching evolution data for message 18806 in background
[11:33:23] [PUSH_EMBED] ✅ Fully processed message 18806
[11:33:23] [PUSH] Embedded message handled instantly from silent push
[11:33:23] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[11:33:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[11:33:23] [PUSH_UI] Message 18806 already in memory - skipping insert
[11:33:23] [PUSH] handlePollEventsNotification userInfo: [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"): 18806, AnyHashable("message_data"): {
datesent = "2026-01-23 10:33:12";
"file_name" = "";
message = "Thank youuuuu my love\U2665\Ufe0f";
"message_id" = 18806;
"message_type" = 0;
"prev_session_message_id" = 18805;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[11:33:23] [PUSH_EMBED_VC] Message 18806 already in memory - skipping
[11:33:23] [PUSH] ⚡ Embedded message handled directly in ViewController
[11:33:23] [PUSH] Parsed message_id: 18806
[11:33:23] [PUSH] Parsed operation_type: 0
[11:33:23] [PUSH] Taking direct action: opType=0, messageId=18806
[11:33:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18806
[11:33:23] [PUSH] ⚡ Message 18806 already in memory - skipping duplicate notification entirely
[11:33:23] [PUSH_EMBED] Got evolution data for message 18806, saving to local DB
[11:33:23] [PUSH_EMBED] Saved evolution data for message 18806
[11:33:24] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[11:33:24] [SECURITY] Saved background timestamp
[11:33:24] [LIFECYCLE] App entering background - cleared crash flag
[11:33:24] [CLIENT_SIG] Disconnecting
[11:33:24] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[11:33:24] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[11:33:24] In cleanupPeer
[11:33:24] In cleanupPeer
[11:33:24] [LIFECYCLE] WebRTC audio disabled
[11:33:24] [LIFECYCLE] AVAudioSession deactivated
[11:33:24] [LIFECYCLE] All connections stopped
[11:33:24] [CLIENT_SIG] WebSocket closed with code 1001
[11:33:24] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[11:33:24] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[11:33:24] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[11:33:24] [SERVER] Stopped reconnect polling
[11:33:24] Will request stop of video 0
[11:33:24] Will request stop of video 0
[11:33:24] [PIP] Removing 0 tracks from PiP for connection 0
[11:33:24] [PIP] ✅ All tracks removed for connection 0
[11:33:24] [PIP] Removing 0 tracks from PiP for connection 0
[11:33:24] [PIP] ✅ All tracks removed for connection 0
[11:33:24] [PUSH] Silent push received
[11:33:24] [PUSH_EMBED] No embedded message_data in notification
[11:33:24] [PUSH] No embedded data, pre-loading messages from server
[11:33:24] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:33:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[11:33:24] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18756, 18755]
[11:33:24] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[11:33:24] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[11:33:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18806]
[11:33:24] [PUSH] Parsed message_id: 18806
[11:33:24] [PUSH] Parsed operation_type: 3
[11:33:24] [PUSH] Taking direct action: opType=3, messageId=18806
[11:33:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18806
[11:34:22] [SECURITY] Timeout check: elapsed=58.372612953186035s, timeout=300.0s
[11:34:22] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[11:34:22] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:34:22] [LIFECYCLE] App entering foreground - restoring connections
[11:34:22] [UPLOAD_RETRY] No pending uploads to retry
[11:34:22] [LIFECYCLE] Merged 910 reactions from local DB
[11:34:22] [LIFECYCLE] WebRTC audio re-enabled
[11:34:22] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[11:34:22] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[11:34:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:34:22] [VIEWER] Reconnecting after background - querying agents
[11:34:22] [UNSENT_RETRY] Checking for unsent messages...
[11:34:22] [PENDING_UPLOAD] Total pending upload messages: 0
[11:34:22] [UNSENT_RETRY] No unsent messages found
[11:34:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:34:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:34:22] [CLIENT_SIG] WebSocket opened
[11:34:22] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[11:34:22] [CLIENT_SIG] Connected! clientId=pg_ehH0_Sagycobz
[11:34:22] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[11:34:22] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:34:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[11:34:22] [SECURITY] Within timeout - cleared background flag
[11:34:22] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[11:34:22] [PUSH] handlePollEventsNotification userInfo: [:]
[11:34:22] [PUSH] No message_id in userInfo
[11:34:22] [PUSH] No operation_type in userInfo
[11:34:22] [FAST_REFRESH] Evolution disabled - performing incremental sync
[11:34:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load
[11:34:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[11:34:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[11:34:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[11:34:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18806
[11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:34:23] [INCREMENTAL_SYNC] ✅ No new messages
[11:34:23] [FAST_REFRESH] Incremental sync complete - 52 messages
[11:34:23] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions
[11:34:23] [FOREGROUND] Enriched 0 messages with readBy data from server
[11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:34:23] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions
[11:34:23] [FAST_REFRESH] Enriched 52 messages with readBy data
[11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758]
[11:34:33] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[11:34:33] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=52, isReloading=false
[11:34:33] [SEND_MESSAGE] ✅ Added optimistic message id=-21 to arrays, newMsgCount=53
[11:34:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-21, 18806, 18805, 18804, 18803]
[11:34:33] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[11:34:33] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[11:34:33] [LIFECYCLE] App resigning active - cleared crash flag
[11:34:34] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[11:34:34] [SECURITY] Saved background timestamp
[11:34:34] [LIFECYCLE] App entering background - cleared crash flag
[11:34:34] [CLIENT_SIG] Disconnecting
[11:34:34] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[11:34:34] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[11:34:34] In cleanupPeer
[11:34:34] In cleanupPeer
[11:34:34] [LIFECYCLE] WebRTC audio disabled
[11:34:34] [LIFECYCLE] AVAudioSession deactivated
[11:34:34] [LIFECYCLE] All connections stopped
[11:34:34] [CLIENT_SIG] WebSocket closed with code 1001
[11:34:34] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[11:34:34] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[11:34:34] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[11:34:34] [SERVER] Stopped reconnect polling
[11:34:34] Will request stop of video 0
[11:34:34] Will request stop of video 0
[11:34:34] [PIP] Removing 0 tracks from PiP for connection 0
[11:34:34] [PIP] ✅ All tracks removed for connection 0
[11:34:34] [PIP] Removing 0 tracks from PiP for connection 0
[11:34:34] [PIP] ✅ All tracks removed for connection 0
[12:21:31] [CHAT] send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x131c6fd50 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <83BC1087-D9BF-4F0F-BEC1-ACB966ADF67B>.<357>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <83BC1087-D9BF-4F0F-BEC1-ACB966ADF67B>.<357>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, _kCFStreamErrorDomainKey=4}
[12:21:31] [PUSH] Notification tapped - session_id: ILUIWU
[12:21:31] [PUSH] Max message_id before tap: 18806
[12:21:31] [PUSH] Stored pending session: ILUIWU
[12:21:31] [PUSH_EMBED] 📩 Received embedded message: id=18809, type=0, sender=Esra
[12:21:31] [PUSH_EMBED] ✅ Saved message 18809 to local DB (sync)
[12:21:31] [PUSH_EMBED] Created new cache with embedded message 18809
[12:21:31] [PUSH_EMBED] Fetching evolution data for message 18809 in background
[12:21:31] [PUSH_EMBED] ✅ Fully processed message 18809
[12:21:31] [PUSH] Embedded message handled instantly on tap
[12:21:31] [PUSH] Fetching server messages since_id=18806 to catch coalesced notifications on tap
[12:21:31] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18806 to catch coalesced notifications
[12:21:31] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:21:31] [SECURITY] Timeout check: elapsed=2816.529783964157s, timeout=300.0s
[12:21:31] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[12:21:31] [AUTH] ✅ All guards passed, showing privacy cover
[12:21:31] [LIFECYCLE] App entering foreground - restoring connections
[12:21:31] [LIFECYCLE] Away > 2 minutes (2816s) - will scroll to bottom
[12:21:31] [UPLOAD_RETRY] No pending uploads to retry
[12:21:31] [LIFECYCLE] Merged 910 reactions from local DB
[12:21:31] [LIFECYCLE] WebRTC audio re-enabled
[12:21:31] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[12:21:31] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[12:21:31] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:21:31] [VIEWER] Reconnecting after background - querying agents
[12:21:31] [UNSENT_RETRY] Checking for unsent messages...
[12:21:31] [PENDING_UPLOAD] Found pending message: id=-21, file=, uploadStatus=0, sendStatus=1
[12:21:31] [PENDING_UPLOAD] Total pending upload messages: 1
[12:21:31] [UNSENT_RETRY] 🔄 Found 1 unsent messages from me to retry
[12:21:31] [UNSENT_RETRY] 🔄 Retrying message id=-21, type=0, file=
[12:21:31] [SEND_STATUS] 💾 Updating DB: messageId=-21, status=1 (sending)
[12:21:31] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-21
[12:21:31] [UNSENT_RETRY] 🔑 Including client_message_id=43D257B6-B5BF-46FB-944D-562A8199B3CE for idempotent retry
[12:21:31] [UNSENT_RETRY] 📤 Sending message id=-21 to server
[12:21:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:21:31] [CHAT] Network error detected - queuing for retry
[12:21:31] [SEND_STATUS] 💾 Updating DB: messageId=-21, status=3 (pending_retry)
[12:21:31] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-21
[12:21:31] [SEND_STATUS] ⏳ Message -21 marked as PENDING RETRY (waiting for network)
[12:21:31] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:21:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:21:31] [PUSH_UI] Inserted message 18809 into UI (now 54 messages)
[12:21:31] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[12:21:31] [PUSH] Silent push received
[12:21:31] [PUSH_EMBED] 📩 Received embedded message: id=18809, type=0, sender=Esra
[12:21:31] [PUSH_EMBED] ✅ Saved message 18809 to local DB (sync)
[12:21:31] [PUSH_EMBED] Created new cache with embedded message 18809
[12:21:31] [PUSH_EMBED] Fetching evolution data for message 18809 in background
[12:21:31] [PUSH_EMBED] ✅ Fully processed message 18809
[12:21:31] [PUSH] Embedded message handled instantly from silent push
[12:21:31] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:21:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:21:31] [PUSH_UI] Message 18809 already in memory - skipping insert
[12:21:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 11:21:26";
"file_name" = "";
message = "And Im happy for both of us\Ud83e\Udd70";
"message_id" = 18809;
"message_type" = 0;
"prev_session_message_id" = 18808;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18809]
[12:21:31] [PUSH_EMBED_VC] Message 18809 already in memory - skipping
[12:21:31] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:21:31] [PUSH] Parsed message_id: 18809
[12:21:31] [PUSH] Parsed operation_type: 0
[12:21:31] [PUSH] Taking direct action: opType=0, messageId=18809
[12:21:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18809
[12:21:31] [PUSH] ⚡ Message 18809 already in memory - skipping duplicate notification entirely
[12:21:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, -21, 18806, 18805, 18804]
[12:21:31] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18806 → 18809
[12:21:31] [PUSH_EMBED] Got evolution data for message 18809, saving to local DB
[12:21:31] [PUSH_EMBED] Saved evolution data for message 18809
[12:21:31] [CLIENT_SIG] WebSocket opened
[12:21:31] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:21:31] [PUSH_EMBED] Got evolution data for message 18809, saving to local DB
[12:21:31] [PUSH_EMBED] Saved evolution data for message 18809
[12:21:31] [CLIENT_SIG] Connected! clientId=xHkT3hEfSEA4lotG
[12:21:31] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:21:31] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:21:31] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:21:31] [UNSENT_RETRY] 📥 receive_message.php HTTP 200: {"ok":true,"message_id":18807,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 10:34:33","idempotent":true}
[12:21:31] [UNSENT_RETRY] ✅ Message synced! Old id=-21 → new server id=18807
[12:21:31] [DB_UPGRADE] Upgrading message ID: -21 → 18807, preserveOriginalDate=true
[12:21:31] [DB_UPGRADE] ✅ Upgraded -21 → 18807 with send_status=0, 1 row(s) affected
[12:21:31] [UNSENT_RETRY] ✅ Updated chatMessages[1].id: -21 → 18807
[12:21:31] [UNSENT_RETRY] ✅ Updated allMessagesWithReadBy[1].id: -21 → 18807
[12:21:31] ReloadData unsent_retry
[12:21:31] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[12:21:31] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[12:21:31] [PUSH] handlePollEventsNotification userInfo: [:]
[12:21:31] [PUSH] No message_id in userInfo
[12:21:31] [PUSH] No operation_type in userInfo
[12:21:31] [FAST_REFRESH] Evolution disabled - performing incremental sync
[12:21:31] [FAST_REFRESH] Already have 54 messages - skipping local DB load
[12:21:31] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[12:21:31] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[12:21:31] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[12:21:31] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18809
[12:21:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, 18807, 18806, 18805, 18804]
[12:21:31] [PUSH_PRELOAD] Fetched 3 messages - caching for instant display
[12:21:31] [PUSH_PRELOAD] ⚡ Pre-cached 3 messages for instant display (preserved 0 from push)
[12:21:31] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:21:31] [PUSH] Server fetch on tap completed (success=true)
[12:21:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 11:21:26";
"file_name" = "";
message = "And Im happy for both of us\Ud83e\Udd70";
"message_id" = 18809;
"message_type" = 0;
"prev_session_message_id" = 18808;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18809, AnyHashable("operation_type"): 0]
[12:21:31] [PUSH_EMBED_VC] Message 18809 already in memory - skipping
[12:21:31] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:21:31] [PUSH] Parsed message_id: 18809
[12:21:31] [PUSH] Parsed operation_type: 0
[12:21:31] [PUSH] Taking direct action: opType=0, messageId=18809
[12:21:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18809
[12:21:31] [PUSH] ⚡ Message 18809 already in memory - skipping duplicate notification entirely
[12:21:31] [INCREMENTAL_SYNC] ✅ No new messages
[12:21:31] [FAST_REFRESH] Incremental sync complete - 54 messages
[12:21:32] [NETWORK] Status changed: connected
[12:21:32] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions
[12:21:32] [FAST_REFRESH] Enriched 54 messages with readBy data
[12:21:32] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions
[12:21:32] [FOREGROUND] Enriched 0 messages with readBy data from server
[12:21:32] [RELOAD_TAB] ⏳ Already pending, waiting for debounce[12:21:32] [LOG] Pruned 253 entries older than 3 hours
[12:21:32] [SECURITY] Restored real session: ILUIWU
[12:21:32] [SECURITY] Restored real session: ILUIWU
[12:21:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, 18807, 18806, 18805, 18804]
[12:21:32] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[12:21:32] [AUTH] UI update complete
[12:21:32] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[12:21:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:21:32] [FAKE MODE] Exiting fake mode, restoring real session
[12:21:32] [SECURITY] Restored real session: ILUIWU
[12:21:32] [SECURITY] Saved real session: ILUIWU
[12:21:32] [FAKE MODE] ✅ Restored real session: ILUIWU
[12:21:32] [FAKE MODE] Loaded 50 messages (limited to page size)
[12:21:32] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[12:21:32] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[12:21:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18760, 18761, 18762, 18763, 18764]
[12:21:33] [USER] ✅ User registered successfully
[12:21:33] [PUSH] User registration after token update: success
[12:21:33] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions
[12:21:33] [FAKE MODE] Enriched 50 messages with readBy data
[12:21:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18760, 18761, 18762, 18763, 18764]
[12:21:34] [PUSH] Silent push received
[12:21:34] [PUSH_EMBED] No embedded message_data in notification
[12:21:34] [PUSH] No embedded data, pre-loading messages from server
[12:21:34] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:21:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:21:34] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:21:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:21:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18809, AnyHashable("session_id"): ILUIWU]
[12:21:34] [PUSH] Parsed message_id: 18809
[12:21:34] [PUSH] Parsed operation_type: 3
[12:21:34] [PUSH] Taking direct action: opType=3, messageId=18809
[12:21:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18809
[12:21:35] [CLIENT_SIG] Event received: type=3 messageId=18809
[12:21:35] [WS_EVENT] Received event: type=3, messageId=18809
[12:21:35] [WS_EVENT] Read receipt for message 18809 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:21:37] [PUSH] Silent push received
[12:21:37] [PUSH_EMBED] No embedded message_data in notification
[12:21:37] [PUSH] No embedded data, pre-loading messages from server
[12:21:37] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:21:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:21:37] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:21:37] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:21:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18808, AnyHashable("aps"): {
"content-available" = 1;
}]
[12:21:37] [PUSH] Parsed message_id: 18808
[12:21:37] [PUSH] Parsed operation_type: 3
[12:21:37] [PUSH] Taking direct action: opType=3, messageId=18808
[12:21:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18808
[12:21:37] [CLIENT_SIG] Event received: type=3 messageId=18808
[12:21:37] [WS_EVENT] Received event: type=3, messageId=18808
[12:21:37] [WS_EVENT] Read receipt for message 18808 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:21:39] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[12:21:39] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[12:21:39] [SEND_MESSAGE] ✅ Added optimistic message id=-22 to arrays, newMsgCount=51
[12:21:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-22, 18809, 18808, 18807, 18806]
[12:21:39] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[12:21:39] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[12:21:41] [CLIENT_SIG] Event received: type=0 messageId=18810
[12:21:41] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18810,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:21:39"}
[12:21:41] [WS_EVENT] Received event: type=0, messageId=18810
[12:21:41] [WS_EVENT] 📨 New message notification (msgId=18810) - triggering incremental refresh, currentMsgCount=51
[12:21:41] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[12:21:41] [CHAT] receive_message.php JSON: ["message_id": 18810, "session_id": ILUIWU, "ok": 1, "datesent_utc": 2026-01-23 11:21:39, "file_name": , "message_type": 0]
[12:21:41] [DB_UPGRADE] Upgrading message ID: -22 → 18810, preserveOriginalDate=false
[12:21:41] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18809
[12:21:41] [DB_UPGRADE] ✅ Upgraded -22 → 18810 with send_status=0, 1 row(s) affected
[12:21:41] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -22 → 18810
[12:21:41] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -22 → 18810
[12:21:41] ReloadData 9
[12:21:41] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[12:21:41] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[12:21:41] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[12:21:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18760, 18761, 18762, 18763, 18764]
[12:21:43] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[12:21:43] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[12:21:43] [SEND_MESSAGE] ✅ Added optimistic message id=-23 to arrays, newMsgCount=52
[12:21:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-23, 18810, 18809, 18808, 18807]
[12:21:43] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[12:21:43] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[12:21:44] [PUSH] Silent push received
[12:21:44] [PUSH_EMBED] No embedded message_data in notification
[12:21:44] [PUSH] No embedded data, pre-loading messages from server
[12:21:44] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:21:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:21:44] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18761, 18760]
[12:21:44] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[12:21:44] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:21:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18810, AnyHashable("operation_type"): 3]
[12:21:44] [PUSH] Parsed message_id: 18810
[12:21:44] [PUSH] Parsed operation_type: 3
[12:21:44] [PUSH] Taking direct action: opType=3, messageId=18810
[12:21:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18810
[12:21:44] [CLIENT_SIG] Event received: type=0 messageId=18811
[12:21:44] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18811,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:21:43"}
[12:21:44] [WS_EVENT] Received event: type=0, messageId=18811
[12:21:44] [WS_EVENT] 📨 New message notification (msgId=18811) - triggering incremental refresh, currentMsgCount=52
[12:21:44] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 18811, "datesent_utc": 2026-01-23 11:21:43, "file_name": , "session_id": ILUIWU, "message_type": 0]
[12:21:44] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[12:21:44] [DB_UPGRADE] Upgrading message ID: -23 → 18811, preserveOriginalDate=false
[12:21:44] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18811
[12:21:44] [DB_UPGRADE] ❌ Step fail: UNIQUE constraint failed: local_messages.message_id
[12:21:44] [SEND_UPGRADE] ⚠️ DB upgrade failed, server ID 18811 not in memory yet - deleting provisional -23 from DB
[12:21:44] ReloadData 9
[12:21:44] [INCREMENTAL_SYNC] ✅ No new messages
[12:21:44] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[12:21:45] [CLIENT_SIG] Event received: type=3 messageId=18810
[12:21:45] [WS_EVENT] Received event: type=3, messageId=18810
[12:21:45] [WS_EVENT] Read receipt for message 18810 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:21:46] [LIFECYCLE] App resigning active - cleared crash flag
[12:21:46] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[12:21:46] [SECURITY] Saved background timestamp
[12:21:46] [LIFECYCLE] App entering background - cleared crash flag
[12:21:46] [CLIENT_SIG] Disconnecting
[12:21:46] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[12:21:46] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[12:21:46] In cleanupPeer
[12:21:46] In cleanupPeer
[12:21:46] [LIFECYCLE] WebRTC audio disabled
[12:21:46] [LIFECYCLE] AVAudioSession deactivated
[12:21:46] [LIFECYCLE] All connections stopped
[12:21:46] [CLIENT_SIG] WebSocket closed with code 1001
[12:21:46] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:21:46] [SERVER] Stopped reconnect polling
[12:21:46] [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:21:46] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:21:46] Will request stop of video 0
[12:21:46] Will request stop of video 0
[12:21:46] [PIP] Removing 0 tracks from PiP for connection 0
[12:21:46] [PIP] ✅ All tracks removed for connection 0
[12:21:46] [PIP] Removing 0 tracks from PiP for connection 0
[12:21:46] [PIP] ✅ All tracks removed for connection 0
[12:21:47] [PUSH] Silent push received
[12:21:47] [PUSH_EMBED] No embedded message_data in notification
[12:21:47] [PUSH] No embedded data, pre-loading messages from server
[12:21:47] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:21:47] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:21:47] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18761, 18760]
[12:21:47] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[12:21:47] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:21:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18811, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[12:21:47] [PUSH] Parsed message_id: 18811
[12:21:47] [PUSH] Parsed operation_type: 3
[12:21:47] [PUSH] Taking direct action: opType=3, messageId=18811
[12:21:47] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18811
[12:21:48] [NETWORK] Status changed: connected
[12:21:58] [PUSH] Silent push received
[12:21:58] [PUSH_EMBED] 📩 Received embedded message: id=18812, type=0, sender=Esra
[12:21:58] [PUSH_EMBED] ✅ Saved message 18812 to local DB (sync)
[12:21:58] [PUSH_EMBED] Inserted message 18812 into existing cache (now 53 messages)
[12:21:58] [PUSH_EMBED] Fetching evolution data for message 18812 in background
[12:21:58] [PUSH_EMBED] ✅ Fully processed message 18812
[12:21:58] [PUSH] Embedded message handled instantly from silent push
[12:21:58] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:21:58] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:21:58] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:21:58] [PUSH_UI] Inserted message 18812 into UI (now 53 messages)
[12:21:58] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18812, AnyHashable("message_data"): {
datesent = "2026-01-23 11:21:55";
"file_name" = "";
message = "\U2665\Ufe0f\U2665\Ufe0f";
"message_id" = 18812;
"message_type" = 0;
"prev_session_message_id" = 18811;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:21:58] [PUSH_EMBED_VC] Message 18812 already in memory - skipping
[12:21:58] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:21:58] [PUSH] Parsed message_id: 18812
[12:21:58] [PUSH] Parsed operation_type: 0
[12:21:58] [PUSH] Taking direct action: opType=0, messageId=18812
[12:21:58] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18812
[12:21:58] [PUSH] ⚡ Message 18812 already in memory - skipping duplicate notification entirely
[12:21:58] [PUSH_EMBED] Got evolution data for message 18812, saving to local DB
[12:21:58] [PUSH_EMBED] Saved evolution data for message 18812
[12:21:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18812, 18811, 18810, 18809, 18808]
[12:21:59] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18811 → 18812
[12:21:59] [CLIENT_SIG] WebSocket opened
[12:21:59] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:21:59] [CLIENT_SIG] Connected! clientId=b-MclwLnLsCCOaHZ
[12:21:59] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:21:59] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[12:21:59] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:22:01] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[12:22:01] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:22:01] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>}
[12:22:01] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:22:01] [PUSH] Silent push received
[12:22:01] [PUSH_EMBED] No embedded message_data in notification
[12:22:01] [PUSH] No embedded data, pre-loading messages from server
[12:22:01] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:22:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:22:01] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [18762, 18761, 18760]
[12:22:01] [PUSH_PRELOAD] ⚡ Pre-cached 53 messages for instant display (preserved 3 from push)
[12:22:01] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:22:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18812, AnyHashable("operation_type"): 3]
[12:22:01] [PUSH] Parsed message_id: 18812
[12:22:01] [PUSH] Parsed operation_type: 3
[12:22:01] [PUSH] Taking direct action: opType=3, messageId=18812
[12:22:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18812
[12:22:17] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:22:17] [PUSH] Silent push received
[12:22:17] [PUSH_EMBED] 📩 Received embedded message: id=18813, type=0, sender=Esra
[12:22:17] [PUSH_EMBED] ✅ Saved message 18813 to local DB (sync)
[12:22:17] [PUSH_EMBED] Inserted message 18813 into existing cache (now 54 messages)
[12:22:17] [PUSH_EMBED] Fetching evolution data for message 18813 in background
[12:22:17] [PUSH_EMBED] ✅ Fully processed message 18813
[12:22:17] [PUSH] Embedded message handled instantly from silent push
[12:22:17] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:22:17] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:22:17] [PUSH_UI] Inserted message 18813 into UI (now 54 messages)
[12:22:17] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18813, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 11:22:15";
"file_name" = "";
message = "Im surprised actually, I was thinking 2-2 \Ud83e\Udd23";
"message_id" = 18813;
"message_type" = 0;
"prev_session_message_id" = 18812;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:22:17] [PUSH_EMBED_VC] Message 18813 already in memory - skipping
[12:22:17] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:22:17] [PUSH] Parsed message_id: 18813
[12:22:17] [PUSH] Parsed operation_type: 0
[12:22:17] [PUSH] Taking direct action: opType=0, messageId=18813
[12:22:17] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18813
[12:22:17] [PUSH] ⚡ Message 18813 already in memory - skipping duplicate notification entirely
[12:22:17] [PUSH_EMBED] Got evolution data for message 18813, saving to local DB
[12:22:17] [PUSH_EMBED] Saved evolution data for message 18813
[12:22:17] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809]
[12:22:17] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18812 → 18813
[12:22:17] [CLIENT_SIG] WebSocket opened
[12:22:17] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:22:17] [CLIENT_SIG] Connected! clientId=-pot7El0Tq50__X1
[12:22:17] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:22:17] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:22:19] [SECURITY] Timeout check: elapsed=32.79767894744873s, timeout=300.0s
[12:22:19] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[12:22:19] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:22:19] [LIFECYCLE] App entering foreground - restoring connections
[12:22:19] [UPLOAD_RETRY] No pending uploads to retry
[12:22:19] [LIFECYCLE] Merged 910 reactions from local DB
[12:22:19] [LIFECYCLE] WebRTC audio re-enabled
[12:22:19] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[12:22:19] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[12:22:19] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:22:19] [VIEWER] Reconnecting after background - querying agents
[12:22:19] [FOREGROUND] 📶 Network available - retrying 1 pending messages
[12:22:19] [RETRY] 🔄 Retrying 1 pending messages...
[12:22:19] [RETRY] ⚠️ Message -21 not found in memory, removing from pending
[12:22:19] [UNSENT_RETRY] Checking for unsent messages...
[12:22:19] [PENDING_UPLOAD] Total pending upload messages: 0
[12:22:19] [UNSENT_RETRY] No unsent messages found
[12:22:19] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[12:22:19] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:22:19] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>}
[12:22:19] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:22:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809]
[12:22:19] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[12:22:19] [SECURITY] Within timeout - cleared background flag
[12:22:19] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[12:22:19] [PUSH] handlePollEventsNotification userInfo: [:]
[12:22:19] [PUSH] No message_id in userInfo
[12:22:19] [PUSH] No operation_type in userInfo
[12:22:19] [FAST_REFRESH] Evolution disabled - performing incremental sync
[12:22:19] [FAST_REFRESH] Already have 54 messages - skipping local DB load
[12:22:19] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[12:22:19] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[12:22:19] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[12:22:19] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18813
[12:22:19] [INCREMENTAL_SYNC] ✅ No new messages
[12:22:19] [FAST_REFRESH] Incremental sync complete - 54 messages
[12:22:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809]
[12:22:20] [COMBINED_FETCH] Loaded 7579 read receipts, 915 messages with reactions
[12:22:20] [FOREGROUND] Enriched 3 messages with readBy data from server
[12:22:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809]
[12:22:20] [COMBINED_FETCH] Loaded 7579 read receipts, 915 messages with reactions
[12:22:20] [FAST_REFRESH] Enriched 54 messages with readBy data
[12:22:20] [MENU] dismissAnyExistingMenu called
[12:22:20] [MENU] dismissAnyExistingMenu completed
[12:22:20] [PUSH] Silent push received
[12:22:20] [PUSH_EMBED] No embedded message_data in notification
[12:22:20] [PUSH] No embedded data, pre-loading messages from server
[12:22:20] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:22:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:22:20] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18763, 18762, 18761, 18760]
[12:22:20] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push)
[12:22:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:22:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18813, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[12:22:20] [PUSH] Parsed message_id: 18813
[12:22:20] [PUSH] Parsed operation_type: 3
[12:22:20] [PUSH] Taking direct action: opType=3, messageId=18813
[12:22:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18813
[12:22:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809]
[12:22:23] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:22:23] [CLIENT_SIG] Cannot send typing_start - not connected
[12:22:23] [CLIENT_SIG] WebSocket opened
[12:22:23] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:22:23] [CLIENT_SIG] Connected! clientId=02JiUHPng7pqB2bJ
[12:22:23] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:22:23] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:22:47] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[12:22:47] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false
[12:22:47] [SEND_MESSAGE] ✅ Added optimistic message id=-24 to arrays, newMsgCount=55
[12:22:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-24, 18813, 18812, 18811, 18810]
[12:22:47] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[12:22:47] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[12:22:48] [LIFECYCLE] App resigning active - cleared crash flag
[12:22:48] [CLIENT_SIG] Event received: type=0 messageId=18814
[12:22:48] [WS_EVENT] Received event: type=0, messageId=18814
[12:22:48] [WS_EVENT] 📨 New message notification (msgId=18814) - triggering incremental refresh, currentMsgCount=55
[12:22:48] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[12:22:48] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18814,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:22:47"}
[12:22:48] [CHAT] receive_message.php JSON: ["ok": 1, "datesent_utc": 2026-01-23 11:22:47, "message_type": 0, "file_name": , "session_id": ILUIWU, "message_id": 18814]
[12:22:48] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18813
[12:22:48] [DB_UPGRADE] Upgrading message ID: -24 → 18814, preserveOriginalDate=false
[12:22:49] [DB_UPGRADE] ✅ Upgraded -24 → 18814 with send_status=0, 1 row(s) affected
[12:22:49] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -24 → 18814
[12:22:49] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -24 → 18814
[12:22:49] ReloadData 9
[12:22:49] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[12:22:49] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[12:22:49] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[12:22:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18760, 18761, 18762, 18763, 18764]
[12:22:49] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[12:22:49] [SECURITY] Saved background timestamp
[12:22:49] [LIFECYCLE] App entering background - cleared crash flag
[12:22:49] [CLIENT_SIG] Disconnecting
[12:22:49] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[12:22:49] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[12:22:49] In cleanupPeer
[12:22:49] In cleanupPeer
[12:22:49] [LIFECYCLE] WebRTC audio disabled
[12:22:49] [LIFECYCLE] AVAudioSession deactivated
[12:22:49] [LIFECYCLE] All connections stopped
[12:22:49] [CLIENT_SIG] WebSocket closed with code 1001
[12:22:49] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:22:49] [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:22:49] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:22:49] [SERVER] Stopped reconnect polling
[12:22:49] Will request stop of video 0
[12:22:49] Will request stop of video 0
[12:22:49] [PIP] Removing 0 tracks from PiP for connection 0
[12:22:49] [PIP] ✅ All tracks removed for connection 0
[12:22:49] [PIP] Removing 0 tracks from PiP for connection 0
[12:22:49] [PIP] ✅ All tracks removed for connection 0
[12:30:08] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:30:08] [PUSH] Notification tapped - session_id: ILUIWU
[12:30:08] [PUSH] Max message_id before tap: 18814
[12:30:08] [PUSH] Stored pending session: ILUIWU
[12:30:08] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra
[12:30:08] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync)
[12:30:08] [PUSH_EMBED] Created new cache with embedded message 18815
[12:30:08] [PUSH_EMBED] Fetching evolution data for message 18815 in background
[12:30:08] [PUSH_EMBED] ✅ Fully processed message 18815
[12:30:08] [PUSH] Embedded message handled instantly on tap
[12:30:08] [PUSH] Fetching server messages since_id=18814 to catch coalesced notifications on tap
[12:30:08] [SECURITY] Timeout check: elapsed=438.7526659965515s, timeout=300.0s
[12:30:08] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18814 to catch coalesced notifications
[12:30:08] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[12:30:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:30:08] [AUTH] ✅ All guards passed, showing privacy cover
[12:30:08] [LIFECYCLE] App entering foreground - restoring connections
[12:30:08] [LIFECYCLE] Away > 2 minutes (438s) - will scroll to bottom
[12:30:08] [UPLOAD_RETRY] No pending uploads to retry
[12:30:08] [LIFECYCLE] Merged 910 reactions from local DB
[12:30:08] [LIFECYCLE] WebRTC audio re-enabled
[12:30:08] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[12:30:08] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[12:30:08] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:30:08] [VIEWER] Reconnecting after background - querying agents
[12:30:08] [UNSENT_RETRY] Checking for unsent messages...
[12:30:08] [PENDING_UPLOAD] Total pending upload messages: 0
[12:30:08] [UNSENT_RETRY] No unsent messages found
[12:30:08] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:30:08] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:30:08] [PUSH_UI] Inserted message 18815 into UI (now 56 messages)
[12:30:08] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[12:30:08] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB
[12:30:08] [PUSH_EMBED] Saved evolution data for message 18815
[12:30:08] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[12:30:08] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push)
[12:30:08] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:30:08] [PUSH] Server fetch on tap completed (success=true)
[12:30:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18815, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 11:30:03";
"file_name" = "";
message = "Thank you my loooove\U2665\Ufe0f";
"message_id" = 18815;
"message_type" = 0;
"prev_session_message_id" = 18814;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[12:30:08] [PUSH_EMBED_VC] Message 18815 already in memory - skipping
[12:30:08] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:30:08] [PUSH] Parsed message_id: 18815
[12:30:08] [PUSH] Parsed operation_type: 0
[12:30:08] [PUSH] Taking direct action: opType=0, messageId=18815
[12:30:08] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815
[12:30:08] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely
[12:30:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763]
[12:30:08] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18814 → 18815
[12:30:08] [CLIENT_SIG] WebSocket opened
[12:30:08] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[12:30:08] [CLIENT_SIG] Connected! clientId=-szxfPRASEeC21RJ
[12:30:08] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[12:30:08] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:30:08] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[12:30:08] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[12:30:08] [PUSH] handlePollEventsNotification userInfo: [:]
[12:30:08] [PUSH] No message_id in userInfo
[12:30:08] [PUSH] No operation_type in userInfo
[12:30:08] [FAST_REFRESH] Evolution disabled - performing incremental sync
[12:30:08] [FAST_REFRESH] Already have 56 messages - skipping local DB load
[12:30:08] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[12:30:08] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[12:30:08] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56
[12:30:08] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815
[12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763]
[12:30:09] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions
[12:30:09] [FOREGROUND] Enriched 2 messages with readBy data from server
[12:30:09] [INCREMENTAL_SYNC] ✅ No new messages
[12:30:09] [FAST_REFRESH] Incremental sync complete - 56 messages
[12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763]
[12:30:09] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions
[12:30:09] [FAST_REFRESH] Enriched 56 messages with readBy data
[12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763]
[12:30:09] [PUSH] Silent push received
[12:30:09] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra
[12:30:09] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync)
[12:30:09] [PUSH_EMBED] Created new cache with embedded message 18815
[12:30:09] [PUSH_EMBED] Fetching evolution data for message 18815 in background
[12:30:09] [PUSH_EMBED] ✅ Fully processed message 18815
[12:30:09] [PUSH] Embedded message handled instantly from silent push
[12:30:09] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:30:09] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:30:09] [PUSH_UI] Message 18815 already in memory - skipping insert
[12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18815, AnyHashable("message_data"): {
datesent = "2026-01-23 11:30:03";
"file_name" = "";
message = "Thank you my loooove\U2665\Ufe0f";
"message_id" = 18815;
"message_type" = 0;
"prev_session_message_id" = 18814;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
[12:30:09] [PUSH_EMBED_VC] Message 18815 already in memory - skipping
[12:30:09] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:30:09] [PUSH] Parsed message_id: 18815
[12:30:09] [PUSH] Parsed operation_type: 0
[12:30:09] [PUSH] Taking direct action: opType=0, messageId=18815
[12:30:09] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815
[12:30:09] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely
[12:30:09] [PUSH] Silent push received
[12:30:09] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra
[12:30:09] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB
[12:30:09] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync)
[12:30:09] [PUSH_EMBED] Created new cache with embedded message 18815
[12:30:09] [PUSH_EMBED] Fetching evolution data for message 18815 in background
[12:30:09] [PUSH_EMBED] ✅ Fully processed message 18815
[12:30:09] [PUSH] Embedded message handled instantly from silent push
[12:30:09] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[12:30:09] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[12:30:09] [PUSH_UI] Message 18815 already in memory - skipping insert
[12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18815, AnyHashable("message_data"): {
datesent = "2026-01-23 11:30:03";
"file_name" = "";
message = "Thank you my loooove\U2665\Ufe0f";
"message_id" = 18815;
"message_type" = 0;
"prev_session_message_id" = 18814;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
[12:30:09] [PUSH_EMBED_VC] Message 18815 already in memory - skipping
[12:30:09] [PUSH] ⚡ Embedded message handled directly in ViewController
[12:30:09] [PUSH] Parsed message_id: 18815
[12:30:09] [PUSH] Parsed operation_type: 0
[12:30:09] [PUSH] Taking direct action: opType=0, messageId=18815
[12:30:09] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815
[12:30:09] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely
[12:30:09] [PUSH_EMBED] Saved evolution data for message 18815
[12:30:09] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB
[12:30:09] [PUSH] Silent push received
[12:30:09] [PUSH_EMBED] No embedded message_data in notification
[12:30:09] [PUSH] No embedded data, pre-loading messages from server
[12:30:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[12:30:09] [PUSH_EMBED] Saved evolution data for message 18815
[12:30:09] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[12:30:09] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[12:30:09] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18815, AnyHashable("session_id"): ILUIWU]
[12:30:09] [PUSH] Parsed message_id: 18815
[12:30:09] [PUSH] Parsed operation_type: 3
[12:30:09] [PUSH] Taking direct action: opType=3, messageId=18815
[12:30:09] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18815
[12:30:10] [CLIENT_SIG] Event received: type=3 messageId=18815
[12:30:10] [WS_EVENT] Received event: type=3, messageId=18815
[12:30:10] [WS_EVENT] Read receipt for message 18815 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[12:30:10] [PIN_AUTH] Correct PIN
[12:30:10] [SECURITY] Restored real session: ILUIWU
[12:30:10] [SECURITY] Restored real session: ILUIWU
[12:30:10] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[12:30:10] [AUTH] Cache had 50 messages, maxExistingId=18815, inserted 0 truly new
[12:30:10] [AUTH] UI update complete
[12:30:10] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[12:30:10] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[12:30:10] [FAKE MODE] Exiting fake mode, restoring real session
[12:30:10] [SECURITY] Restored real session: ILUIWU
[12:30:10] [SECURITY] Saved real session: ILUIWU
[12:30:10] [FAKE MODE] ✅ Restored real session: ILUIWU
[12:30:10] [FAKE MODE] Loaded 50 messages (limited to page size)
[12:30:10] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[12:30:10] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[12:30:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[12:30:10] [USER] ✅ User registered successfully
[12:30:10] [PUSH] User registration after token update: success
[12:30:11] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions
[12:30:11] [FAKE MODE] Enriched 50 messages with readBy data
[12:30:11] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[12:30:13] [LOCK] Lock button tapped - locking app immediately
[12:30:13] [LOCK] Received lock app notification
[12:30:14] [LIFECYCLE] App resigning active - cleared crash flag
[12:30:15] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[12:30:15] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[12:30:15] [LIFECYCLE] App entering background - cleared crash flag
[12:30:15] [CLIENT_SIG] Disconnecting
[12:30:15] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[12:30:15] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[12:30:15] In cleanupPeer
[12:30:15] In cleanupPeer
[12:30:15] [LIFECYCLE] WebRTC audio disabled
[12:30:15] [LIFECYCLE] AVAudioSession deactivated
[12:30:15] [LIFECYCLE] All connections stopped
[12:30:15] [CLIENT_SIG] WebSocket closed with code 1001
[12:30:15] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[12:30:15] [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:30:15] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[12:30:15] [SERVER] Stopped reconnect polling
[12:30:15] Will request stop of video 0
[12:30:15] Will request stop of video 0
[12:30:15] [PIP] Removing 0 tracks from PiP for connection 0
[12:30:15] [PIP] ✅ All tracks removed for connection 0
[12:30:15] [PIP] Removing 0 tracks from PiP for connection 0
[12:30:15] [PIP] ✅ All tracks removed for connection 0
[13:36:52] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[13:36:52] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:36:52] [LIFECYCLE] App entering foreground - restoring connections
[13:36:52] [LIFECYCLE] Away > 2 minutes (3997s) - will scroll to bottom
[13:36:52] [UPLOAD_RETRY] No pending uploads to retry
[13:36:52] [LIFECYCLE] Merged 910 reactions from local DB
[13:36:52] [LIFECYCLE] WebRTC audio re-enabled
[13:36:52] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[13:36:52] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[13:36:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:36:52] [VIEWER] Reconnecting after background - querying agents
[13:36:52] [UNSENT_RETRY] Checking for unsent messages...
[13:36:52] [PENDING_UPLOAD] Total pending upload messages: 0
[13:36:52] [UNSENT_RETRY] No unsent messages found
[13:36:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:36:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:36:53] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[13:36:53] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[13:36:53] [PUSH] handlePollEventsNotification userInfo: [:]
[13:36:53] [PUSH] No message_id in userInfo
[13:36:53] [PUSH] No operation_type in userInfo
[13:36:53] [FAST_REFRESH] Evolution disabled - performing incremental sync
[13:36:53] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[13:36:53] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[13:36:53] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[13:36:53] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[13:36:53] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815
[13:36:53] [CLIENT_SIG] WebSocket opened
[13:36:53] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[13:36:53] [CLIENT_SIG] Connected! clientId=0EEXppKLrxjWoDyW
[13:36:53] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[13:36:53] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:36:53] [INCREMENTAL_SYNC] ✅ No new messages
[13:36:53] [FAST_REFRESH] Incremental sync complete - 50 messages
[13:36:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:36:53] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions
[13:36:53] [FOREGROUND] Enriched 0 messages with readBy data from server
[13:36:53] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions
[13:36:53] [FAST_REFRESH] Enriched 50 messages with readBy data
[13:36:53] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:36:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770][13:36:54] [LOG] Pruned 230 entries older than 3 hours
[13:36:54] [SECURITY] Restored real session: ILUIWU
[13:36:54] [SECURITY] Restored real session: ILUIWU
[13:36:54] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[13:36:54] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[13:36:54] [AUTH] UI update complete
[13:36:54] [FAKE MODE] Exiting fake mode, restoring real session
[13:36:54] [SECURITY] Restored real session: ILUIWU
[13:36:54] [SECURITY] Saved real session: ILUIWU
[13:36:54] [FAKE MODE] ✅ Restored real session: ILUIWU
[13:36:54] [FAKE MODE] Loaded 50 messages (limited to page size)
[13:36:54] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[13:36:54] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:36:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:36:54] [USER] ✅ User registered successfully
[13:36:54] [PUSH] User registration after token update: success
[13:36:55] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions
[13:36:55] [FAKE MODE] Enriched 50 messages with readBy data
[13:36:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:36:57] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[13:36:57] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[13:36:57] [SEND_MESSAGE] ✅ Added optimistic message id=-25 to arrays, newMsgCount=51
[13:36:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-25, 18815, 18814, 18813, 18812]
[13:36:57] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[13:36:57] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[13:36:58] [CLIENT_SIG] Event received: type=0 messageId=18816
[13:36:58] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18816,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 12:36:57"}
[13:36:58] [WS_EVENT] Received event: type=0, messageId=18816
[13:36:58] [WS_EVENT] 📨 New message notification (msgId=18816) - triggering incremental refresh, currentMsgCount=51
[13:36:58] [CHAT] receive_message.php JSON: ["message_id": 18816, "message_type": 0, "ok": 1, "datesent_utc": 2026-01-23 12:36:57, "file_name": , "session_id": ILUIWU]
[13:36:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:36:58] [DB_UPGRADE] Upgrading message ID: -25 → 18816, preserveOriginalDate=false
[13:36:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815
[13:36:58] [DB_UPGRADE] ✅ Upgraded -25 → 18816 with send_status=0, 1 row(s) affected
[13:36:58] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -25 → 18816
[13:36:58] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -25 → 18816
[13:36:58] ReloadData 9
[13:36:58] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[13:36:58] [LOCK] Lock button tapped - locking app immediately
[13:36:58] [LOCK] Received lock app notification
[13:36:58] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[13:36:58] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[13:36:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:36:58] [LIFECYCLE] App resigning active - cleared crash flag
[13:36:59] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[13:36:59] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[13:36:59] [LIFECYCLE] App entering background - cleared crash flag
[13:36:59] [CLIENT_SIG] Disconnecting
[13:36:59] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[13:36:59] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[13:36:59] In cleanupPeer
[13:36:59] In cleanupPeer
[13:36:59] [LIFECYCLE] WebRTC audio disabled
[13:36:59] [LIFECYCLE] AVAudioSession deactivated
[13:36:59] [LIFECYCLE] All connections stopped
[13:37:00] [CLIENT_SIG] WebSocket closed with code 1001
[13:37:00] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[13:37:00] [SERVER] Stopped reconnect polling
[13:37:00] Will request stop of video 0
[13:37:00] Will request stop of video 0
[13:37:00] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[13:37:00] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[13:37:00] [PIP] Removing 0 tracks from PiP for connection 0
[13:37:00] [PIP] ✅ All tracks removed for connection 0
[13:37:00] [PIP] Removing 0 tracks from PiP for connection 0
[13:37:00] [PIP] ✅ All tracks removed for connection 0
[13:38:34] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:38:34] [PUSH] Notification tapped - session_id: ILUIWU
[13:38:34] [PUSH] Max message_id before tap: 18816
[13:38:34] [PUSH] Stored pending session: ILUIWU
[13:38:34] [PUSH_EMBED] 📩 Received embedded message: id=18817, type=0, sender=Esra
[13:38:34] [PUSH_EMBED] ✅ Saved message 18817 to local DB (sync)
[13:38:34] [PUSH_EMBED] Created new cache with embedded message 18817
[13:38:34] [PUSH_EMBED] Fetching evolution data for message 18817 in background
[13:38:34] [PUSH_EMBED] ✅ Fully processed message 18817
[13:38:34] [PUSH] Embedded message handled instantly on tap
[13:38:34] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[13:38:34] [PUSH] Fetching server messages since_id=18816 to catch coalesced notifications on tap
[13:38:34] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:38:34] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18816 to catch coalesced notifications
[13:38:34] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:38:34] [LIFECYCLE] App entering foreground - restoring connections
[13:38:34] [UPLOAD_RETRY] No pending uploads to retry
[13:38:34] [LIFECYCLE] Merged 910 reactions from local DB
[13:38:34] [LIFECYCLE] WebRTC audio re-enabled
[13:38:34] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[13:38:34] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[13:38:34] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:38:34] [VIEWER] Reconnecting after background - querying agents
[13:38:34] [UNSENT_RETRY] Checking for unsent messages...
[13:38:34] [PENDING_UPLOAD] Total pending upload messages: 0
[13:38:34] [UNSENT_RETRY] No unsent messages found
[13:38:34] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[13:38:34] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[13:38:34] [PUSH_UI] Inserted message 18817 into UI (now 52 messages)
[13:38:34] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:38:34] [PUSH_EMBED] Got evolution data for message 18817, saving to local DB
[13:38:34] [PUSH_EMBED] Saved evolution data for message 18817
[13:38:34] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[13:38:34] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push)
[13:38:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:38:34] [PUSH] Server fetch on tap completed (success=true)
[13:38:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 12:38:29";
"file_name" = "";
message = "I didn\U2019t know I had so many options \Ud83d\Ude43";
"message_id" = 18817;
"message_type" = 0;
"prev_session_message_id" = 18816;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18817, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[13:38:34] [PUSH_EMBED_VC] Message 18817 already in memory - skipping
[13:38:34] [PUSH] ⚡ Embedded message handled directly in ViewController
[13:38:34] [PUSH] Parsed message_id: 18817
[13:38:34] [PUSH] Parsed operation_type: 0
[13:38:34] [PUSH] Taking direct action: opType=0, messageId=18817
[13:38:34] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18817
[13:38:34] [PUSH] ⚡ Message 18817 already in memory - skipping duplicate notification entirely
[13:38:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18817, 18766, 18767, 18768, 18769]
[13:38:34] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18816 → 18817
[13:38:34] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[13:38:34] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[13:38:34] [PUSH] handlePollEventsNotification userInfo: [:]
[13:38:34] [PUSH] No message_id in userInfo
[13:38:34] [PUSH] No operation_type in userInfo
[13:38:34] [FAST_REFRESH] Evolution disabled - performing incremental sync
[13:38:34] [FAST_REFRESH] Already have 52 messages - skipping local DB load
[13:38:34] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[13:38:34] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[13:38:34] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[13:38:34] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18817
[13:38:34] [CLIENT_SIG] WebSocket opened
[13:38:34] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[13:38:34] [CLIENT_SIG] Connected! clientId=KgmJIae2jJUv843M
[13:38:34] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[13:38:34] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[13:38:34] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:38:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18817, 18766, 18767, 18768, 18769]
[13:38:34] [INCREMENTAL_SYNC] ✅ No new messages
[13:38:34] [FAST_REFRESH] Incremental sync complete - 52 messages
[13:38:35] [CLIENT_SIG] Event received: type=0 messageId=18818
[13:38:35] [WS_EVENT] Received event: type=0, messageId=18818
[13:38:35] [WS_EVENT] 📨 New message notification (msgId=18818) - triggering incremental refresh, currentMsgCount=52
[13:38:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[13:38:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18817
[13:38:35] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[13:38:35] DOWNLOADIIING t_933944ecb2d8adc3.jpg
[13:38:35] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[13:38:35] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[13:38:35] [COMBINED_FETCH] Loaded 7583 read receipts, 916 messages with reactions
[13:38:35] [FOREGROUND] Enriched 2 messages with readBy data from server
[13:38:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:38:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:35] [CELL_UPLOAD] → not my message, setting complete
[13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:35] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18817 → 18818
[13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:35] [CELL_UPLOAD] → not my message, setting complete
[13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:35] DOWNLOADIIING 933944ecb2d8adc3.heic
[13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:35] [COMBINED_FETCH] Loaded 7583 read receipts, 916 messages with reactions
[13:38:35] [FAST_REFRESH] Enriched 52 messages with readBy data
[13:38:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18766, 18767, 18768, 18769, 18770]
[13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:35] [CELL_UPLOAD] → not my message, setting complete
[13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:35] [CELL_UPLOAD] → not my message, setting complete
[13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:36] [PUSH] Silent push received
[13:38:36] [PUSH_EMBED] No embedded message_data in notification
[13:38:36] [PUSH] No embedded data, pre-loading messages from server
[13:38:36] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:38:36] [PUSH] Silent push received
[13:38:36] [PUSH_EMBED] No embedded message_data in notification
[13:38:36] [PUSH] No embedded data, pre-loading messages from server
[13:38:36] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:38:36] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:38:36] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:38:36] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:38:36] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:38:36] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:38:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18817, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[13:38:36] [PUSH] Parsed message_id: 18817
[13:38:36] [PUSH] Parsed operation_type: 3
[13:38:36] [PUSH] Taking direct action: opType=3, messageId=18817
[13:38:36] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18817
[13:38:36] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:38:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18817, AnyHashable("aps"): {
"content-available" = 1;
}]
[13:38:36] [PUSH] Parsed message_id: 18817
[13:38:36] [PUSH] Parsed operation_type: 3
[13:38:36] [PUSH] Taking direct action: opType=3, messageId=18817
[13:38:36] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18817
[13:38:36] [CLIENT_SIG] Event received: type=3 messageId=18817
[13:38:36] [WS_EVENT] Received event: type=3, messageId=18817
[13:38:36] [WS_EVENT] Read receipt for message 18817 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:38:37] [PIN_AUTH] Correct PIN
[13:38:37] [SECURITY] Restored real session: ILUIWU
[13:38:37] [SECURITY] Restored real session: ILUIWU
[13:38:37] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[13:38:37] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[13:38:37] [AUTH] Cache had 50 messages, maxExistingId=18818, inserted 0 truly new
[13:38:37] [AUTH] UI update complete
[13:38:37] [FAKE MODE] Exiting fake mode, restoring real session
[13:38:37] [SECURITY] Restored real session: ILUIWU
[13:38:37] [SECURITY] Saved real session: ILUIWU
[13:38:37] [FAKE MODE] ✅ Restored real session: ILUIWU
[13:38:37] [FAKE MODE] Loaded 50 messages (limited to page size)
[13:38:37] [PUSH] Silent push received
[13:38:37] [PUSH_EMBED] No embedded message_data in notification
[13:38:37] [PUSH] No embedded data, pre-loading messages from server
[13:38:37] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:38:37] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:37] [CELL_UPLOAD] → not my message, setting complete
[13:38:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:38:37] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:37] [CELL_UPLOAD] → not my message, setting complete
[13:38:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:38] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[13:38:38] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:38:38] [CLIENT_SIG] Event received: type=3 messageId=18818
[13:38:38] [WS_EVENT] Received event: type=3, messageId=18818
[13:38:38] [WS_EVENT] Read receipt for message 18818 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:38:38] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 12:38:38 +0000 - type: unknown, operation_type: 0, message_id: 18818, session_id: ILUIWU, state: 0
[13:38:38] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818]
[13:38:38] [PUSH] App active - suppressing notification UI, posting internal event
[13:38:38] [PUSH_EMBED] No embedded message_data in notification
[13:38:38] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818]
[13:38:38] [PUSH] Parsed message_id: 18818
[13:38:38] [PUSH] Parsed operation_type: 0
[13:38:38] [PUSH] Taking direct action: opType=0, messageId=18818
[13:38:38] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18818
[13:38:38] [PUSH] ⚡ Message 18818 already in memory - skipping duplicate notification entirely
[13:38:38] [PUSH] Silent push received
[13:38:38] [PUSH_EMBED] No embedded message_data in notification
[13:38:38] [PUSH] No embedded data, pre-loading messages from server
[13:38:38] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:38:38] [USER] ✅ User registered successfully
[13:38:38] [PUSH] User registration after token update: success
[13:38:38] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:38:38] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:38:38] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:38:38] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18818]
[13:38:38] [PUSH] Parsed message_id: 18818
[13:38:38] [PUSH] Parsed operation_type: 3
[13:38:38] [PUSH] Taking direct action: opType=3, messageId=18818
[13:38:38] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18818
[13:38:38] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:38:39] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:38:39] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:38:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818]
[13:38:39] [PUSH] Parsed message_id: 18818
[13:38:39] [PUSH] Parsed operation_type: 0
[13:38:39] [PUSH] Taking direct action: opType=0, messageId=18818
[13:38:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18818
[13:38:39] [PUSH] ⚡ Message 18818 already in memory - skipping duplicate notification entirely
[13:38:39] [COMBINED_FETCH] Loaded 7584 read receipts, 916 messages with reactions
[13:38:39] [FAKE MODE] Enriched 50 messages with readBy data
[13:38:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:38:39] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:39] [CELL_UPLOAD] → not my message, setting complete
[13:38:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:38:39] [MENU] dismissAnyExistingMenu called
[13:38:39] [MENU] dismissAnyExistingMenu completed
[13:38:46] [LOG] Long press on chat icon detected! Triggering log upload...
[13:38:50] [LOG] Uploading log as '2026-01-23-13-38-media-unavailable-Laurent.log' (288 KB) to server...
[13:38:51] [LOG] Upload HTTP status: 200
[13:38:51] [LOG] Upload successful: 2026-01-23-13-38-media-unavailable-Laurent.log
[13:38:51] [LOG] Skipping cross-device log request (description doesn't end with '2')
[13:38:53] [MENU] dismissAnyExistingMenu called
[13:38:53] [MENU] dismissAnyExistingMenu completed
[13:38:53] [SCROLL_BTN] Showing button - 395pt from bottom > half 379pt
[13:38:54] [MENU] dismissAnyExistingMenu called
[13:38:54] [MENU] dismissAnyExistingMenu completed
[13:38:55] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:38:55] [CELL_UPLOAD] → not my message, setting complete
[13:38:55] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:02] [LIFECYCLE] App resigning active - cleared crash flag
[13:39:03] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[13:39:03] [SECURITY] Saved background timestamp
[13:39:03] [LIFECYCLE] App entering background - cleared crash flag
[13:39:03] [CLIENT_SIG] Disconnecting
[13:39:03] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[13:39:03] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[13:39:03] In cleanupPeer
[13:39:03] In cleanupPeer
[13:39:04] [CRASH] No crash detected
[13:39:04] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[13:39:04] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[13:39:04] [GIPHY] SDK not available - using REST API fallback
[13:39:04] [BACKGROUND] Background fetch enabled
[13:39:04] [CLEANUP] No old timer messages to delete
[13:39:04] [SECURITY] Initial launch - within timeout (1.3719730377197266s < 300.0s)
[13:39:04] [AUTH] Starting PIN authentication
[13:39:04] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[13:39:04] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:39:04] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[13:39:04] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[13:39:04] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:39:04] [USER] ✅ User registered successfully
[13:39:04] [PUSH] User registration after token update: success
[13:39:04] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[13:39:04] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[13:39:04] [CLIENT_SIG] WebSocket opened
[13:39:04] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[13:39:04] [CLIENT_SIG] Connected! clientId=utKhvAsVJm--jwbJ
[13:39:04] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[13:39:04] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[13:39:04] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:39:04] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18818)...
[13:39:04] [PRELOAD] No messages or parse error
[13:39:06] [PIN_AUTH] Correct PIN
[13:39:06] [SECURITY] Restored real session: ILUIWU
[13:39:06] [SECURITY] Restored real session: ILUIWU
[13:39:06] [SECURITY] Saved real session: ILUIWU
[13:39:06] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[13:39:06] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[13:39:06] Documents Directory: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents
[13:39:06] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[13:39:06] [THEME] Applying current theme
[13:39:06] [CHAT] Applied day theme (mode: day)
[13:39:06] [SECURITY] Saved real session: ILUIWU
[13:39:06] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[13:39:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:39:06] [NETWORK] Network monitor started
[13:39:06] [NETWORK] Status changed: connected
[13:39:06] Did transition
[13:39:06] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[13:39:06] [VIEWER] Screen lock enabled - normal idle behavior
[13:39:06] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[13:39:06] [VCC] ========== VideoConnectionClass INIT ==========
[13:39:06] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[13:39:06] [DATA AUDIO] ========== setupWebRTC() START ==========
[13:39:06] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[13:39:06] [DATA AUDIO] Creating encoder/decoder factories...
[13:39:06] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[13:39:06] [CODEC] Viewer selected encoder: AV1 (best quality)
[13:39:06] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[13:39:06] [DATA AUDIO] ✅ Factory created
[13:39:06] [DATA AUDIO] RTCAudioSession locked
[13:39:06] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[13:39:06] [DATA AUDIO] RTCAudioSession unlocked
[13:39:06] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[13:39:06] [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"]
[13:39:06] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[13:39:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:39:06] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[13:39:06] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[13:39:06] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[13:39:06] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[13:39:06] Did transition
[13:39:06] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[13:39:06] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:39:06] [CHUNK] Merged 910 reactions synchronously
[13:39:06] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:39:06] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[13:39:06] [MIGRATION] No messages need sender_name backfill
[13:39:06] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[13:39:06] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[13:39:06] [GALLERY_DB] Raw datesent for msg 18788: '2026-01-23 08:03:10'
[13:39:06] [GALLERY_DB] Raw datesent for msg 18774: '2026-01-23 07:20:49'
[13:39:06] [USER] ✅ User registered successfully
[13:39:06] [USER] User registration successful
[13:39:06] [GALLERY_DB] ✅ Loaded 488 media messages
[13:39:06] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18818
[13:39:06] [INCREMENTAL_SYNC] ✅ No new messages
[13:39:06] [GALLERY] Filtered 488 -> 447 (only with local thumbnails)
[13:39:06] [GALLERY] First 5 after sort (newest first):
[13:39:06] [GALLERY] 0: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[13:39:06] [GALLERY] 1: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[13:39:06] [GALLERY] 2: id=18772, date=2026-01-23 07:20:17, file=c50bfdf58c1dbca1.jpg
[13:39:06] [GALLERY] 3: id=18766, date=2026-01-23 01:00:51, file=50454b71bb7535b3.png
[13:39:06] [GALLERY] 4: id=18747, date=2026-01-22 16:16:30, file=17758c02b0ac471a.jpg
[13:39:06] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[13:39:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:39:06] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[13:39:06] [CELL_UPLOAD] configure: msgId=18772, file=c50bfdf58c1dbca1.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:39:06] [CELL_UPLOAD] → not my message, setting complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c50bfdf58c1dbca1.jpg, overlayExists=true
[13:39:06] [CELL_UPLOAD] configure: msgId=18774, file=04b759bdc230eb2c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[13:39:06] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=04b759bdc230eb2c.jpg, overlayExists=true
[13:39:06] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:39:06] [CELL_UPLOAD] → not my message, setting complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:06] [SERVER] Starting reconnect polling (5s interval)
[13:39:06] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[13:39:06] [ICONS] Offset applied: -14.6
[13:39:06] [ICONS] New left margin: 11.2, New right margin: 11.3
[13:39:06] [ICONS] Chat center: (31.2, 87.0)
[13:39:06] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[13:39:06] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[13:39:06] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[13:39:06] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[13:39:06] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[13:39:06] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[13:39:06] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[13:39:06] [ICONS] Screen width: 440.0
[13:39:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:39:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[13:39:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[13:39:06] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[13:39:06] DOWNLOADIIING t_933944ecb2d8adc3.jpg
[13:39:06] DOWNLOADIIING 933944ecb2d8adc3.heic
[13:39:06] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[13:39:06] [UNSENT_RETRY] Checking for unsent messages...
[13:39:06] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[13:39:06] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[13:39:06] [UPLOAD_RECOVERY] Session: ILUIWU
[13:39:06] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[13:39:06] [UPLOAD_RECOVERY] Checking recent media messages on server...
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18774, file=04b759bdc230eb2c.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18747, file=17758c02b0ac471a.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18661, file=fca62dfbaa62895a.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18622, file=87d86493734492b6.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18578, file=6987f51080ccbfa1.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18569, file=61efa5413baa75e8.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18547, file=bb6aaa84326f734e.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18510, file=b3cad86fff0afa3d.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18507, file=e8d737bd34c51935.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18501, file=74c06e97f0a4db49.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18489, file=747d4f2026039fc3.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18428, file=f36a462089f1685a.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18409, file=f733dc0a9f704916.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18407, file=7494d317859e38fb.jpg, upload_status=complete
[13:39:06] [UPLOAD_RECOVERY] Verifying 14 media files exist on server...
[13:39:06] [PENDING_UPLOAD] Total pending upload messages: 0
[13:39:06] [UNSENT_RETRY] No unsent messages found
[13:39:06] [MEDIA_DOWNLOAD] ✅ t_933944ecb2d8adc3.jpg complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:06] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 933944ecb2d8adc3.heic from downloaded: t_933944ecb2d8adc3.jpg
[13:39:06] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:39:06] [CELL_UPLOAD] → not my message, setting complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:06] new_session POST ok: token len=157
[13:39:06] HELLO → sent (fetched token, role=query)
[13:39:06] [SIG] hello_ok received for query connection - ready to query agents
[13:39:06] [SIG] get_agents request sent for sessionId=ILUIWU
[13:39:06] [SIG] get_agents request sent for sessionId=iosILUIWU
[13:39:06] [SERVER] Stopped reconnect polling
[13:39:06] [SIG] agents_list received: []
[13:39:06] [SIG] agents_list received: []
[13:39:06] [UPLOAD_RECOVERY] ✅ All media files verified on server
[13:39:06] [MEDIA_DOWNLOAD] ✅ 933944ecb2d8adc3.heic complete
[13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:06] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 933944ecb2d8adc3.heic from downloaded: 933944ecb2d8adc3.heic
[13:39:07] [COMBINED_FETCH] Loaded 7584 read receipts, 916 messages with reactions
[13:39:07] [READBY_ENRICH] Enriched 50 messages with readBy data
[13:39:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:39:07] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:39:07] [CELL_UPLOAD] → not my message, setting complete
[13:39:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:39:07] [MENU] dismissAnyExistingMenu called
[13:39:07] [MENU] dismissAnyExistingMenu completed
[13:39:10] [LOG] Long press on chat icon detected! Triggering log upload...
[13:39:10] [SCROLL_BTN] Showing button - 299pt from bottom > half 223pt
[13:39:13] [LOG] Uploading log as '2026-01-23-13-39-media-Laurent.log' (303 KB) to server...
[13:39:14] [SCROLL_BTN] Showing button - 308pt from bottom > half 223pt
[13:39:14] [LOG] Upload HTTP status: 200
[13:39:14] [LOG] Upload successful: 2026-01-23-13-39-media-Laurent.log
[13:39:14] [LOG] Skipping cross-device log request (description doesn't end with '2')
[13:39:15] [SCROLL_BTN] Showing button - 307pt from bottom > half 223pt
[13:39:16] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[13:39:16] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[13:39:16] [TAP_REPLAY] 🔄 replayEvolutionAnimation called for messageId=18816
[13:39:16] [TAP_REPLAY] 📦 Found message: text.count=1, evolutionData.isEmpty=true
[13:39:16] [TAP_REPLAY] 📡 No local evolution data - fetching from server
[13:39:16] [TAP_REPLAY] 🔍 Server response keys: ["created_at", "evolution", "has_evolution", "message_id", "ok"]
[13:39:16] [TAP_REPLAY] ✅ Successfully fetched 7 events from server - calling playEvolutionInline
[13:39:17] [EVOLUTION] 🎬 playEvolutionInline called for message 18816 with 7 events
[13:39:17] [EVOLUTION] 🎭 Single character final result BUT 7 events - showing evolution anyway
[13:39:17] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:17] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:17] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:17] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText=' ', text='😘'
[13:39:17] [UPDATE_CELL] ✅ Updating ChatCell label to: ' '
[13:39:17] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:17] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:17] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:17] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='K', text='😘'
[13:39:17] [UPDATE_CELL] ✅ Updating ChatCell label to: 'K'
[13:39:17] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:17] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:17] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:17] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Ki', text='😘'
[13:39:17] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Ki'
[13:39:17] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:17] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:17] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:17] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Kis', text='😘'
[13:39:17] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Kis'
[13:39:17] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:17] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:17] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:17] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Kiss', text='😘'
[13:39:17] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Kiss'
[13:39:18] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:18] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:18] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:18] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='', text='😘'
[13:39:18] [UPDATE_CELL] ✅ Updating ChatCell label to: ''
[13:39:18] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:18] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:18] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:18] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='😘', text='😘'
[13:39:18] [UPDATE_CELL] ✅ Updating ChatCell label to: '😘'
[13:39:18] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:18] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:18] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[13:39:18] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='😘 ', text='😘'
[13:39:18] [UPDATE_CELL] ✅ Updating ChatCell label to: '😘 '
[13:39:18] [UPDATE_CELL] 🔍 updateMessageCell called for message 18816
[13:39:18] [UPDATE_CELL] Initial targetRowIndex=48
[13:39:18] [UPDATE_CELL] Rebuilt chatRows, count=51
[13:39:18] [UPDATE_CELL] After rebuild targetRowIndex=48
[13:39:18] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=false, evolutionText='😘', text='😘'
[13:39:18] [UPDATE_CELL] ✅ Updating ChatCell label to: '😘'
[13:39:18] [UPDATE_CELL] 📐 Height recalculated with scroll position preserved
[13:39:18] [EVOLUTION] ✅ Animation complete for message 18816 - marking as read now
[13:39:55] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[13:40:04] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[13:40:04] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[13:40:04] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[13:40:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18818, 18817, 18816, 18815]
[13:40:04] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:40:04] [CELL_UPLOAD] → not my message, setting complete
[13:40:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:40:04] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[13:40:04] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[13:40:05] [CLIENT_SIG] Event received: type=0 messageId=18819
[13:40:05] [WS_EVENT] Received event: type=0, messageId=18819
[13:40:05] [WS_EVENT] 📨 New message notification (msgId=18819) - triggering incremental refresh, currentMsgCount=51
[13:40:05] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:40:05] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18818
[13:40:05] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18819,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 12:40:05"}
[13:40:05] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 12:40:05, "session_id": ILUIWU, "message_id": 18819, "ok": 1, "file_name": , "message_type": 0]
[13:40:05] [DB_UPGRADE] Upgrading message ID: -1 → 18819, preserveOriginalDate=false
[13:40:05] [DB_UPGRADE] ✅ Upgraded -1 → 18819 with send_status=0, 1 row(s) affected
[13:40:05] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18819
[13:40:05] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18819
[13:40:05] ReloadData 9
[13:40:05] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:40:05] [CELL_UPLOAD] → not my message, setting complete
[13:40:05] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:40:05] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[13:40:05] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[13:40:05] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[13:40:05] [LOCK] Lock button tapped - locking app immediately
[13:40:05] [LOCK] Received lock app notification
[13:40:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:40:06] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:40:06] [CELL_UPLOAD] → not my message, setting complete
[13:40:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:40:06] [LIFECYCLE] App resigning active - cleared crash flag
[13:40:06] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[13:40:07] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[13:40:07] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[13:40:07] [LIFECYCLE] App entering background - cleared crash flag
[13:40:07] [CLIENT_SIG] Disconnecting
[13:40:07] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[13:40:07] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[13:40:07] [WS] Canceling WebSocket for query connection to iosILUIWU
[13:40:07] In cleanupPeer
[13:40:07] In cleanupPeer
[13:40:07] [LIFECYCLE] WebRTC audio disabled
[13:40:07] [LIFECYCLE] AVAudioSession deactivated
[13:40:07] [LIFECYCLE] All connections stopped
[13:40:07] [CLIENT_SIG] WebSocket closed with code 1001
[13:40:07] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[13:40:07] [SERVER] Stopped reconnect polling
[13:40:07] Will request stop of video 0
[13:40:07] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[13:40:07] [WS] Query connection error - cleaning up all agent connections and views
[13:40:07] Will request stop of video 0
[13:40:07] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:40:07] [WS] Query connection failed - cleaning up all agent connections and views
[13:40:07] [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/}
[13:40:07] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[13:40:07] [PIP] Removing 0 tracks from PiP for connection 0
[13:40:07] [PIP] ✅ All tracks removed for connection 0
[13:40:07] [CLEANUP] ========================================
[13:40:07] [CLEANUP] Cleaning up all agent connections and views
[13:40:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:40:07] [CLEANUP] Stopped and removed 0 video connections
[13:40:07] [CLEANUP] Removed 0 video views
[13:40:07] [CLEANUP] Removed 0 feed scroll views
[13:40:07] [CLEANUP] Removed 0 status labels
[13:40:07] [CLEANUP] Reset agent query state
[13:40:07] [CLEANUP] Updated page indicator
[13:40:07] [CLEANUP] Rebuilt video layout
[13:40:07] [CLEANUP] ✅ All agent connections and views cleaned up
[13:40:07] [CLEANUP] ========================================
[13:40:07] [SERVER] Skipping reconnect polling - app is in background
[13:40:07] [WS] URLSession invalidated successfully
[13:40:07] [PIP] Removing 0 tracks from PiP for connection 0
[13:40:07] [PIP] ✅ All tracks removed for connection 0
[13:40:07] [CLEANUP] ========================================
[13:40:07] [CLEANUP] Cleaning up all agent connections and views
[13:40:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:40:07] [CLEANUP] Stopped and removed 0 video connections
[13:40:07] [CLEANUP] Removed 0 video views
[13:40:07] [CLEANUP] Removed 0 feed scroll views
[13:40:07] [CLEANUP] Removed 0 status labels
[13:40:07] [CLEANUP] Reset agent query state
[13:40:07] [CLEANUP] Updated page indicator
[13:40:07] [CLEANUP] Rebuilt video layout
[13:40:07] [CLEANUP] ✅ All agent connections and views cleaned up
[13:40:07] [CLEANUP] ========================================
[13:40:07] [SERVER] Skipping reconnect polling - app is in background
[13:42:29] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:42:29] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:42:29] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:42:29] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[13:42:29] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:42:29] [LIFECYCLE] App entering foreground - restoring connections
[13:42:29] [LIFECYCLE] Away > 2 minutes (142s) - will scroll to bottom
[13:42:29] [UPLOAD_RETRY] No pending uploads to retry
[13:42:29] [LIFECYCLE] Merged 910 reactions from local DB
[13:42:29] [LIFECYCLE] WebRTC audio re-enabled
[13:42:29] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[13:42:29] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[13:42:29] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:42:29] [VIEWER] Reconnecting after background - querying agents
[13:42:29] [UNSENT_RETRY] Checking for unsent messages...
[13:42:29] [PENDING_UPLOAD] Total pending upload messages: 0
[13:42:29] [UNSENT_RETRY] No unsent messages found
[13:42:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:42:30] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:30] [CELL_UPLOAD] → not my message, setting complete
[13:42:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:42:30] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[13:42:30] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[13:42:30] [PUSH] handlePollEventsNotification userInfo: [:]
[13:42:30] [PUSH] No message_id in userInfo
[13:42:30] [PUSH] No operation_type in userInfo
[13:42:30] [FAST_REFRESH] Evolution disabled - performing incremental sync
[13:42:30] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[13:42:30] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[13:42:30] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[13:42:30] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:42:30] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18819
[13:42:30] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:42:30] HELLO → sent (cached token, role=query)
[13:42:30] [CLIENT_SIG] WebSocket opened
[13:42:30] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[13:42:30] [SIG] hello_ok received for query connection - ready to query agents
[13:42:30] [SIG] get_agents request sent for sessionId=ILUIWU
[13:42:30] [SIG] get_agents request sent for sessionId=iosILUIWU
[13:42:30] [SERVER] Stopped reconnect polling
[13:42:30] [CLIENT_SIG] Connected! clientId=b_Mz6VVAJnMCp_eF
[13:42:30] [SIG] agents_list received: []
[13:42:30] [SIG] agents_list received: []
[13:42:30] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[13:42:30] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:42:30] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[13:42:30] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[13:42:30] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:42:30] [FAST_REFRESH] Incremental sync complete - 52 messages
[13:42:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:42:30] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:30] [CELL_UPLOAD] → not my message, setting complete
[13:42:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:42:30] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18819 → 18820
[13:42:30] [COMBINED_FETCH] Loaded 7586 read receipts, 916 messages with reactions
[13:42:30] [FOREGROUND] Enriched 1 messages with readBy data from server
[13:42:30] [COMBINED_FETCH] Loaded 7586 read receipts, 916 messages with reactions
[13:42:30] [FAST_REFRESH] Enriched 52 messages with readBy data
[13:42:30] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:42:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18769, 18770, 18771, 18772, 18773]
[13:42:31] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:31] [CELL_UPLOAD] → not my message, setting complete
[13:42:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true[13:42:31] [LOG] Pruned 328 entries older than 3 hours
[13:42:31] [SECURITY] Restored real session: ILUIWU
[13:42:31] [SECURITY] Restored real session: ILUIWU
[13:42:31] [PUSH] Silent push received
[13:42:31] [PUSH_EMBED] No embedded message_data in notification
[13:42:31] [PUSH] No embedded data, pre-loading messages from server
[13:42:31] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:42:31] [PUSH] Silent push received
[13:42:31] [PUSH_EMBED] No embedded message_data in notification
[13:42:31] [PUSH] No embedded data, pre-loading messages from server
[13:42:31] [PUSH_PRELOAD] Fetching messages for instant display cache
[13:42:32] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:42:32] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:42:32] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[13:42:32] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[13:42:32] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:42:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18820, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
[13:42:32] [PUSH] Parsed message_id: 18820
[13:42:32] [PUSH] Parsed operation_type: 3
[13:42:32] [PUSH] Taking direct action: opType=3, messageId=18820
[13:42:32] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18820
[13:42:32] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[13:42:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18820, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}]
[13:42:32] [PUSH] Parsed message_id: 18820
[13:42:32] [PUSH] Parsed operation_type: 3
[13:42:32] [PUSH] Taking direct action: opType=3, messageId=18820
[13:42:32] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18820
[13:42:32] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[13:42:32] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[13:42:32] [AUTH] Cache had 50 messages, maxExistingId=18820, inserted 0 truly new
[13:42:32] [AUTH] UI update complete
[13:42:32] [FAKE MODE] Exiting fake mode, restoring real session
[13:42:32] [SECURITY] Restored real session: ILUIWU
[13:42:32] [SECURITY] Saved real session: ILUIWU
[13:42:32] [FAKE MODE] ✅ Restored real session: ILUIWU
[13:42:32] [FAKE MODE] Loaded 50 messages (limited to page size)
[13:42:32] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:32] [CELL_UPLOAD] → not my message, setting complete
[13:42:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:42:32] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[13:42:32] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:42:32] [USER] ✅ User registered successfully
[13:42:32] [PUSH] User registration after token update: success
[13:42:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18771, 18772, 18773, 18774, 18775]
[13:42:32] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:32] [CELL_UPLOAD] → not my message, setting complete
[13:42:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:42:32] [CLIENT_SIG] Event received: type=3 messageId=18820
[13:42:32] [WS_EVENT] Received event: type=3, messageId=18820
[13:42:32] [WS_EVENT] Read receipt for message 18820 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:42:32] [COMBINED_FETCH] Loaded 7586 read receipts, 916 messages with reactions
[13:42:32] [FAKE MODE] Enriched 50 messages with readBy data
[13:42:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18771, 18772, 18773, 18774, 18775]
[13:42:32] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:42:32] [CELL_UPLOAD] → not my message, setting complete
[13:42:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:42:39] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[13:42:39] [WS] Query connection error - cleaning up all agent connections and views
[13:42:39] [CLEANUP] ========================================
[13:42:39] [CLEANUP] Cleaning up all agent connections and views
[13:42:39] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:42:39] [CLEANUP] Stopped and removed 0 video connections
[13:42:39] [CLEANUP] Removed 0 video views
[13:42:39] [CLEANUP] Removed 0 feed scroll views
[13:42:39] [CLEANUP] Removed 0 status labels
[13:42:39] [CLEANUP] Reset agent query state
[13:42:39] [CLEANUP] Updated page indicator
[13:42:39] [CLEANUP] Rebuilt video layout
[13:42:39] [CLEANUP] ✅ All agent connections and views cleaned up
[13:42:39] [CLEANUP] ========================================
[13:42:39] [SERVER] Starting reconnect polling (5s interval)
[13:42:44] [SERVER] Polling - attempting to reconnect...
[13:42:49] [SERVER] Polling - attempting to reconnect...
[13:42:54] [SERVER] Polling - attempting to reconnect...
[13:42:59] [SERVER] Polling - attempting to reconnect...
[13:43:04] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[13:43:04] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[13:43:04] [SEND_MESSAGE] ✅ Added optimistic message id=-2 to arrays, newMsgCount=51
[13:43:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-2, 18820, 18819, 18818, 18817]
[13:43:04] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:43:04] [CELL_UPLOAD] → not my message, setting complete
[13:43:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:43:04] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[13:43:04] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[13:43:04] [SERVER] Polling - attempting to reconnect...
[13:43:05] [LOCK] Lock button tapped - locking app immediately
[13:43:05] [LOCK] Received lock app notification
[13:43:06] [LIFECYCLE] App resigning active - cleared crash flag
[13:43:06] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[13:43:06] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[13:43:06] [LIFECYCLE] App entering background - cleared crash flag
[13:43:06] [CLIENT_SIG] Disconnecting
[13:43:06] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[13:43:06] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[13:43:06] [WS] Canceling WebSocket for query connection to iosILUIWU
[13:43:06] In cleanupPeer
[13:43:06] In cleanupPeer
[13:43:06] [LIFECYCLE] WebRTC audio disabled
[13:43:06] [LIFECYCLE] AVAudioSession deactivated
[13:43:06] [LIFECYCLE] All connections stopped
[13:43:06] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18821,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 12:43:04"}
[13:43:06] [CHAT] receive_message.php JSON: ["ok": 1, "session_id": ILUIWU, "message_id": 18821, "message_type": 0, "datesent_utc": 2026-01-23 12:43:04, "file_name": ]
[13:43:06] [DB_UPGRADE] Upgrading message ID: -2 → 18821, preserveOriginalDate=false
[13:43:06] [DB_UPGRADE] ✅ Upgraded -2 → 18821 with send_status=0, 1 row(s) affected
[13:43:07] [CLIENT_SIG] Event received: type=0 messageId=18821
[13:43:07] [WS_EVENT] Received event: type=0, messageId=18821
[13:43:07] [WS_EVENT] 📨 New message notification (msgId=18821) - triggering incremental refresh, currentMsgCount=51
[13:43:07] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:43:07] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18821
[13:43:07] [CLIENT_SIG] WebSocket closed with code 1001
[13:43:07] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[13:43:07] [SERVER] Stopped reconnect polling
[13:43:07] [WS] URLSession invalidated successfully
[13:43:07] Will request stop of video 0
[13:43:07] Will request stop of video 0
[13:43:07] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -2 → 18821
[13:43:07] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -2 → 18821
[13:43:07] ReloadData 9
[13:43:07] [INCREMENTAL_SYNC] ✅ No new messages
[13:43:07] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:43:07] [CELL_UPLOAD] → not my message, setting complete
[13:43:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:43:07] [PIP] Removing 0 tracks from PiP for connection 0
[13:43:07] [PIP] ✅ All tracks removed for connection 0
[13:43:07] [PIP] Removing 0 tracks from PiP for connection 0
[13:43:07] [PIP] ✅ All tracks removed for connection 0
[13:43:07] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[13:56:06] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[13:56:06] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:56:06] [LIFECYCLE] App entering foreground - restoring connections
[13:56:06] [LIFECYCLE] Away > 2 minutes (780s) - will scroll to bottom
[13:56:06] [UPLOAD_RETRY] No pending uploads to retry
[13:56:06] [LIFECYCLE] Merged 910 reactions from local DB
[13:56:06] [LIFECYCLE] WebRTC audio re-enabled
[13:56:06] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[13:56:06] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[13:56:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:56:06] [VIEWER] Reconnecting after background - querying agents
[13:56:06] [UNSENT_RETRY] Checking for unsent messages...
[13:56:06] [PENDING_UPLOAD] Total pending upload messages: 0
[13:56:06] [UNSENT_RETRY] No unsent messages found
[13:56:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[13:56:06] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[13:56:06] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:06] [CLEANUP] ========================================
[13:56:06] [CLEANUP] Cleaning up all agent connections and views
[13:56:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:06] [CLEANUP] Stopped and removed 0 video connections
[13:56:06] [CLEANUP] Removed 0 video views
[13:56:06] [CLEANUP] Removed 0 feed scroll views
[13:56:06] [CLEANUP] Removed 0 status labels
[13:56:06] [CLEANUP] Reset agent query state
[13:56:06] [CLEANUP] Updated page indicator
[13:56:06] [CLEANUP] Rebuilt video layout
[13:56:06] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:06] [CLEANUP] ========================================
[13:56:06] [SERVER] Starting reconnect polling (5s interval)
[13:56:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18821, 18820, 18819, 18818, 18817]
[13:56:07] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:07] [CELL_UPLOAD] → not my message, setting complete
[13:56:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:07] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[13:56:07] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[13:56:07] [PUSH] handlePollEventsNotification userInfo: [:]
[13:56:07] [PUSH] No message_id in userInfo
[13:56:07] [PUSH] No operation_type in userInfo
[13:56:07] [FAST_REFRESH] Evolution disabled - performing incremental sync
[13:56:07] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[13:56:07] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[13:56:07] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[13:56:07] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:56:07] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18821
[13:56:07] [CLIENT_SIG] WebSocket opened
[13:56:07] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[13:56:07] [CLIENT_SIG] Connected! clientId=BP_AD3De-Uolh8n2
[13:56:07] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[13:56:07] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[13:56:07] [INCREMENTAL_SYNC] ✅ No new messages
[13:56:07] [FAST_REFRESH] Incremental sync complete - 51 messages
[13:56:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18821, 18820, 18819, 18818, 18817]
[13:56:07] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:07] [CELL_UPLOAD] → not my message, setting complete
[13:56:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:07] [COMBINED_FETCH] Loaded 7587 read receipts, 916 messages with reactions
[13:56:07] [FOREGROUND] Enriched 0 messages with readBy data from server
[13:56:07] [COMBINED_FETCH] Loaded 7587 read receipts, 916 messages with reactions
[13:56:07] [FAST_REFRESH] Enriched 51 messages with readBy data
[13:56:07] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[13:56:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18821, 18820, 18819, 18818, 18817]
[13:56:08] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:08] [CELL_UPLOAD] → not my message, setting complete
[13:56:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:08] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:08] [WS] Opening session at ws://crivello.dyndns.org:8081/[13:56:08] [LOG] Pruned 515 entries older than 3 hours
[13:56:08] [SECURITY] Restored real session: ILUIWU
[13:56:08] [SECURITY] Restored real session: ILUIWU
[13:56:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:08] HELLO → sent (cached token, role=query)
[13:56:08] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:08] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:08] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:08] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:08] [CLEANUP] ========================================
[13:56:08] [CLEANUP] Cleaning up all agent connections and views
[13:56:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:08] [CLEANUP] Stopped and removed 0 video connections
[13:56:08] [CLEANUP] Removed 0 video views
[13:56:08] [CLEANUP] Removed 0 feed scroll views
[13:56:08] [CLEANUP] Removed 0 status labels
[13:56:08] [CLEANUP] Reset agent query state
[13:56:08] [CLEANUP] Updated page indicator
[13:56:08] [CLEANUP] Rebuilt video layout
[13:56:08] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:08] [CLEANUP] ========================================
[13:56:08] [SERVER] Starting reconnect polling (5s interval)
[13:56:08] [CLEANUP] ========================================
[13:56:08] [CLEANUP] Cleaning up all agent connections and views
[13:56:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:08] [CLEANUP] Stopped and removed 0 video connections
[13:56:08] [CLEANUP] Removed 0 video views
[13:56:08] [CLEANUP] Removed 0 feed scroll views
[13:56:08] [CLEANUP] Removed 0 status labels
[13:56:08] [CLEANUP] Reset agent query state
[13:56:08] [CLEANUP] Updated page indicator
[13:56:08] [CLEANUP] Rebuilt video layout
[13:56:08] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:08] [CLEANUP] ========================================
[13:56:08] [SERVER] Starting reconnect polling (5s interval)
[13:56:08] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[13:56:08] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[13:56:08] [AUTH] UI update complete
[13:56:08] [FAKE MODE] Exiting fake mode, restoring real session
[13:56:08] [SECURITY] Restored real session: ILUIWU
[13:56:08] [SECURITY] Saved real session: ILUIWU
[13:56:08] [FAKE MODE] ✅ Restored real session: ILUIWU
[13:56:08] [FAKE MODE] Loaded 50 messages (limited to page size)
[13:56:08] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[13:56:08] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[13:56:08] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:08] [CELL_UPLOAD] → not my message, setting complete
[13:56:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18772, 18773, 18774, 18775, 18776]
[13:56:09] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:09] [CELL_UPLOAD] → not my message, setting complete
[13:56:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:09] [USER] ✅ User registered successfully
[13:56:09] [PUSH] User registration after token update: success
[13:56:09] [COMBINED_FETCH] Loaded 7587 read receipts, 916 messages with reactions
[13:56:09] [FAKE MODE] Enriched 50 messages with readBy data
[13:56:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18772, 18773, 18774, 18775, 18776]
[13:56:09] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:09] [CELL_UPLOAD] → not my message, setting complete
[13:56:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:10] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:10] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:10] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:10] HELLO → sent (cached token, role=query)
[13:56:10] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:10] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:10] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:10] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:10] [CLEANUP] ========================================
[13:56:10] [CLEANUP] Cleaning up all agent connections and views
[13:56:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:10] [CLEANUP] Stopped and removed 0 video connections
[13:56:10] [CLEANUP] Removed 0 video views
[13:56:10] [CLEANUP] Removed 0 feed scroll views
[13:56:10] [CLEANUP] Removed 0 status labels
[13:56:10] [CLEANUP] Reset agent query state
[13:56:10] [CLEANUP] Updated page indicator
[13:56:10] [CLEANUP] Rebuilt video layout
[13:56:10] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:10] [CLEANUP] ========================================
[13:56:10] [SERVER] Starting reconnect polling (5s interval)
[13:56:10] [CLEANUP] ========================================
[13:56:10] [CLEANUP] Cleaning up all agent connections and views
[13:56:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:10] [CLEANUP] Stopped and removed 0 video connections
[13:56:10] [CLEANUP] Removed 0 video views
[13:56:10] [CLEANUP] Removed 0 feed scroll views
[13:56:10] [CLEANUP] Removed 0 status labels
[13:56:10] [CLEANUP] Reset agent query state
[13:56:10] [CLEANUP] Updated page indicator
[13:56:10] [CLEANUP] Rebuilt video layout
[13:56:10] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:10] [CLEANUP] ========================================
[13:56:10] [SERVER] Starting reconnect polling (5s interval)
[13:56:11] [CAMERA] Switch-over factors: [2, 8]
[13:56:11] [CAMERA] Virtual device max zoom: 123.75
[13:56:11] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[13:56:11] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[13:56:11] [CAMERA] 2x: virtual device at zoom 4.0
[13:56:11] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[13:56:11] [CAMERA] 8x: virtual device at zoom 16.0
[13:56:11] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[13:56:11] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[13:56:11] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[13:56:11] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[13:56:11] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[13:56:11] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[13:56:11] [VOLUME] Starting volume button monitoring
[13:56:11] [VOLUME] Hidden MPVolumeView installed
[13:56:11] [VOLUME] Observing volume (no audio session activation), initial volume: 0.3
[13:56:11] [VOLUME] Volume observation started
[13:56:11] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[13:56:11] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[13:56:12] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:12] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:12] [CAMERA] Configuring focus for Front Camera
[13:56:12] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[13:56:12] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[13:56:12] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:12] HELLO → sent (cached token, role=query)
[13:56:12] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:12] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:12] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:12] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:12] [CLEANUP] ========================================
[13:56:12] [CLEANUP] Cleaning up all agent connections and views
[13:56:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:12] [CLEANUP] Stopped and removed 0 video connections
[13:56:12] [CLEANUP] Removed 0 video views
[13:56:12] [CLEANUP] Removed 0 feed scroll views
[13:56:12] [CLEANUP] Removed 0 status labels
[13:56:12] [CLEANUP] Reset agent query state
[13:56:12] [CLEANUP] Updated page indicator
[13:56:12] [CLEANUP] Rebuilt video layout
[13:56:12] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:12] [CLEANUP] ========================================
[13:56:12] [SERVER] Starting reconnect polling (5s interval)
[13:56:12] [CLEANUP] ========================================
[13:56:12] [CLEANUP] Cleaning up all agent connections and views
[13:56:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:12] [CLEANUP] Stopped and removed 0 video connections
[13:56:12] [CLEANUP] Removed 0 video views
[13:56:12] [CLEANUP] Removed 0 feed scroll views
[13:56:12] [CLEANUP] Removed 0 status labels
[13:56:12] [CLEANUP] Reset agent query state
[13:56:12] [CLEANUP] Updated page indicator
[13:56:12] [CLEANUP] Rebuilt video layout
[13:56:12] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:12] [CLEANUP] ========================================
[13:56:12] [SERVER] Starting reconnect polling (5s interval)
[13:56:12] [CAMERA] Switched to continuous autofocus, lens position: 0.58431375
[13:56:14] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:14] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:14] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:14] HELLO → sent (cached token, role=query)
[13:56:14] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:14] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:14] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:14] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:14] [CLEANUP] ========================================
[13:56:14] [CLEANUP] Cleaning up all agent connections and views
[13:56:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:14] [CLEANUP] Stopped and removed 0 video connections
[13:56:14] [CLEANUP] Removed 0 video views
[13:56:14] [CLEANUP] Removed 0 feed scroll views
[13:56:14] [CLEANUP] Removed 0 status labels
[13:56:14] [CLEANUP] Reset agent query state
[13:56:14] [CLEANUP] Updated page indicator
[13:56:14] [CLEANUP] Rebuilt video layout
[13:56:14] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:14] [CLEANUP] ========================================
[13:56:14] [SERVER] Starting reconnect polling (5s interval)
[13:56:14] [CLEANUP] ========================================
[13:56:14] [CLEANUP] Cleaning up all agent connections and views
[13:56:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:14] [CLEANUP] Stopped and removed 0 video connections
[13:56:14] [CLEANUP] Removed 0 video views
[13:56:14] [CLEANUP] Removed 0 feed scroll views
[13:56:14] [CLEANUP] Removed 0 status labels
[13:56:14] [CLEANUP] Reset agent query state
[13:56:14] [CLEANUP] Updated page indicator
[13:56:14] [CLEANUP] Rebuilt video layout
[13:56:14] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:14] [CLEANUP] ========================================
[13:56:14] [SERVER] Starting reconnect polling (5s interval)
[13:56:14] [CAMERA] flipTapped - switching to: BACK
[13:56:14] [CAMERA] flipTapped - device: Back Triple Camera, activeFormat: 4032x3024
[13:56:14] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetPhoto
[13:56:14] [CAMERA] flipTapped - set initial zoom to 2.0
[13:56:14] [CAMERA] Configuring focus for Back Triple Camera
[13:56:14] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[13:56:14] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[13:56:15] [CAMERA] Switched to continuous autofocus, lens position: 0.0
[13:56:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:16] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:16] HELLO → sent (cached token, role=query)
[13:56:16] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:16] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:16] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:16] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:16] [CLEANUP] ========================================
[13:56:16] [CLEANUP] Cleaning up all agent connections and views
[13:56:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:16] [CLEANUP] Stopped and removed 0 video connections
[13:56:16] [CLEANUP] Removed 0 video views
[13:56:16] [CLEANUP] Removed 0 feed scroll views
[13:56:16] [CLEANUP] Removed 0 status labels
[13:56:16] [CLEANUP] Reset agent query state
[13:56:16] [CLEANUP] Updated page indicator
[13:56:16] [CLEANUP] Rebuilt video layout
[13:56:16] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:16] [CLEANUP] ========================================
[13:56:16] [SERVER] Starting reconnect polling (5s interval)
[13:56:16] [CLEANUP] ========================================
[13:56:16] [CLEANUP] Cleaning up all agent connections and views
[13:56:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:16] [CLEANUP] Stopped and removed 0 video connections
[13:56:16] [CLEANUP] Removed 0 video views
[13:56:16] [CLEANUP] Removed 0 feed scroll views
[13:56:16] [CLEANUP] Removed 0 status labels
[13:56:16] [CLEANUP] Reset agent query state
[13:56:16] [CLEANUP] Updated page indicator
[13:56:16] [CLEANUP] Rebuilt video layout
[13:56:16] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:16] [CLEANUP] ========================================
[13:56:16] [SERVER] Starting reconnect polling (5s interval)
[13:56:17] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:17] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:18] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:18] HELLO → sent (cached token, role=query)
[13:56:18] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:18] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:18] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:18] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:18] [CLEANUP] ========================================
[13:56:18] [CLEANUP] Cleaning up all agent connections and views
[13:56:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:18] [CLEANUP] Stopped and removed 0 video connections
[13:56:18] [CLEANUP] Removed 0 video views
[13:56:18] [CLEANUP] Removed 0 feed scroll views
[13:56:18] [CLEANUP] Removed 0 status labels
[13:56:18] [CLEANUP] Reset agent query state
[13:56:18] [CLEANUP] Updated page indicator
[13:56:18] [CLEANUP] Rebuilt video layout
[13:56:18] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:18] [CLEANUP] ========================================
[13:56:18] [SERVER] Starting reconnect polling (5s interval)
[13:56:18] [CLEANUP] ========================================
[13:56:18] [CLEANUP] Cleaning up all agent connections and views
[13:56:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:18] [CLEANUP] Stopped and removed 0 video connections
[13:56:18] [CLEANUP] Removed 0 video views
[13:56:18] [CLEANUP] Removed 0 feed scroll views
[13:56:18] [CLEANUP] Removed 0 status labels
[13:56:18] [CLEANUP] Reset agent query state
[13:56:18] [CLEANUP] Updated page indicator
[13:56:18] [CLEANUP] Rebuilt video layout
[13:56:18] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:18] [CLEANUP] ========================================
[13:56:18] [SERVER] Starting reconnect polling (5s interval)
[13:56:18] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[13:56:18] [HAPTIC] Triggering peek haptic for photo
[13:56:18] [VOLUME] Stopping volume button monitoring
[13:56:18] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[13:56:18] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[13:56:18] [GALLERY_DB] Raw datesent for msg 18788: '2026-01-23 08:03:10'
[13:56:18] [GALLERY_DB] Raw datesent for msg 18774: '2026-01-23 07:20:49'
[13:56:19] [GALLERY_DB] ✅ Loaded 488 media messages
[13:56:19] [GALLERY] Filtered 488 -> 448 (only with local thumbnails)
[13:56:19] [GALLERY] First 5 after sort (newest first):
[13:56:19] [GALLERY] 0: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[13:56:19] [GALLERY] 1: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[13:56:19] [GALLERY] 2: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[13:56:19] [GALLERY] 3: id=18772, date=2026-01-23 07:20:17, file=c50bfdf58c1dbca1.jpg
[13:56:19] [GALLERY] 4: id=18766, date=2026-01-23 01:00:51, file=50454b71bb7535b3.png
[13:56:19] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:19] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:19] HELLO → sent (cached token, role=query)
[13:56:19] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:19] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:19] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:19] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:19] [CLEANUP] ========================================
[13:56:19] [CLEANUP] Cleaning up all agent connections and views
[13:56:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:19] [CLEANUP] Stopped and removed 0 video connections
[13:56:19] [CLEANUP] Removed 0 video views
[13:56:19] [CLEANUP] Removed 0 feed scroll views
[13:56:19] [CLEANUP] Removed 0 status labels
[13:56:19] [CLEANUP] Reset agent query state
[13:56:19] [CLEANUP] Updated page indicator
[13:56:19] [CLEANUP] Rebuilt video layout
[13:56:19] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:19] [CLEANUP] ========================================
[13:56:19] [SERVER] Starting reconnect polling (5s interval)
[13:56:19] [CLEANUP] ========================================
[13:56:19] [CLEANUP] Cleaning up all agent connections and views
[13:56:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:19] [CLEANUP] Stopped and removed 0 video connections
[13:56:19] [CLEANUP] Removed 0 video views
[13:56:19] [CLEANUP] Removed 0 feed scroll views
[13:56:19] [CLEANUP] Removed 0 status labels
[13:56:19] [CLEANUP] Reset agent query state
[13:56:19] [CLEANUP] Updated page indicator
[13:56:19] [CLEANUP] Rebuilt video layout
[13:56:19] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:19] [CLEANUP] ========================================
[13:56:19] [SERVER] Starting reconnect polling (5s interval)
[13:56:21] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:21] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:21] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:21] HELLO → sent (cached token, role=query)
[13:56:21] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:21] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:21] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:21] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:21] [CLEANUP] ========================================
[13:56:21] [CLEANUP] Cleaning up all agent connections and views
[13:56:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:21] [CLEANUP] Stopped and removed 0 video connections
[13:56:21] [CLEANUP] Removed 0 video views
[13:56:21] [CLEANUP] Removed 0 feed scroll views
[13:56:21] [CLEANUP] Removed 0 status labels
[13:56:21] [CLEANUP] Reset agent query state
[13:56:21] [CLEANUP] Updated page indicator
[13:56:21] [CLEANUP] Rebuilt video layout
[13:56:21] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:21] [CLEANUP] ========================================
[13:56:21] [SERVER] Starting reconnect polling (5s interval)
[13:56:21] [CLEANUP] ========================================
[13:56:21] [CLEANUP] Cleaning up all agent connections and views
[13:56:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:21] [CLEANUP] Stopped and removed 0 video connections
[13:56:21] [CLEANUP] Removed 0 video views
[13:56:21] [CLEANUP] Removed 0 feed scroll views
[13:56:21] [CLEANUP] Removed 0 status labels
[13:56:21] [CLEANUP] Reset agent query state
[13:56:21] [CLEANUP] Updated page indicator
[13:56:21] [CLEANUP] Rebuilt video layout
[13:56:21] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:21] [CLEANUP] ========================================
[13:56:21] [SERVER] Starting reconnect polling (5s interval)
[13:56:23] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:23] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:23] Chosen timer = 0
[13:56:23] [MEDIA_SEND] ========== NEW UPLOAD ==========
[13:56:23] [MEDIA_SEND] onSend called
[13:56:23] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/D896FD93-B47E-407E-BA8C-6452B1BAA143.jpg
[13:56:23] [MEDIA_SEND] Source file exists: true
[13:56:23] [MEDIA_SEND] Original filename: D896FD93-B47E-407E-BA8C-6452B1BAA143.jpg
[13:56:23] [MEDIA_SEND] Random filename: aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_SEND] File extension: jpg
[13:56:23] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_SEND] Source file size: 2661970 bytes (2.54 MB)
[13:56:23] [MEDIA_SEND] Copying file (<100MB)
[13:56:23] [MEDIA_SEND] File copied successfully
[13:56:23] [MEDIA_SEND] Destination file exists: true
[13:56:23] [MEDIA_SEND] Destination file size: 2661970 bytes
[13:56:23] [MEDIA_SEND] Creating thumbnail...
[13:56:23] [MEDIA_SEND] Thumbnail created in 0.03s
[13:56:23] [MEDIA_SEND] Thumbnail dimensions: (300.0, 400.0)
[13:56:23] [MEDIA_SEND] Thumbnail exists: true
[13:56:23] [MEDIA_SEND] Thumbnail file size: 35763 bytes
[13:56:23] [MEDIA_SEND] Sending message to server...
[13:56:23] [MEDIA_SEND] Caption: ''
[13:56:23] [MEDIA_SEND] Timer: 0
[13:56:23] [MEDIA_SEND] Filename: aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[13:56:23] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[13:56:23] [MEDIA_SEND] 📤 Creating media message: id=-3, file=aa11fb87a250b06a.jpg, isGiphy=false, upload_status=1 (pending)
[13:56:23] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[13:56:23] [SEND_MESSAGE] ✅ Added optimistic message id=-3 to arrays, newMsgCount=51
[13:56:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-3, 18821, 18820, 18819, 18818]
[13:56:23] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[13:56:23] [CELL_UPLOAD] configure: msgId=-3, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[13:56:23] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[13:56:23] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:23] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[13:56:23] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[13:56:23] [MEDIA_SEND] sendMessage API call completed
[13:56:23] [MEDIA_SEND] Starting THUMBNAIL upload: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[13:56:23] [UPLOAD_ENQUEUE] 📥 File: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[13:56:23] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[13:56:23] [UPLOAD_QUEUE] Enqueued upload id=645 for t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[13:56:23] [UPLOAD_DEBUG] Item ID: 645
[13:56:23] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] Random filename: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] Session ID: ILUIWU
[13:56:23] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[13:56:23] [UPLOAD_DEBUG] Retry count: 0
[13:56:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_aa11fb87a250b06a.jpg, status=uploading (2), progress=0.0%
[13:56:23] [UPLOAD_DEBUG] File exists: true
[13:56:23] [UPLOAD_DEBUG] File size: 35763 bytes (0.0 MB)
[13:56:23] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[13:56:23] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[13:56:23] [UPLOAD_DEBUG] --- startStandardUpload ---
[13:56:23] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[13:56:23] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[13:56:23] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[13:56:23] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/D3A37DB9-2D23-4852-B56E-DA11190A05C5.upload
[13:56:23] [UPLOAD_DEBUG] File size: 35763 bytes, in-memory threshold: 10485760 bytes
[13:56:23] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[13:56:23] [GALLERY_DB] Raw datesent for msg -3: '2026-01-23 12:56:23'
[13:56:23] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[13:56:23] [GALLERY_DB] Raw datesent for msg 18788: '2026-01-23 08:03:10'
[13:56:23] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (36245 bytes)
[13:56:23] [UPLOAD_DEBUG] Creating background upload task...
[13:56:23] [UPLOAD_DEBUG] Task created with identifier: 1
[13:56:23] [UPLOAD_DEBUG] Added to activeUploads dictionary
[13:56:23] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[13:56:23] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=1 | file=t_aa11fb87a250b06a.jpg | size=0.0MB | retries=0
[13:56:23] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[13:56:23] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[13:56:23] [UPLOAD_PROGRESS] t_aa11fb87a250b06a.jpg: 100% (0.0/0.0 MB) task=1
[13:56:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_aa11fb87a250b06a.jpg, status=uploading (2), progress=100.0%
[13:56:23] [GALLERY_DB] ✅ Loaded 489 media messages
[13:56:23] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18822,"session_id":"ILUIWU","message_type":1,"file_name":"aa11fb87a250b06a.jpg","datesent_utc":"2026-01-23 12:56:23"}
[13:56:23] [CHAT] receive_message.php JSON: ["message_type": 1, "ok": 1, "message_id": 18822, "session_id": ILUIWU, "datesent_utc": 2026-01-23 12:56:23, "file_name": aa11fb87a250b06a.jpg]
[13:56:23] [DB_UPGRADE] Upgrading message ID: -3 → 18822, preserveOriginalDate=false
[13:56:23] [DB_UPGRADE] ✅ Upgraded -3 → 18822 with send_status=0, 1 row(s) affected
[13:56:23] [GALLERY] Filtered 489 -> 449 (only with local thumbnails)
[13:56:23] [GALLERY] First 5 after sort (newest first):
[13:56:23] [GALLERY] 0: id=-3, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[13:56:23] [GALLERY] 1: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[13:56:23] [GALLERY] 2: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[13:56:23] [GALLERY] 3: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[13:56:23] [GALLERY] 4: id=18772, date=2026-01-23 07:20:17, file=c50bfdf58c1dbca1.jpg
[13:56:23] [UPLOAD_RESPONSE] Started receiving response for task 1
[13:56:23] [UPLOAD_METRICS] Task 1 metrics:
[13:56:23] [UPLOAD_METRICS] Total time: 0.15s
[13:56:23] [UPLOAD_METRICS] Upload time: 0.00s
[13:56:23] [UPLOAD_METRICS] Response time: 0.00s
[13:56:23] [UPLOAD_METRICS] Network protocol: http/1.1
[13:56:23] [UPLOAD_METRICS] Proxy: no
[13:56:23] [UPLOAD_METRICS] Reused connection: no
[13:56:23] [UPLOAD_COMPLETE] ========== Task Completed ==========
[13:56:23] [UPLOAD_COMPLETE] Task ID: 1
[13:56:23] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[13:56:23] [UPLOAD_COMPLETE] Filename: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_COMPLETE] Retry count: 0
[13:56:23] [UPLOAD_COMPLETE] HTTP Status: 200
[13:56:23] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Length"): 217, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Date"): Fri, 23 Jan 2026 12:56:23 GMT, AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Content-Type"): application/json]
[13:56:23] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_aa11fb87a250b06a.jpg","orig_name":"t_aa11fb87a250b06a.jpg","size":35763,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":36245}}
[13:56:23] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[13:56:23] [UPLOAD_COMPLETE] Server filename: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_VERIFY] Verifying file exists: t_aa11fb87a250b06a.jpg
[13:56:23] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:23] [CELL_UPLOAD] → not my message, setting complete
[13:56:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:23] [UPLOAD_VERIFY] ✅ File verified: t_aa11fb87a250b06a.jpg (size: 35763)
[13:56:23] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_aa11fb87a250b06a.jpg | id=645 | retries=0
[13:56:23] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[13:56:23] [UPLOAD_COMPLETE] ✅ File: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_COMPLETE] ✅ Queue ID: 645
[13:56:23] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[13:56:23] [UPLOAD_COMPLETE] ✅ Server filename: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[13:56:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_aa11fb87a250b06a.jpg, status=complete (0), progress=0.0%
[13:56:23] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=645
[13:56:23] [UPLOAD_STATUS] 📬 Received notification: file=t_aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_STATUS] 💾 Updating DB: file=t_aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_aa11fb87a250b06a.jpg not found in local_messages
[13:56:23] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:23] HELLO → sent (cached token, role=query)
[13:56:23] [UPLOAD_STATUS] 📬 Received notification: file=t_aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_STATUS] 💾 Updating DB: file=t_aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_aa11fb87a250b06a.jpg not found in local_messages
[13:56:23] [CLIENT_SIG] Event received: type=0 messageId=18822
[13:56:23] [WS_EVENT] Received event: type=0, messageId=18822
[13:56:23] [WS_EVENT] 📨 New message notification (msgId=18822) - triggering incremental refresh, currentMsgCount=51
[13:56:23] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[13:56:23] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18822
[13:56:23] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -3 → 18822
[13:56:23] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -3 → 18822
[13:56:23] ReloadData 9
[13:56:23] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[13:56:23] [CELL_UPLOAD] → not my message, setting complete
[13:56:23] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[13:56:23] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[13:56:23] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[13:56:23] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:23] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[13:56:23] [UPLOAD_STATUS] 📬 Received notification: file=t_aa11fb87a250b06a.jpg, status=0 (complete)
[13:56:23] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_STATUS] 💾 Updating DB: file=t_aa11fb87a250b06a.jpg, status=0 (complete)
[13:56:23] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_aa11fb87a250b06a.jpg not found in local_messages
[13:56:23] [INCREMENTAL_SYNC] ✅ No new messages
[13:56:23] [MEDIA_SEND] Thumbnail uploaded successfully in 0.21s
[13:56:23] [MEDIA_SEND] Thumbnail server filename: t_aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_SEND] Starting MAIN FILE upload: aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[13:56:23] [UPLOAD_ENQUEUE] 📥 File: aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[13:56:23] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 2.5 MB
[13:56:23] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:23] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:23] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:23] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:23] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[13:56:23] [CLEANUP] ========================================
[13:56:23] [CLEANUP] Cleaning up all agent connections and views
[13:56:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:23] [CLEANUP] Stopped and removed 0 video connections
[13:56:23] [CLEANUP] Removed 0 video views
[13:56:23] [CLEANUP] Removed 0 feed scroll views
[13:56:23] [CLEANUP] Removed 0 status labels
[13:56:23] [CLEANUP] Reset agent query state
[13:56:23] [CLEANUP] Updated page indicator
[13:56:23] [CLEANUP] Rebuilt video layout
[13:56:23] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:23] [CLEANUP] ========================================
[13:56:23] [SERVER] Starting reconnect polling (5s interval)
[13:56:23] [CLEANUP] ========================================
[13:56:23] [CLEANUP] Cleaning up all agent connections and views
[13:56:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:23] [CLEANUP] Stopped and removed 0 video connections
[13:56:23] [CLEANUP] Removed 0 video views
[13:56:23] [CLEANUP] Removed 0 feed scroll views
[13:56:23] [CLEANUP] Removed 0 status labels
[13:56:23] [CLEANUP] Reset agent query state
[13:56:23] [CLEANUP] Updated page indicator
[13:56:23] [CLEANUP] Rebuilt video layout
[13:56:23] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:23] [CLEANUP] ========================================
[13:56:23] [SERVER] Starting reconnect polling (5s interval)
[13:56:23] [UPLOAD_QUEUE] Enqueued upload id=646 for aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[13:56:23] [UPLOAD_DEBUG] Item ID: 646
[13:56:23] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] Random filename: aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] Session ID: ILUIWU
[13:56:23] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[13:56:23] [UPLOAD_DEBUG] Retry count: 0
[13:56:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=aa11fb87a250b06a.jpg, status=uploading (2), progress=0.0%
[13:56:23] [UPLOAD_STATUS] 📬 Received notification: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 1 → 2
[13:56:23] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[13:56:23] [UPLOAD_STATUS] 💾 Updating DB: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_DEBUG] File exists: true
[13:56:23] [UPLOAD_DEBUG] File size: 2661970 bytes (2.5 MB)
[13:56:23] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[13:56:23] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[13:56:23] [UPLOAD_DEBUG] --- startStandardUpload ---
[13:56:23] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[13:56:23] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[13:56:23] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/D994FEDB-40DC-4C37-8923-F7C208F3ACA8.upload
[13:56:23] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=aa11fb87a250b06a.jpg
[13:56:23] [UPLOAD_DEBUG] File size: 2661970 bytes, in-memory threshold: 10485760 bytes
[13:56:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:23] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[13:56:23] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[13:56:23] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (2662446 bytes)
[13:56:23] [UPLOAD_DEBUG] Creating background upload task...
[13:56:23] [UPLOAD_DEBUG] Task created with identifier: 2
[13:56:23] [UPLOAD_DEBUG] Added to activeUploads dictionary
[13:56:23] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[13:56:23] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=2 | file=aa11fb87a250b06a.jpg | size=2.5MB | retries=0
[13:56:23] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[13:56:23] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[13:56:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=aa11fb87a250b06a.jpg, status=uploading (2), progress=39.4%
[13:56:23] [UPLOAD_STATUS] 📬 Received notification: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[13:56:23] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[13:56:23] [UPLOAD_STATUS] 💾 Updating DB: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:23] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=aa11fb87a250b06a.jpg
[13:56:23] [MEDIA_SEND] Main upload progress: 39%
[13:56:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.39383934922999375) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:23] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[13:56:23] [PROGRESS] Updated cell for aa11fb87a250b06a.jpg: 39%
[13:56:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=aa11fb87a250b06a.jpg, status=uploading (2), progress=78.8%
[13:56:24] [UPLOAD_STATUS] 📬 Received notification: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[13:56:24] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[13:56:24] [UPLOAD_STATUS] 💾 Updating DB: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=aa11fb87a250b06a.jpg
[13:56:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7876786984599875) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:24] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[13:56:24] [MEDIA_SEND] Main upload progress: 78%
[13:56:24] [PROGRESS] Updated cell for aa11fb87a250b06a.jpg: 78%
[13:56:24] [UPLOAD_PROGRESS] aa11fb87a250b06a.jpg: 100% (2.5/2.5 MB) task=2
[13:56:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=aa11fb87a250b06a.jpg, status=uploading (2), progress=100.0%
[13:56:24] [UPLOAD_STATUS] 📬 Received notification: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[13:56:24] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[13:56:24] [UPLOAD_STATUS] 💾 Updating DB: file=aa11fb87a250b06a.jpg, status=2 (uploading)
[13:56:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=aa11fb87a250b06a.jpg
[13:56:24] [MEDIA_SEND] Main upload progress: 100%
[13:56:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:24] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[13:56:24] [PROGRESS] Updated cell for aa11fb87a250b06a.jpg: 100%
[13:56:25] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:25] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:25] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:25] HELLO → sent (cached token, role=query)
[13:56:25] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:25] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:25] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:25] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:25] [CLEANUP] ========================================
[13:56:25] [CLEANUP] Cleaning up all agent connections and views
[13:56:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:25] [CLEANUP] Stopped and removed 0 video connections
[13:56:25] [CLEANUP] Removed 0 video views
[13:56:25] [CLEANUP] Removed 0 feed scroll views
[13:56:25] [CLEANUP] Removed 0 status labels
[13:56:25] [CLEANUP] Reset agent query state
[13:56:25] [CLEANUP] Updated page indicator
[13:56:25] [CLEANUP] Rebuilt video layout
[13:56:25] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:25] [CLEANUP] ========================================
[13:56:25] [SERVER] Starting reconnect polling (5s interval)
[13:56:25] [CLEANUP] ========================================
[13:56:25] [CLEANUP] Cleaning up all agent connections and views
[13:56:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:25] [CLEANUP] Stopped and removed 0 video connections
[13:56:25] [CLEANUP] Removed 0 video views
[13:56:25] [CLEANUP] Removed 0 feed scroll views
[13:56:25] [CLEANUP] Removed 0 status labels
[13:56:25] [CLEANUP] Reset agent query state
[13:56:25] [CLEANUP] Updated page indicator
[13:56:25] [CLEANUP] Rebuilt video layout
[13:56:25] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:25] [CLEANUP] ========================================
[13:56:25] [SERVER] Starting reconnect polling (5s interval)
[13:56:26] [UPLOAD_RESPONSE] Started receiving response for task 2
[13:56:26] [UPLOAD_METRICS] Task 2 metrics:
[13:56:26] [UPLOAD_METRICS] Total time: 2.46s
[13:56:26] [UPLOAD_METRICS] Upload time: 0.42s
[13:56:26] [UPLOAD_METRICS] Response time: 0.00s
[13:56:26] [UPLOAD_METRICS] Network protocol: http/1.1
[13:56:26] [UPLOAD_METRICS] Proxy: no
[13:56:26] [UPLOAD_METRICS] Reused connection: yes
[13:56:26] [UPLOAD_COMPLETE] ========== Task Completed ==========
[13:56:26] [UPLOAD_COMPLETE] Task ID: 2
[13:56:26] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[13:56:26] [UPLOAD_COMPLETE] Filename: aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_COMPLETE] Retry count: 0
[13:56:26] [UPLOAD_COMPLETE] HTTP Status: 200
[13:56:26] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Date"): Fri, 23 Jan 2026 12:56:23 GMT, AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Length"): 217, AnyHashable("Content-Type"): application/json]
[13:56:26] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"aa11fb87a250b06a.jpg","orig_name":"aa11fb87a250b06a.jpg","size":2661970,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":2662446}}
[13:56:26] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[13:56:26] [UPLOAD_COMPLETE] Server filename: aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_VERIFY] Verifying file exists: aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_VERIFY] ✅ File verified: aa11fb87a250b06a.jpg (size: 2661970)
[13:56:26] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=aa11fb87a250b06a.jpg | id=646 | retries=0
[13:56:26] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[13:56:26] [UPLOAD_COMPLETE] ✅ File: aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_COMPLETE] ✅ Queue ID: 646
[13:56:26] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[13:56:26] [UPLOAD_COMPLETE] ✅ Server filename: aa11fb87a250b06a.jpg
[13:56:26] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[13:56:26] [UPLOAD_NOTIFY] 📣 Posting notification: file=aa11fb87a250b06a.jpg, status=complete (0), progress=0.0%
[13:56:26] [UPLOAD_STATUS] 📬 Received notification: file=aa11fb87a250b06a.jpg, status=0 (complete)
[13:56:26] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 0
[13:56:26] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=0
[13:56:26] [UPLOAD_STATUS] 💾 Updating DB: file=aa11fb87a250b06a.jpg, status=0 (complete)
[13:56:26] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=646
[13:56:26] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=aa11fb87a250b06a.jpg
[13:56:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[13:56:26] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[13:56:26] [MEDIA_SEND] Server filename: aa11fb87a250b06a.jpg
[13:56:26] [MEDIA_SEND] Main upload duration: 2.49s
[13:56:26] [MEDIA_SEND] Total upload duration: 2.70s
[13:56:26] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[13:56:26] [PROGRESS] Updated cell for aa11fb87a250b06a.jpg: 100%
[13:56:26] [LOCK] Lock button tapped - locking app immediately
[13:56:26] [LOCK] Received lock app notification
[13:56:27] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:27] [WS] Opening session at ws://crivello.dyndns.org:8081/
[13:56:27] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[13:56:27] HELLO → sent (cached token, role=query)
[13:56:27] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[13:56:27] [WS] Query connection failed - cleaning up all agent connections and views
[13:56:27] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[13:56:27] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[13:56:27] [CLEANUP] ========================================
[13:56:27] [CLEANUP] Cleaning up all agent connections and views
[13:56:27] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:27] [CLEANUP] Stopped and removed 0 video connections
[13:56:27] [CLEANUP] Removed 0 video views
[13:56:27] [CLEANUP] Removed 0 feed scroll views
[13:56:27] [CLEANUP] Removed 0 status labels
[13:56:27] [CLEANUP] Reset agent query state
[13:56:27] [CLEANUP] Updated page indicator
[13:56:27] [CLEANUP] Rebuilt video layout
[13:56:27] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:27] [CLEANUP] ========================================
[13:56:27] [SERVER] Starting reconnect polling (5s interval)
[13:56:27] [CLEANUP] ========================================
[13:56:27] [CLEANUP] Cleaning up all agent connections and views
[13:56:27] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[13:56:27] [CLEANUP] Stopped and removed 0 video connections
[13:56:27] [CLEANUP] Removed 0 video views
[13:56:27] [CLEANUP] Removed 0 feed scroll views
[13:56:27] [CLEANUP] Removed 0 status labels
[13:56:27] [CLEANUP] Reset agent query state
[13:56:27] [CLEANUP] Updated page indicator
[13:56:27] [CLEANUP] Rebuilt video layout
[13:56:27] [CLEANUP] ✅ All agent connections and views cleaned up
[13:56:27] [CLEANUP] ========================================
[13:56:27] [SERVER] Starting reconnect polling (5s interval)
[13:56:27] [LIFECYCLE] App resigning active - cleared crash flag
[13:56:28] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[13:56:28] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[13:56:28] [LIFECYCLE] App entering background - cleared crash flag
[13:56:28] [CLIENT_SIG] Disconnecting
[13:56:28] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[13:56:28] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[13:56:28] [WS] Canceling WebSocket for query connection to iosILUIWU
[13:56:28] In cleanupPeer
[13:56:28] In cleanupPeer
[13:56:28] [LIFECYCLE] WebRTC audio disabled
[13:56:28] [LIFECYCLE] AVAudioSession deactivated
[13:56:28] [LIFECYCLE] All connections stopped
[13:56:28] [CLIENT_SIG] WebSocket closed with code 1001
[13:56:28] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[13:56:28] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[13:56:28] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[13:56:28] [SERVER] Stopped reconnect polling
[13:56:28] [WS] URLSession invalidated successfully
[13:56:28] Will request stop of video 0
[13:56:28] Will request stop of video 0
[13:56:28] [PIP] Removing 0 tracks from PiP for connection 0
[13:56:28] [PIP] ✅ All tracks removed for connection 0
[13:56:28] [PIP] Removing 0 tracks from PiP for connection 0
[13:56:28] [PIP] ✅ All tracks removed for connection 0
[14:11:09] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:11:09] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:11:09] [LIFECYCLE] App entering foreground - restoring connections
[14:11:09] [LIFECYCLE] Away > 2 minutes (881s) - will scroll to bottom
[14:11:09] [UPLOAD_RETRY] No pending uploads to retry
[14:11:09] [LIFECYCLE] Merged 910 reactions from local DB
[14:11:09] [LIFECYCLE] WebRTC audio re-enabled
[14:11:09] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:11:09] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:11:09] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:11:09] [VIEWER] Reconnecting after background - querying agents
[14:11:09] [UNSENT_RETRY] Checking for unsent messages...
[14:11:09] [PENDING_UPLOAD] Total pending upload messages: 0
[14:11:09] [UNSENT_RETRY] No unsent messages found
[14:11:09] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:09] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:09] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:11:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18822, 18821, 18820, 18819, 18818]
[14:11:09] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:09] [CELL_UPLOAD] → not my message, setting complete
[14:11:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:09] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:09] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:09] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[14:11:09] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:11:09] [PUSH] handlePollEventsNotification userInfo: [:]
[14:11:09] [PUSH] No message_id in userInfo
[14:11:09] [PUSH] No operation_type in userInfo
[14:11:09] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:11:09] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[14:11:09] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:11:09] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:11:09] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[14:11:09] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18822
[14:11:09] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:09] [CLIENT_SIG] WebSocket opened
[14:11:09] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:11:09] HELLO → sent (cached token, role=query)
[14:11:09] [CLIENT_SIG] Connected! clientId=39he_EDCyvbp7N22
[14:11:09] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:09] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:09] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:09] [CLEANUP] ========================================
[14:11:09] [CLEANUP] Cleaning up all agent connections and views
[14:11:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:09] [CLEANUP] Stopped and removed 0 video connections
[14:11:09] [CLEANUP] Removed 0 video views
[14:11:09] [CLEANUP] Removed 0 feed scroll views
[14:11:09] [CLEANUP] Removed 0 status labels
[14:11:09] [CLEANUP] Reset agent query state
[14:11:09] [CLEANUP] Updated page indicator
[14:11:09] [CLEANUP] Rebuilt video layout
[14:11:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:09] [CLEANUP] ========================================
[14:11:09] [SERVER] Starting reconnect polling (5s interval)
[14:11:09] [CLEANUP] ========================================
[14:11:09] [CLEANUP] Cleaning up all agent connections and views
[14:11:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:09] [CLEANUP] Stopped and removed 0 video connections
[14:11:09] [CLEANUP] Removed 0 video views
[14:11:09] [CLEANUP] Removed 0 feed scroll views
[14:11:09] [CLEANUP] Removed 0 status labels
[14:11:09] [CLEANUP] Reset agent query state
[14:11:09] [CLEANUP] Updated page indicator
[14:11:09] [CLEANUP] Rebuilt video layout
[14:11:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:09] [CLEANUP] ========================================
[14:11:09] [SERVER] Starting reconnect polling (5s interval)
[14:11:09] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:11:09] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:11:09] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:11:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18822, 18821, 18820, 18819, 18818]
[14:11:09] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:09] [CELL_UPLOAD] → not my message, setting complete
[14:11:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:09] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:09] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:10] [INCREMENTAL_SYNC] ✅ No new messages
[14:11:10] [FAST_REFRESH] Incremental sync complete - 51 messages
[14:11:10] [PUSH] Silent push received
[14:11:10] [PUSH_EMBED] No embedded message_data in notification
[14:11:10] [PUSH] No embedded data, pre-loading messages from server
[14:11:10] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:11:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:11:10] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[14:11:10] [COMBINED_FETCH] Loaded 7588 read receipts, 916 messages with reactions
[14:11:10] [FOREGROUND] Enriched 2 messages with readBy data from server
[14:11:10] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:11:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18822, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
[14:11:10] [PUSH] Parsed message_id: 18822
[14:11:10] [PUSH] Parsed operation_type: 3
[14:11:10] [PUSH] Taking direct action: opType=3, messageId=18822
[14:11:10] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18822
[14:11:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18822, 18821, 18820, 18819, 18818]
[14:11:10] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:10] [CELL_UPLOAD] → not my message, setting complete
[14:11:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:10] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:10] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:10] [COMBINED_FETCH] Loaded 7588 read receipts, 916 messages with reactions
[14:11:10] [FAST_REFRESH] Enriched 51 messages with readBy data
[14:11:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18822, 18821, 18820, 18819, 18818]
[14:11:10] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:10] [CELL_UPLOAD] → not my message, setting complete
[14:11:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:10] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:10] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true[14:11:10] [LOG] Pruned 189 entries older than 3 hours
[14:11:10] [SECURITY] Restored real session: ILUIWU
[14:11:10] [SECURITY] Restored real session: ILUIWU
[14:11:11] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[14:11:11] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[14:11:11] [AUTH] Cache had 50 messages, maxExistingId=18822, inserted 0 truly new
[14:11:11] [AUTH] UI update complete
[14:11:11] [FAKE MODE] Exiting fake mode, restoring real session
[14:11:11] [SECURITY] Restored real session: ILUIWU
[14:11:11] [SECURITY] Saved real session: ILUIWU
[14:11:11] [FAKE MODE] ✅ Restored real session: ILUIWU
[14:11:11] [FAKE MODE] Loaded 50 messages (limited to page size)
[14:11:11] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[14:11:11] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[14:11:11] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:11] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:11] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:11] [CELL_UPLOAD] → not my message, setting complete
[14:11:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:11] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:11:11] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:11] [CELL_UPLOAD] → not my message, setting complete
[14:11:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:11] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:11] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:11] [USER] ✅ User registered successfully
[14:11:11] [PUSH] User registration after token update: success
[14:11:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:11] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:11] HELLO → sent (cached token, role=query)
[14:11:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:11] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:11] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:11] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:11] [CLEANUP] ========================================
[14:11:11] [CLEANUP] Cleaning up all agent connections and views
[14:11:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:11] [CLEANUP] Stopped and removed 0 video connections
[14:11:11] [CLEANUP] Removed 0 video views
[14:11:11] [CLEANUP] Removed 0 feed scroll views
[14:11:11] [CLEANUP] Removed 0 status labels
[14:11:11] [CLEANUP] Reset agent query state
[14:11:11] [CLEANUP] Updated page indicator
[14:11:11] [CLEANUP] Rebuilt video layout
[14:11:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:11] [CLEANUP] ========================================
[14:11:11] [SERVER] Starting reconnect polling (5s interval)
[14:11:11] [CLEANUP] ========================================
[14:11:11] [CLEANUP] Cleaning up all agent connections and views
[14:11:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:11] [CLEANUP] Stopped and removed 0 video connections
[14:11:11] [CLEANUP] Removed 0 video views
[14:11:11] [CLEANUP] Removed 0 feed scroll views
[14:11:11] [CLEANUP] Removed 0 status labels
[14:11:11] [CLEANUP] Reset agent query state
[14:11:11] [CLEANUP] Updated page indicator
[14:11:11] [CLEANUP] Rebuilt video layout
[14:11:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:11] [CLEANUP] ========================================
[14:11:11] [SERVER] Starting reconnect polling (5s interval)
[14:11:11] [COMBINED_FETCH] Loaded 7588 read receipts, 916 messages with reactions
[14:11:11] [FAKE MODE] Enriched 50 messages with readBy data
[14:11:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:11:12] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:12] [CELL_UPLOAD] → not my message, setting complete
[14:11:12] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:12] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:12] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:12] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:13] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:13] HELLO → sent (cached token, role=query)
[14:11:13] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:13] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:13] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:13] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:13] [CLEANUP] ========================================
[14:11:13] [CLEANUP] Cleaning up all agent connections and views
[14:11:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:13] [CLEANUP] Stopped and removed 0 video connections
[14:11:13] [CLEANUP] Removed 0 video views
[14:11:13] [CLEANUP] Removed 0 feed scroll views
[14:11:13] [CLEANUP] Removed 0 status labels
[14:11:13] [CLEANUP] Reset agent query state
[14:11:13] [CLEANUP] Updated page indicator
[14:11:13] [CLEANUP] Rebuilt video layout
[14:11:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:13] [CLEANUP] ========================================
[14:11:13] [SERVER] Starting reconnect polling (5s interval)
[14:11:13] [CLEANUP] ========================================
[14:11:13] [CLEANUP] Cleaning up all agent connections and views
[14:11:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:13] [CLEANUP] Stopped and removed 0 video connections
[14:11:13] [CLEANUP] Removed 0 video views
[14:11:13] [CLEANUP] Removed 0 feed scroll views
[14:11:13] [CLEANUP] Removed 0 status labels
[14:11:13] [CLEANUP] Reset agent query state
[14:11:13] [CLEANUP] Updated page indicator
[14:11:13] [CLEANUP] Rebuilt video layout
[14:11:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:13] [CLEANUP] ========================================
[14:11:13] [SERVER] Starting reconnect polling (5s interval)
[14:11:13] [CAMERA] Switch-over factors: [2, 8]
[14:11:13] [CAMERA] Virtual device max zoom: 189.0
[14:11:13] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[14:11:13] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[14:11:13] [CAMERA] 2x: virtual device at zoom 4.0
[14:11:13] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[14:11:13] [CAMERA] 8x: virtual device at zoom 16.0
[14:11:13] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[14:11:13] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[14:11:13] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[14:11:13] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[14:11:13] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[14:11:13] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[14:11:13] [VOLUME] Starting volume button monitoring
[14:11:13] [VOLUME] Hidden MPVolumeView installed
[14:11:13] [VOLUME] Observing volume (no audio session activation), initial volume: 0.3
[14:11:13] [VOLUME] Volume observation started
[14:11:13] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[14:11:13] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[14:11:14] [CAMERA] Configuring focus for Front Camera
[14:11:14] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[14:11:14] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[14:11:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:15] [CAMERA] Switched to continuous autofocus, lens position: 0.7529412
[14:11:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:15] HELLO → sent (cached token, role=query)
[14:11:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:15] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:15] [CLEANUP] ========================================
[14:11:15] [CLEANUP] Cleaning up all agent connections and views
[14:11:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:15] [CLEANUP] Stopped and removed 0 video connections
[14:11:15] [CLEANUP] Removed 0 video views
[14:11:15] [CLEANUP] Removed 0 feed scroll views
[14:11:15] [CLEANUP] Removed 0 status labels
[14:11:15] [CLEANUP] Reset agent query state
[14:11:15] [CLEANUP] Updated page indicator
[14:11:15] [CLEANUP] Rebuilt video layout
[14:11:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:15] [CLEANUP] ========================================
[14:11:15] [SERVER] Starting reconnect polling (5s interval)
[14:11:15] [CLEANUP] ========================================
[14:11:15] [CLEANUP] Cleaning up all agent connections and views
[14:11:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:15] [CLEANUP] Stopped and removed 0 video connections
[14:11:15] [CLEANUP] Removed 0 video views
[14:11:15] [CLEANUP] Removed 0 feed scroll views
[14:11:15] [CLEANUP] Removed 0 status labels
[14:11:15] [CLEANUP] Reset agent query state
[14:11:15] [CLEANUP] Updated page indicator
[14:11:15] [CLEANUP] Rebuilt video layout
[14:11:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:15] [CLEANUP] ========================================
[14:11:15] [SERVER] Starting reconnect polling (5s interval)
[14:11:16] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:16] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:17] HELLO → sent (cached token, role=query)
[14:11:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:17] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:17] [CLEANUP] ========================================
[14:11:17] [CLEANUP] Cleaning up all agent connections and views
[14:11:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:17] [CLEANUP] Stopped and removed 0 video connections
[14:11:17] [CLEANUP] Removed 0 video views
[14:11:17] [CLEANUP] Removed 0 feed scroll views
[14:11:17] [CLEANUP] Removed 0 status labels
[14:11:17] [CLEANUP] Reset agent query state
[14:11:17] [CLEANUP] Updated page indicator
[14:11:17] [CLEANUP] Rebuilt video layout
[14:11:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:17] [CLEANUP] ========================================
[14:11:17] [SERVER] Starting reconnect polling (5s interval)
[14:11:17] [CLEANUP] ========================================
[14:11:17] [CLEANUP] Cleaning up all agent connections and views
[14:11:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:17] [CLEANUP] Stopped and removed 0 video connections
[14:11:17] [CLEANUP] Removed 0 video views
[14:11:17] [CLEANUP] Removed 0 feed scroll views
[14:11:17] [CLEANUP] Removed 0 status labels
[14:11:17] [CLEANUP] Reset agent query state
[14:11:17] [CLEANUP] Updated page indicator
[14:11:17] [CLEANUP] Rebuilt video layout
[14:11:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:17] [CLEANUP] ========================================
[14:11:17] [SERVER] Starting reconnect polling (5s interval)
[14:11:18] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:11:18] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:18] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:19] HELLO → sent (cached token, role=query)
[14:11:19] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:19] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:19] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:19] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:19] [CLEANUP] ========================================
[14:11:19] [CLEANUP] Cleaning up all agent connections and views
[14:11:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:19] [CLEANUP] Stopped and removed 0 video connections
[14:11:19] [CLEANUP] Removed 0 video views
[14:11:19] [CLEANUP] Removed 0 feed scroll views
[14:11:19] [CLEANUP] Removed 0 status labels
[14:11:19] [CLEANUP] Reset agent query state
[14:11:19] [CLEANUP] Updated page indicator
[14:11:19] [CLEANUP] Rebuilt video layout
[14:11:19] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:19] [CLEANUP] ========================================
[14:11:19] [SERVER] Starting reconnect polling (5s interval)
[14:11:19] [CLEANUP] ========================================
[14:11:19] [CLEANUP] Cleaning up all agent connections and views
[14:11:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:19] [CLEANUP] Stopped and removed 0 video connections
[14:11:19] [CLEANUP] Removed 0 video views
[14:11:19] [CLEANUP] Removed 0 feed scroll views
[14:11:19] [CLEANUP] Removed 0 status labels
[14:11:19] [CLEANUP] Reset agent query state
[14:11:19] [CLEANUP] Updated page indicator
[14:11:19] [CLEANUP] Rebuilt video layout
[14:11:19] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:19] [CLEANUP] ========================================
[14:11:19] [SERVER] Starting reconnect polling (5s interval)
[14:11:20] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[14:11:20] [HAPTIC] Triggering peek haptic for photo
[14:11:20] [VOLUME] Stopping volume button monitoring
[14:11:20] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[14:11:20] [GALLERY_DB] Raw datesent for msg 18822: '2026-01-23 12:56:23'
[14:11:20] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[14:11:20] [GALLERY_DB] Raw datesent for msg 18788: '2026-01-23 08:03:10'
[14:11:20] [GALLERY_DB] ✅ Loaded 489 media messages
[14:11:20] [GALLERY] Filtered 489 -> 449 (only with local thumbnails)
[14:11:20] [GALLERY] First 5 after sort (newest first):
[14:11:20] [GALLERY] 0: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[14:11:20] [GALLERY] 1: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[14:11:20] [GALLERY] 2: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[14:11:20] [GALLERY] 3: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[14:11:20] [GALLERY] 4: id=18772, date=2026-01-23 07:20:17, file=c50bfdf58c1dbca1.jpg
[14:11:20] [CLIENT_SIG] Event received: type=0 messageId=18823
[14:11:20] [WS_EVENT] Received event: type=0, messageId=18823
[14:11:20] [WS_EVENT] 📨 New message notification (msgId=18823) - triggering incremental refresh, currentMsgCount=50
[14:11:20] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[14:11:20] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18822
[14:11:20] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:11:20 +0000 - type: unknown, operation_type: 0, message_id: 18823, session_id: ILUIWU, state: 0
[14:11:20] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18823, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 13:11:18";
"file_name" = "";
message = "I was thinking the same before but global position much more better I think. What is your opinion";
"message_id" = 18823;
"message_type" = 0;
"prev_session_message_id" = 18822;
"replied_message" = "Oh wow. I would have bet you would choose IT OPS Manager. But indeed maybe program or delivery manager suits you more.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18821;
"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;
}]
[14:11:20] [PUSH] App active - suppressing notification UI, posting internal event
[14:11:20] [PUSH_EMBED] 📩 Received embedded message: id=18823, type=0, sender=Esra
[14:11:20] [PUSH_EMBED] ✅ Saved message 18823 to local DB (sync)
[14:11:20] [PUSH_EMBED] Created new cache with embedded message 18823
[14:11:20] [PUSH_EMBED] Fetching evolution data for message 18823 in background
[14:11:20] [PUSH_EMBED] ✅ Fully processed message 18823
[14:11:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18823, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 13:11:18";
"file_name" = "";
message = "I was thinking the same before but global position much more better I think. What is your opinion";
"message_id" = 18823;
"message_type" = 0;
"prev_session_message_id" = 18822;
"replied_message" = "Oh wow. I would have bet you would choose IT OPS Manager. But indeed maybe program or delivery manager suits you more.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18821;
"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;
}]
[14:11:20] [PUSH_EMBED_VC] Processing embedded message: id=18823, type=0, sender=Esra, prevId=18822
[14:11:20] [PUSH_EMBED_VC] Inserted message 18823 into allMessagesWithReadBy (now 51 messages)
[14:11:20] [PUSH_EMBED_VC] ✅ Previous message 18822 exists in memory
[14:11:20] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:11:20] [PUSH] Parsed message_id: 18823
[14:11:20] [PUSH] Parsed operation_type: 0
[14:11:20] [PUSH] Taking direct action: opType=0, messageId=18823
[14:11:20] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18823
[14:11:20] [PUSH] ⚡ Message 18823 already in memory - skipping duplicate notification entirely
[14:11:20] [PUSH_EMBED_VC] Saved message 18823 to local DB
[14:11:20] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:20] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:20] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:11:20] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:11:20] [PUSH_UI] Message 18823 already in memory - skipping insert
[14:11:20] [PUSH] Silent push received
[14:11:20] [PUSH_EMBED] 📩 Received embedded message: id=18823, type=0, sender=Esra
[14:11:20] [PUSH_EMBED] ✅ Saved message 18823 to local DB (sync)
[14:11:20] [PUSH_EMBED] Created new cache with embedded message 18823
[14:11:20] [PUSH_EMBED] Fetching evolution data for message 18823 in background
[14:11:20] [PUSH_EMBED] ✅ Fully processed message 18823
[14:11:20] [PUSH] Embedded message handled instantly from silent push
[14:11:20] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:11:20] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:11:20] [PUSH_UI] Message 18823 already in memory - skipping insert
[14:11:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:11:18";
"file_name" = "";
message = "I was thinking the same before but global position much more better I think. What is your opinion";
"message_id" = 18823;
"message_type" = 0;
"prev_session_message_id" = 18822;
"replied_message" = "Oh wow. I would have bet you would choose IT OPS Manager. But indeed maybe program or delivery manager suits you more.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18821;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18823, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:11:20] [PUSH_EMBED_VC] Message 18823 already in memory - skipping
[14:11:20] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:11:20] [PUSH] Parsed message_id: 18823
[14:11:20] [PUSH] Parsed operation_type: 0
[14:11:20] [PUSH] Taking direct action: opType=0, messageId=18823
[14:11:20] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18823
[14:11:20] [PUSH] ⚡ Message 18823 already in memory - skipping duplicate notification entirely
[14:11:20] [PUSH_EMBED] Got evolution data for message 18823, saving to local DB
[14:11:20] [PUSH_EMBED] Saved evolution data for message 18823
[14:11:20] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:11:20] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:11:20] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:11:20] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[14:11:20] [PUSH_EMBED] Got evolution data for message 18823, saving to local DB
[14:11:20] [PUSH_EMBED] Saved evolution data for message 18823
[14:11:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:11:20] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:20] [CELL_UPLOAD] → not my message, setting complete
[14:11:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true
[14:11:20] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:20] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:20] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18822 → 18823
[14:11:20] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:20] HELLO → sent (cached token, role=query)
[14:11:20] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:20] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:20] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:20] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:20] [CLEANUP] ========================================
[14:11:20] [CLEANUP] Cleaning up all agent connections and views
[14:11:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:20] [CLEANUP] Stopped and removed 0 video connections
[14:11:20] [CLEANUP] Removed 0 video views
[14:11:20] [CLEANUP] Removed 0 feed scroll views
[14:11:20] [CLEANUP] Removed 0 status labels
[14:11:20] [CLEANUP] Reset agent query state
[14:11:20] [CLEANUP] Updated page indicator
[14:11:20] [CLEANUP] Rebuilt video layout
[14:11:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:20] [CLEANUP] ========================================
[14:11:20] [SERVER] Starting reconnect polling (5s interval)
[14:11:20] [CLEANUP] ========================================
[14:11:20] [CLEANUP] Cleaning up all agent connections and views
[14:11:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:20] [CLEANUP] Stopped and removed 0 video connections
[14:11:20] [CLEANUP] Removed 0 video views
[14:11:20] [CLEANUP] Removed 0 feed scroll views
[14:11:20] [CLEANUP] Removed 0 status labels
[14:11:20] [CLEANUP] Reset agent query state
[14:11:20] [CLEANUP] Updated page indicator
[14:11:20] [CLEANUP] Rebuilt video layout
[14:11:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:20] [CLEANUP] ========================================
[14:11:20] [SERVER] Starting reconnect polling (5s interval)
[14:11:21] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:11:22] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:22] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:22] [PUSH] Silent push received
[14:11:22] [PUSH_EMBED] No embedded message_data in notification
[14:11:22] [PUSH] No embedded data, pre-loading messages from server
[14:11:22] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:11:22] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:11:22] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:22] HELLO → sent (cached token, role=query)
[14:11:22] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:22] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:22] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:22] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:22] [CLEANUP] ========================================
[14:11:22] [CLEANUP] Cleaning up all agent connections and views
[14:11:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:22] [CLEANUP] Stopped and removed 0 video connections
[14:11:22] [CLEANUP] Removed 0 video views
[14:11:22] [CLEANUP] Removed 0 feed scroll views
[14:11:22] [CLEANUP] Removed 0 status labels
[14:11:22] [CLEANUP] Reset agent query state
[14:11:22] [CLEANUP] Updated page indicator
[14:11:22] [CLEANUP] Rebuilt video layout
[14:11:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:22] [CLEANUP] ========================================
[14:11:22] [SERVER] Starting reconnect polling (5s interval)
[14:11:22] [CLEANUP] ========================================
[14:11:22] [CLEANUP] Cleaning up all agent connections and views
[14:11:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:22] [CLEANUP] Stopped and removed 0 video connections
[14:11:22] [CLEANUP] Removed 0 video views
[14:11:22] [CLEANUP] Removed 0 feed scroll views
[14:11:22] [CLEANUP] Removed 0 status labels
[14:11:22] [CLEANUP] Reset agent query state
[14:11:22] [CLEANUP] Updated page indicator
[14:11:22] [CLEANUP] Rebuilt video layout
[14:11:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:22] [CLEANUP] ========================================
[14:11:22] [SERVER] Starting reconnect polling (5s interval)
[14:11:22] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[14:11:22] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:11:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18823, AnyHashable("aps"): {
"content-available" = 1;
}]
[14:11:22] [PUSH] Parsed message_id: 18823
[14:11:22] [PUSH] Parsed operation_type: 3
[14:11:22] [PUSH] Taking direct action: opType=3, messageId=18823
[14:11:22] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18823
[14:11:22] [CLIENT_SIG] Event received: type=3 messageId=18823
[14:11:22] [WS_EVENT] Received event: type=3, messageId=18823
[14:11:22] [WS_EVENT] Read receipt for message 18823 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:11:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:24] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:24] HELLO → sent (cached token, role=query)
[14:11:24] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:24] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:24] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:24] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:24] [CLEANUP] ========================================
[14:11:24] [CLEANUP] Cleaning up all agent connections and views
[14:11:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:24] [CLEANUP] Stopped and removed 0 video connections
[14:11:24] [CLEANUP] Removed 0 video views
[14:11:24] [CLEANUP] Removed 0 feed scroll views
[14:11:24] [CLEANUP] Removed 0 status labels
[14:11:24] [CLEANUP] Reset agent query state
[14:11:24] [CLEANUP] Updated page indicator
[14:11:24] [CLEANUP] Rebuilt video layout
[14:11:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:24] [CLEANUP] ========================================
[14:11:24] [SERVER] Starting reconnect polling (5s interval)
[14:11:24] [CLEANUP] ========================================
[14:11:24] [CLEANUP] Cleaning up all agent connections and views
[14:11:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:24] [CLEANUP] Stopped and removed 0 video connections
[14:11:24] [CLEANUP] Removed 0 video views
[14:11:24] [CLEANUP] Removed 0 feed scroll views
[14:11:24] [CLEANUP] Removed 0 status labels
[14:11:24] [CLEANUP] Reset agent query state
[14:11:24] [CLEANUP] Updated page indicator
[14:11:24] [CLEANUP] Rebuilt video layout
[14:11:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:24] [CLEANUP] ========================================
[14:11:24] [SERVER] Starting reconnect polling (5s interval)
[14:11:24] Chosen timer = 0
[14:11:24] [MEDIA_SEND] ========== NEW UPLOAD ==========
[14:11:24] [MEDIA_SEND] onSend called
[14:11:24] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/5BD2E7B0-B05C-40B0-8025-6F3C435A6433.jpg
[14:11:24] [MEDIA_SEND] Source file exists: true
[14:11:24] [MEDIA_SEND] Original filename: 5BD2E7B0-B05C-40B0-8025-6F3C435A6433.jpg
[14:11:24] [MEDIA_SEND] Random filename: 0d08f6fe6141897c.jpg
[14:11:24] [MEDIA_SEND] File extension: jpg
[14:11:24] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/0d08f6fe6141897c.jpg
[14:11:24] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_0d08f6fe6141897c.jpg
[14:11:24] [MEDIA_SEND] Source file size: 892785 bytes (0.85 MB)
[14:11:24] [MEDIA_SEND] Copying file (<100MB)
[14:11:24] [MEDIA_SEND] File copied successfully
[14:11:24] [MEDIA_SEND] Destination file exists: true
[14:11:24] [MEDIA_SEND] Destination file size: 892785 bytes
[14:11:24] [MEDIA_SEND] Creating thumbnail...
[14:11:24] [MEDIA_SEND] Thumbnail created in 0.02s
[14:11:24] [MEDIA_SEND] Thumbnail dimensions: (225.0, 400.0)
[14:11:24] [MEDIA_SEND] Thumbnail exists: true
[14:11:24] [MEDIA_SEND] Thumbnail file size: 35992 bytes
[14:11:24] [MEDIA_SEND] Sending message to server...
[14:11:24] [MEDIA_SEND] Caption: ''
[14:11:24] [MEDIA_SEND] Timer: 0
[14:11:24] [MEDIA_SEND] Filename: 0d08f6fe6141897c.jpg
[14:11:24] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[14:11:24] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[14:11:24] [MEDIA_SEND] 📤 Creating media message: id=-4, file=0d08f6fe6141897c.jpg, isGiphy=false, upload_status=1 (pending)
[14:11:24] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[14:11:24] [SEND_MESSAGE] ✅ Added optimistic message id=-4 to arrays, newMsgCount=52
[14:11:24] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-4, 18823, 18822, 18821, 18820]
[14:11:24] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:11:24] [CELL_UPLOAD] configure: msgId=-4, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[14:11:24] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[14:11:24] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:24] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[14:11:24] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:11:24] [MEDIA_SEND] sendMessage API call completed
[14:11:24] [MEDIA_SEND] Starting THUMBNAIL upload: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[14:11:24] [UPLOAD_ENQUEUE] 📥 File: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[14:11:24] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[14:11:24] [UPLOAD_QUEUE] Enqueued upload id=647 for t_0d08f6fe6141897c.jpg
[14:11:24] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[14:11:24] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[14:11:24] [UPLOAD_DEBUG] Item ID: 647
[14:11:24] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] Random filename: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] Session ID: ILUIWU
[14:11:24] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[14:11:24] [UPLOAD_DEBUG] Retry count: 0
[14:11:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_0d08f6fe6141897c.jpg, status=uploading (2), progress=0.0%
[14:11:24] [UPLOAD_DEBUG] File exists: true
[14:11:24] [UPLOAD_DEBUG] File size: 35992 bytes (0.0 MB)
[14:11:24] [GALLERY_DB] Raw datesent for msg -4: '2026-01-23 13:11:24'
[14:11:24] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[14:11:24] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[14:11:24] [UPLOAD_DEBUG] --- startStandardUpload ---
[14:11:24] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[14:11:24] [GALLERY_DB] Raw datesent for msg 18822: '2026-01-23 12:56:23'
[14:11:24] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[14:11:24] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[14:11:24] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/EAAFA8EB-F6E8-4DA2-AB3B-9613984CDFFE.upload
[14:11:24] [UPLOAD_DEBUG] File size: 35992 bytes, in-memory threshold: 10485760 bytes
[14:11:24] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[14:11:24] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (36474 bytes)
[14:11:24] [UPLOAD_DEBUG] Creating background upload task...
[14:11:24] [UPLOAD_DEBUG] Task created with identifier: 3
[14:11:24] [UPLOAD_DEBUG] Added to activeUploads dictionary
[14:11:24] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[14:11:24] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=3 | file=t_0d08f6fe6141897c.jpg | size=0.0MB | retries=0
[14:11:24] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[14:11:24] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[14:11:24] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18824,"session_id":"ILUIWU","message_type":1,"file_name":"0d08f6fe6141897c.jpg","datesent_utc":"2026-01-23 13:11:24"}
[14:11:24] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 18824, "message_type": 1, "session_id": ILUIWU, "file_name": 0d08f6fe6141897c.jpg, "datesent_utc": 2026-01-23 13:11:24]
[14:11:24] [DB_UPGRADE] Upgrading message ID: -4 → 18824, preserveOriginalDate=false
[14:11:24] [GALLERY_DB] ✅ Loaded 490 media messages
[14:11:24] [DB_UPGRADE] ✅ Upgraded -4 → 18824 with send_status=0, 1 row(s) affected
[14:11:24] [UPLOAD_PROGRESS] t_0d08f6fe6141897c.jpg: 100% (0.0/0.0 MB) task=3
[14:11:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_0d08f6fe6141897c.jpg, status=uploading (2), progress=100.0%
[14:11:24] [GALLERY] Filtered 490 -> 450 (only with local thumbnails)
[14:11:24] [GALLERY] First 5 after sort (newest first):
[14:11:24] [GALLERY] 0: id=-4, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[14:11:24] [GALLERY] 1: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[14:11:24] [GALLERY] 2: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[14:11:24] [GALLERY] 3: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[14:11:24] [GALLERY] 4: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[14:11:24] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:24] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:24] [UPLOAD_RESPONSE] Started receiving response for task 3
[14:11:24] [UPLOAD_METRICS] Task 3 metrics:
[14:11:24] [UPLOAD_METRICS] Total time: 0.17s
[14:11:24] [UPLOAD_METRICS] Upload time: 0.00s
[14:11:24] [UPLOAD_METRICS] Response time: 0.00s
[14:11:24] [UPLOAD_METRICS] Network protocol: http/1.1
[14:11:24] [UPLOAD_METRICS] Proxy: no
[14:11:24] [UPLOAD_METRICS] Reused connection: no
[14:11:24] [UPLOAD_COMPLETE] ========== Task Completed ==========
[14:11:24] [UPLOAD_COMPLETE] Task ID: 3
[14:11:24] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[14:11:24] [UPLOAD_COMPLETE] Filename: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_COMPLETE] Retry count: 0
[14:11:24] [UPLOAD_COMPLETE] HTTP Status: 200
[14:11:24] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Connection"): Keep-Alive, AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Date"): Fri, 23 Jan 2026 13:11:24 GMT, AnyHashable("Content-Type"): application/json, AnyHashable("Content-Length"): 217]
[14:11:24] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_0d08f6fe6141897c.jpg","orig_name":"t_0d08f6fe6141897c.jpg","size":35992,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":36474}}
[14:11:24] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[14:11:24] [UPLOAD_COMPLETE] Server filename: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_VERIFY] Verifying file exists: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_STATUS] 📬 Received notification: file=t_0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_STATUS] 💾 Updating DB: file=t_0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_0d08f6fe6141897c.jpg not found in local_messages
[14:11:24] [CLIENT_SIG] Event received: type=0 messageId=18824
[14:11:24] [WS_EVENT] Received event: type=0, messageId=18824
[14:11:24] [WS_EVENT] 📨 New message notification (msgId=18824) - triggering incremental refresh, currentMsgCount=52
[14:11:24] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[14:11:24] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18824
[14:11:24] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -4 → 18824
[14:11:24] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -4 → 18824
[14:11:24] ReloadData 9
[14:11:24] [UPLOAD_VERIFY] ✅ File verified: t_0d08f6fe6141897c.jpg (size: 35992)
[14:11:24] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_0d08f6fe6141897c.jpg | id=647 | retries=0
[14:11:24] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[14:11:24] [UPLOAD_COMPLETE] ✅ File: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_COMPLETE] ✅ Queue ID: 647
[14:11:24] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[14:11:24] [UPLOAD_COMPLETE] ✅ Server filename: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[14:11:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_0d08f6fe6141897c.jpg, status=complete (0), progress=0.0%
[14:11:24] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=647
[14:11:24] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:24] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:24] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[14:11:24] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[14:11:24] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:24] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[14:11:24] [UPLOAD_STATUS] 📬 Received notification: file=t_0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_STATUS] 💾 Updating DB: file=t_0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_0d08f6fe6141897c.jpg not found in local_messages
[14:11:24] [INCREMENTAL_SYNC] ✅ No new messages
[14:11:24] [UPLOAD_STATUS] 📬 Received notification: file=t_0d08f6fe6141897c.jpg, status=0 (complete)
[14:11:24] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_STATUS] 💾 Updating DB: file=t_0d08f6fe6141897c.jpg, status=0 (complete)
[14:11:24] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_0d08f6fe6141897c.jpg not found in local_messages
[14:11:24] [MEDIA_SEND] Thumbnail uploaded successfully in 0.20s
[14:11:24] [MEDIA_SEND] Thumbnail server filename: t_0d08f6fe6141897c.jpg
[14:11:24] [MEDIA_SEND] Starting MAIN FILE upload: 0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[14:11:24] [UPLOAD_ENQUEUE] 📥 File: 0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[14:11:24] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.9 MB
[14:11:24] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[14:11:24] [UPLOAD_QUEUE] Enqueued upload id=648 for 0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[14:11:24] [UPLOAD_DEBUG] Item ID: 648
[14:11:24] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] Random filename: 0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] Session ID: ILUIWU
[14:11:24] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[14:11:24] [UPLOAD_DEBUG] Retry count: 0
[14:11:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=0d08f6fe6141897c.jpg, status=uploading (2), progress=0.0%
[14:11:24] [UPLOAD_STATUS] 📬 Received notification: file=0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 1 → 2
[14:11:24] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[14:11:24] [UPLOAD_STATUS] 💾 Updating DB: file=0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:24] [UPLOAD_DEBUG] File exists: true
[14:11:24] [UPLOAD_DEBUG] File size: 892785 bytes (0.9 MB)
[14:11:24] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[14:11:24] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[14:11:24] [UPLOAD_DEBUG] --- startStandardUpload ---
[14:11:24] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[14:11:24] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[14:11:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=0d08f6fe6141897c.jpg
[14:11:24] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/2CDC00E7-A81B-467C-9FEF-6DF9FE152637.upload
[14:11:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:24] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[14:11:24] [UPLOAD_DEBUG] File size: 892785 bytes, in-memory threshold: 10485760 bytes
[14:11:24] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[14:11:24] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (893261 bytes)
[14:11:24] [UPLOAD_DEBUG] Creating background upload task...
[14:11:24] [UPLOAD_DEBUG] Task created with identifier: 4
[14:11:24] [UPLOAD_DEBUG] Added to activeUploads dictionary
[14:11:24] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[14:11:24] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=4 | file=0d08f6fe6141897c.jpg | size=0.9MB | retries=0
[14:11:24] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[14:11:24] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[14:11:25] [UPLOAD_PROGRESS] 0d08f6fe6141897c.jpg: 100% (0.9/0.9 MB) task=4
[14:11:25] [UPLOAD_NOTIFY] 📣 Posting notification: file=0d08f6fe6141897c.jpg, status=uploading (2), progress=100.0%
[14:11:25] [UPLOAD_STATUS] 📬 Received notification: file=0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:25] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[14:11:25] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[14:11:25] [UPLOAD_STATUS] 💾 Updating DB: file=0d08f6fe6141897c.jpg, status=2 (uploading)
[14:11:25] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=0d08f6fe6141897c.jpg
[14:11:25] [MEDIA_SEND] Main upload progress: 100%
[14:11:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[14:11:25] [PROGRESS] Updated cell for 0d08f6fe6141897c.jpg: 100%
[14:11:26] [UPLOAD_RESPONSE] Started receiving response for task 4
[14:11:26] [UPLOAD_METRICS] Task 4 metrics:
[14:11:26] [UPLOAD_METRICS] Total time: 1.14s
[14:11:26] [UPLOAD_METRICS] Upload time: 0.25s
[14:11:26] [UPLOAD_METRICS] Response time: 0.00s
[14:11:26] [UPLOAD_METRICS] Network protocol: http/1.1
[14:11:26] [UPLOAD_METRICS] Proxy: no
[14:11:26] [UPLOAD_METRICS] Reused connection: yes
[14:11:26] [UPLOAD_COMPLETE] ========== Task Completed ==========
[14:11:26] [UPLOAD_COMPLETE] Task ID: 4
[14:11:26] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[14:11:26] [UPLOAD_COMPLETE] Filename: 0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_COMPLETE] Retry count: 0
[14:11:26] [UPLOAD_COMPLETE] HTTP Status: 200
[14:11:26] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Type"): application/json, AnyHashable("Content-Length"): 215, AnyHashable("Date"): Fri, 23 Jan 2026 13:11:24 GMT, AnyHashable("Connection"): Keep-Alive, AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Server"): Apache/2.4.65 (Debian)]
[14:11:26] [UPLOAD_COMPLETE] Response body (215 bytes): {"ok":true,"file_name":"0d08f6fe6141897c.jpg","orig_name":"0d08f6fe6141897c.jpg","size":892785,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":893261}}
[14:11:26] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[14:11:26] [UPLOAD_COMPLETE] Server filename: 0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_VERIFY] Verifying file exists: 0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_VERIFY] ✅ File verified: 0d08f6fe6141897c.jpg (size: 892785)
[14:11:26] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=0d08f6fe6141897c.jpg | id=648 | retries=0
[14:11:26] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[14:11:26] [UPLOAD_COMPLETE] ✅ File: 0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_COMPLETE] ✅ Queue ID: 648
[14:11:26] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[14:11:26] [UPLOAD_COMPLETE] ✅ Server filename: 0d08f6fe6141897c.jpg
[14:11:26] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[14:11:26] [UPLOAD_NOTIFY] 📣 Posting notification: file=0d08f6fe6141897c.jpg, status=complete (0), progress=0.0%
[14:11:26] [UPLOAD_STATUS] 📬 Received notification: file=0d08f6fe6141897c.jpg, status=0 (complete)
[14:11:26] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 0
[14:11:26] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=0
[14:11:26] [UPLOAD_STATUS] 💾 Updating DB: file=0d08f6fe6141897c.jpg, status=0 (complete)
[14:11:26] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=648
[14:11:26] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=0d08f6fe6141897c.jpg
[14:11:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:26] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[14:11:26] [MEDIA_SEND] Server filename: 0d08f6fe6141897c.jpg
[14:11:26] [MEDIA_SEND] Main upload duration: 1.17s
[14:11:26] [MEDIA_SEND] Total upload duration: 1.37s
[14:11:26] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[14:11:26] [PROGRESS] Updated cell for 0d08f6fe6141897c.jpg: 100%
[14:11:26] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:26] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:26] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:26] HELLO → sent (cached token, role=query)
[14:11:26] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:26] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:26] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:26] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:26] [CLEANUP] ========================================
[14:11:26] [CLEANUP] Cleaning up all agent connections and views
[14:11:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:26] [CLEANUP] Stopped and removed 0 video connections
[14:11:26] [CLEANUP] Removed 0 video views
[14:11:26] [CLEANUP] Removed 0 feed scroll views
[14:11:26] [CLEANUP] Removed 0 status labels
[14:11:26] [CLEANUP] Reset agent query state
[14:11:26] [CLEANUP] Updated page indicator
[14:11:26] [CLEANUP] Rebuilt video layout
[14:11:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:26] [CLEANUP] ========================================
[14:11:26] [SERVER] Starting reconnect polling (5s interval)
[14:11:26] [CLEANUP] ========================================
[14:11:26] [CLEANUP] Cleaning up all agent connections and views
[14:11:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:26] [CLEANUP] Stopped and removed 0 video connections
[14:11:26] [CLEANUP] Removed 0 video views
[14:11:26] [CLEANUP] Removed 0 feed scroll views
[14:11:26] [CLEANUP] Removed 0 status labels
[14:11:26] [CLEANUP] Reset agent query state
[14:11:26] [CLEANUP] Updated page indicator
[14:11:26] [CLEANUP] Rebuilt video layout
[14:11:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:26] [CLEANUP] ========================================
[14:11:26] [SERVER] Starting reconnect polling (5s interval)
[14:11:27] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:11:28] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:28] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:28] HELLO → sent (cached token, role=query)
[14:11:28] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:28] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:28] [CLEANUP] ========================================
[14:11:28] [CLEANUP] Cleaning up all agent connections and views
[14:11:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:28] [CLEANUP] Stopped and removed 0 video connections
[14:11:28] [CLEANUP] Removed 0 video views
[14:11:28] [CLEANUP] Removed 0 feed scroll views
[14:11:28] [CLEANUP] Removed 0 status labels
[14:11:28] [CLEANUP] Reset agent query state
[14:11:28] [CLEANUP] Updated page indicator
[14:11:28] [CLEANUP] Rebuilt video layout
[14:11:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:28] [CLEANUP] ========================================
[14:11:28] [SERVER] Starting reconnect polling (5s interval)
[14:11:28] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:28] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:28] [CLEANUP] ========================================
[14:11:28] [CLEANUP] Cleaning up all agent connections and views
[14:11:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:28] [CLEANUP] Stopped and removed 0 video connections
[14:11:28] [CLEANUP] Removed 0 video views
[14:11:28] [CLEANUP] Removed 0 feed scroll views
[14:11:28] [CLEANUP] Removed 0 status labels
[14:11:28] [CLEANUP] Reset agent query state
[14:11:28] [CLEANUP] Updated page indicator
[14:11:28] [CLEANUP] Rebuilt video layout
[14:11:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:28] [CLEANUP] ========================================
[14:11:28] [SERVER] Starting reconnect polling (5s interval)
[14:11:28] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[14:11:28] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[14:11:29] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:29] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:30] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:30] HELLO → sent (cached token, role=query)
[14:11:30] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:30] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:30] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:30] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:30] [CLEANUP] ========================================
[14:11:30] [CLEANUP] Cleaning up all agent connections and views
[14:11:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:30] [CLEANUP] Stopped and removed 0 video connections
[14:11:30] [CLEANUP] Removed 0 video views
[14:11:30] [CLEANUP] Removed 0 feed scroll views
[14:11:30] [CLEANUP] Removed 0 status labels
[14:11:30] [CLEANUP] Reset agent query state
[14:11:30] [CLEANUP] Updated page indicator
[14:11:30] [CLEANUP] Rebuilt video layout
[14:11:30] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:30] [CLEANUP] ========================================
[14:11:30] [SERVER] Starting reconnect polling (5s interval)
[14:11:30] [CLEANUP] ========================================
[14:11:30] [CLEANUP] Cleaning up all agent connections and views
[14:11:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:30] [CLEANUP] Stopped and removed 0 video connections
[14:11:30] [CLEANUP] Removed 0 video views
[14:11:30] [CLEANUP] Removed 0 feed scroll views
[14:11:30] [CLEANUP] Removed 0 status labels
[14:11:30] [CLEANUP] Reset agent query state
[14:11:30] [CLEANUP] Updated page indicator
[14:11:30] [CLEANUP] Rebuilt video layout
[14:11:30] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:30] [CLEANUP] ========================================
[14:11:30] [SERVER] Starting reconnect polling (5s interval)
[14:11:30] [CLIENT_SIG] Event received: type=0 messageId=18825
[14:11:30] [WS_EVENT] Received event: type=0, messageId=18825
[14:11:30] [WS_EVENT] 📨 New message notification (msgId=18825) - triggering incremental refresh, currentMsgCount=52
[14:11:30] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[14:11:30] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18824
[14:11:30] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:11:30 +0000 - type: unknown, operation_type: 0, message_id: 18825, session_id: ILUIWU, state: 0
[14:11:30] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, 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-01-23 13:11:28";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18825;
"message_type" = 0;
"prev_session_message_id" = 18824;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18822;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18825]
[14:11:30] [PUSH] App active - suppressing notification UI, posting internal event
[14:11:30] [PUSH_EMBED] 📩 Received embedded message: id=18825, type=0, sender=Esra
[14:11:30] [PUSH_EMBED] ✅ Saved message 18825 to local DB (sync)
[14:11:30] [PUSH_EMBED] Inserted message 18825 into existing cache (now 51 messages)
[14:11:30] [PUSH_EMBED] Fetching evolution data for message 18825 in background
[14:11:30] [PUSH_EMBED] ✅ Fully processed message 18825
[14:11:30] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, 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-01-23 13:11:28";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18825;
"message_type" = 0;
"prev_session_message_id" = 18824;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18822;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18825]
[14:11:30] [PUSH_EMBED_VC] Processing embedded message: id=18825, type=0, sender=Esra, prevId=18824
[14:11:30] [PUSH_EMBED_VC] Inserted message 18825 into allMessagesWithReadBy (now 53 messages)
[14:11:30] [PUSH_EMBED_VC] ✅ Previous message 18824 exists in memory
[14:11:30] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:11:30] [PUSH] Parsed message_id: 18825
[14:11:30] [PUSH] Parsed operation_type: 0
[14:11:30] [PUSH] Taking direct action: opType=0, messageId=18825
[14:11:30] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18825
[14:11:30] [PUSH] ⚡ Message 18825 already in memory - skipping duplicate notification entirely
[14:11:30] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:11:30] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:11:30] [PUSH_UI] Message 18825 already in memory - skipping insert
[14:11:30] [PUSH_EMBED_VC] Saved message 18825 to local DB
[14:11:30] [PUSH] Silent push received
[14:11:30] [PUSH_EMBED] 📩 Received embedded message: id=18825, type=0, sender=Esra
[14:11:30] [PUSH_EMBED] ✅ Saved message 18825 to local DB (sync)
[14:11:30] [PUSH_EMBED] Fetching evolution data for message 18825 in background
[14:11:30] [PUSH_EMBED] ✅ Fully processed message 18825
[14:11:30] [PUSH] Embedded message handled instantly from silent push
[14:11:30] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:11:30] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:11:30] [PUSH_UI] Message 18825 already in memory - skipping insert
[14:11:30] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-23 13:11:28";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18825;
"message_type" = 0;
"prev_session_message_id" = 18824;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18822;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18825, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:11:30] [PUSH_EMBED_VC] Message 18825 already in memory - skipping
[14:11:30] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:11:30] [PUSH] Parsed message_id: 18825
[14:11:30] [PUSH] Parsed operation_type: 0
[14:11:30] [PUSH] Taking direct action: opType=0, messageId=18825
[14:11:30] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18825
[14:11:30] [PUSH] ⚡ Message 18825 already in memory - skipping duplicate notification entirely
[14:11:30] [PUSH_EMBED] Got evolution data for message 18825, saving to local DB
[14:11:30] [PUSH_EMBED] Saved evolution data for message 18825
[14:11:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18825, 18824, 18823, 18822, 18821]
[14:11:30] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:30] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:30] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18824 → 18825
[14:11:31] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:31] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:32] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:32] HELLO → sent (cached token, role=query)
[14:11:32] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:32] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:32] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:32] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:32] [CLEANUP] ========================================
[14:11:32] [CLEANUP] Cleaning up all agent connections and views
[14:11:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:32] [CLEANUP] Stopped and removed 0 video connections
[14:11:32] [CLEANUP] Removed 0 video views
[14:11:32] [CLEANUP] Removed 0 feed scroll views
[14:11:32] [CLEANUP] Removed 0 status labels
[14:11:32] [CLEANUP] Reset agent query state
[14:11:32] [CLEANUP] Updated page indicator
[14:11:32] [CLEANUP] Rebuilt video layout
[14:11:32] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:32] [CLEANUP] ========================================
[14:11:32] [SERVER] Starting reconnect polling (5s interval)
[14:11:32] [CLEANUP] ========================================
[14:11:32] [CLEANUP] Cleaning up all agent connections and views
[14:11:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:32] [CLEANUP] Stopped and removed 0 video connections
[14:11:32] [CLEANUP] Removed 0 video views
[14:11:32] [CLEANUP] Removed 0 feed scroll views
[14:11:32] [CLEANUP] Removed 0 status labels
[14:11:32] [CLEANUP] Reset agent query state
[14:11:32] [CLEANUP] Updated page indicator
[14:11:32] [CLEANUP] Rebuilt video layout
[14:11:32] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:32] [CLEANUP] ========================================
[14:11:32] [SERVER] Starting reconnect polling (5s interval)
[14:11:32] [PUSH] Silent push received
[14:11:32] [PUSH_EMBED] No embedded message_data in notification
[14:11:32] [PUSH] No embedded data, pre-loading messages from server
[14:11:32] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:11:32] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:11:32] [MENU] dismissAnyExistingMenu called
[14:11:32] [MENU] dismissAnyExistingMenu completed
[14:11:32] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18775, 18774]
[14:11:32] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[14:11:32] [PUSH_EMBED] Got evolution data for message 18825, saving to local DB
[14:11:32] [PUSH_EMBED] Saved evolution data for message 18825
[14:11:32] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:11:32] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:11:32] [EMOJI_PICKER] Starting emoji picker for message 18823
[14:11:32] [MENU] Created button 'Reply' at index 0
[14:11:32] [MENU] Created button 'Copy' at index 1
[14:11:32] [MENU] Created button 'Delete' at index 2
[14:11:32] [MENU] Menu added at y=550.0
[14:11:32] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:11:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18824]
[14:11:32] [PUSH] Parsed message_id: 18824
[14:11:32] [PUSH] Parsed operation_type: 3
[14:11:32] [PUSH] Taking direct action: opType=3, messageId=18824
[14:11:32] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18824
[14:11:32] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[14:11:32] [EMOJI_PICKER] ✅ Fetched 6 recent emojis
[14:11:32] [EMOJI_PICKER] ✅ Creating picker with 6 recent emojis
[14:11:32] [EMOJI_PICKER] ✅ Picker shown at y=326.0
[14:11:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:11:33] [CELL_UPLOAD] configure: msgId=18822, file=aa11fb87a250b06a.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:33] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=aa11fb87a250b06a.jpg, overlayExists=true
[14:11:33] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:11:33] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:11:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:11:33] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:33] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:33] [MENU] menuButtonTouchDown - button title: Reply, tag: 0
[14:11:33] [MENU] menuButtonTapped - button title: Reply, tag: 0
[14:11:33] [MENU] Button frame: (0.0, 0.0, 120.0, 44.0), superview: true
[14:11:33] [MENU] Found action closure, dismissing menu first
[14:11:33] [MENU] dismissAnyExistingMenu called
[14:11:33] [MENU] Found menu with tag 9999, removing
[14:11:33] [MENU] Removing blur effect
[14:11:33] [MENU] Removing floating message snapshot
[14:11:33] [MENU] Dismissing emoji picker
[14:11:33] [MENU] Recorded dismissal time for debounce
[14:11:33] [MENU] dismissAnyExistingMenu completed
[14:11:33] [MENU] Menu dismissed, executing action
[14:11:33] [REPLY_DEBUG] ✅ startReplyTo called - set messageToReplyTo to message 18823
[14:11:33] [MENU] Action executed
[14:11:33] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:33] HELLO → sent (cached token, role=query)
[14:11:33] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:33] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:33] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:33] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:33] [CLEANUP] ========================================
[14:11:33] [CLEANUP] Cleaning up all agent connections and views
[14:11:33] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:33] [CLEANUP] Stopped and removed 0 video connections
[14:11:33] [CLEANUP] Removed 0 video views
[14:11:33] [CLEANUP] Removed 0 feed scroll views
[14:11:33] [CLEANUP] Removed 0 status labels
[14:11:33] [CLEANUP] Reset agent query state
[14:11:33] [CLEANUP] Updated page indicator
[14:11:33] [CLEANUP] Rebuilt video layout
[14:11:33] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:33] [CLEANUP] ========================================
[14:11:33] [SERVER] Starting reconnect polling (5s interval)
[14:11:33] [CLEANUP] ========================================
[14:11:33] [CLEANUP] Cleaning up all agent connections and views
[14:11:33] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:33] [CLEANUP] Stopped and removed 0 video connections
[14:11:33] [CLEANUP] Removed 0 video views
[14:11:33] [CLEANUP] Removed 0 feed scroll views
[14:11:33] [CLEANUP] Removed 0 status labels
[14:11:33] [CLEANUP] Reset agent query state
[14:11:33] [CLEANUP] Updated page indicator
[14:11:33] [CLEANUP] Rebuilt video layout
[14:11:33] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:33] [CLEANUP] ========================================
[14:11:33] [SERVER] Starting reconnect polling (5s interval)
[14:11:33] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[14:11:34] [PUSH] Silent push received
[14:11:34] [PUSH_EMBED] No embedded message_data in notification
[14:11:34] [PUSH] No embedded data, pre-loading messages from server
[14:11:34] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:11:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:11:34] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18775, 18774]
[14:11:34] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push)
[14:11:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:11:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18825, AnyHashable("operation_type"): 3]
[14:11:34] [PUSH] Parsed message_id: 18825
[14:11:34] [PUSH] Parsed operation_type: 3
[14:11:34] [PUSH] Taking direct action: opType=3, messageId=18825
[14:11:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18825
[14:11:34] [CLIENT_SIG] Event received: type=3 messageId=18825
[14:11:34] [WS_EVENT] Received event: type=3, messageId=18825
[14:11:34] [WS_EVENT] Read receipt for message 18825 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:11:35] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:35] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:35] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:35] HELLO → sent (cached token, role=query)
[14:11:35] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:35] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:35] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:35] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:35] [CLEANUP] ========================================
[14:11:35] [CLEANUP] Cleaning up all agent connections and views
[14:11:35] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:35] [CLEANUP] Stopped and removed 0 video connections
[14:11:35] [CLEANUP] Removed 0 video views
[14:11:35] [CLEANUP] Removed 0 feed scroll views
[14:11:35] [CLEANUP] Removed 0 status labels
[14:11:35] [CLEANUP] Reset agent query state
[14:11:35] [CLEANUP] Updated page indicator
[14:11:35] [CLEANUP] Rebuilt video layout
[14:11:35] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:35] [CLEANUP] ========================================
[14:11:35] [SERVER] Starting reconnect polling (5s interval)
[14:11:35] [CLEANUP] ========================================
[14:11:35] [CLEANUP] Cleaning up all agent connections and views
[14:11:35] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:35] [CLEANUP] Stopped and removed 0 video connections
[14:11:35] [CLEANUP] Removed 0 video views
[14:11:35] [CLEANUP] Removed 0 feed scroll views
[14:11:35] [CLEANUP] Removed 0 status labels
[14:11:35] [CLEANUP] Reset agent query state
[14:11:35] [CLEANUP] Updated page indicator
[14:11:35] [CLEANUP] Rebuilt video layout
[14:11:35] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:35] [CLEANUP] ========================================
[14:11:35] [SERVER] Starting reconnect polling (5s interval)
[14:11:37] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:37] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:37] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:37] HELLO → sent (cached token, role=query)
[14:11:37] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:37] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:37] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:37] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:37] [CLEANUP] ========================================
[14:11:37] [CLEANUP] Cleaning up all agent connections and views
[14:11:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:37] [CLEANUP] Stopped and removed 0 video connections
[14:11:37] [CLEANUP] Removed 0 video views
[14:11:37] [CLEANUP] Removed 0 feed scroll views
[14:11:37] [CLEANUP] Removed 0 status labels
[14:11:37] [CLEANUP] Reset agent query state
[14:11:37] [CLEANUP] Updated page indicator
[14:11:37] [CLEANUP] Rebuilt video layout
[14:11:37] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:37] [CLEANUP] ========================================
[14:11:37] [SERVER] Starting reconnect polling (5s interval)
[14:11:37] [CLEANUP] ========================================
[14:11:37] [CLEANUP] Cleaning up all agent connections and views
[14:11:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:37] [CLEANUP] Stopped and removed 0 video connections
[14:11:37] [CLEANUP] Removed 0 video views
[14:11:37] [CLEANUP] Removed 0 feed scroll views
[14:11:37] [CLEANUP] Removed 0 status labels
[14:11:37] [CLEANUP] Reset agent query state
[14:11:37] [CLEANUP] Updated page indicator
[14:11:37] [CLEANUP] Rebuilt video layout
[14:11:37] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:37] [CLEANUP] ========================================
[14:11:37] [SERVER] Starting reconnect polling (5s interval)
[14:11:39] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:39] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:39] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:39] HELLO → sent (cached token, role=query)
[14:11:39] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:39] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:39] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:39] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:39] [CLEANUP] ========================================
[14:11:39] [CLEANUP] Cleaning up all agent connections and views
[14:11:39] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:39] [CLEANUP] Stopped and removed 0 video connections
[14:11:39] [CLEANUP] Removed 0 video views
[14:11:39] [CLEANUP] Removed 0 feed scroll views
[14:11:39] [CLEANUP] Removed 0 status labels
[14:11:39] [CLEANUP] Reset agent query state
[14:11:39] [CLEANUP] Updated page indicator
[14:11:39] [CLEANUP] Rebuilt video layout
[14:11:39] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:39] [CLEANUP] ========================================
[14:11:39] [SERVER] Starting reconnect polling (5s interval)
[14:11:39] [CLEANUP] ========================================
[14:11:39] [CLEANUP] Cleaning up all agent connections and views
[14:11:39] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:39] [CLEANUP] Stopped and removed 0 video connections
[14:11:39] [CLEANUP] Removed 0 video views
[14:11:39] [CLEANUP] Removed 0 feed scroll views
[14:11:39] [CLEANUP] Removed 0 status labels
[14:11:39] [CLEANUP] Reset agent query state
[14:11:39] [CLEANUP] Updated page indicator
[14:11:39] [CLEANUP] Rebuilt video layout
[14:11:39] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:39] [CLEANUP] ========================================
[14:11:39] [SERVER] Starting reconnect polling (5s interval)
[14:11:40] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:40] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:41] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:41] HELLO → sent (cached token, role=query)
[14:11:41] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:41] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:41] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:41] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:41] [CLEANUP] ========================================
[14:11:41] [CLEANUP] Cleaning up all agent connections and views
[14:11:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:41] [CLEANUP] Stopped and removed 0 video connections
[14:11:41] [CLEANUP] Removed 0 video views
[14:11:41] [CLEANUP] Removed 0 feed scroll views
[14:11:41] [CLEANUP] Removed 0 status labels
[14:11:41] [CLEANUP] Reset agent query state
[14:11:41] [CLEANUP] Updated page indicator
[14:11:41] [CLEANUP] Rebuilt video layout
[14:11:41] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:41] [CLEANUP] ========================================
[14:11:41] [SERVER] Starting reconnect polling (5s interval)
[14:11:41] [CLEANUP] ========================================
[14:11:41] [CLEANUP] Cleaning up all agent connections and views
[14:11:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:41] [CLEANUP] Stopped and removed 0 video connections
[14:11:41] [CLEANUP] Removed 0 video views
[14:11:41] [CLEANUP] Removed 0 feed scroll views
[14:11:41] [CLEANUP] Removed 0 status labels
[14:11:41] [CLEANUP] Reset agent query state
[14:11:41] [CLEANUP] Updated page indicator
[14:11:41] [CLEANUP] Rebuilt video layout
[14:11:41] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:41] [CLEANUP] ========================================
[14:11:41] [SERVER] Starting reconnect polling (5s interval)
[14:11:42] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:42] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:43] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:43] HELLO → sent (cached token, role=query)
[14:11:43] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:43] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:43] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:43] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:43] [CLEANUP] ========================================
[14:11:43] [CLEANUP] Cleaning up all agent connections and views
[14:11:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:43] [CLEANUP] Stopped and removed 0 video connections
[14:11:43] [CLEANUP] Removed 0 video views
[14:11:43] [CLEANUP] Removed 0 feed scroll views
[14:11:43] [CLEANUP] Removed 0 status labels
[14:11:43] [CLEANUP] Reset agent query state
[14:11:43] [CLEANUP] Updated page indicator
[14:11:43] [CLEANUP] Rebuilt video layout
[14:11:43] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:43] [CLEANUP] ========================================
[14:11:43] [SERVER] Starting reconnect polling (5s interval)
[14:11:43] [CLEANUP] ========================================
[14:11:43] [CLEANUP] Cleaning up all agent connections and views
[14:11:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:43] [CLEANUP] Stopped and removed 0 video connections
[14:11:43] [CLEANUP] Removed 0 video views
[14:11:43] [CLEANUP] Removed 0 feed scroll views
[14:11:43] [CLEANUP] Removed 0 status labels
[14:11:43] [CLEANUP] Reset agent query state
[14:11:43] [CLEANUP] Updated page indicator
[14:11:43] [CLEANUP] Rebuilt video layout
[14:11:43] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:43] [CLEANUP] ========================================
[14:11:43] [SERVER] Starting reconnect polling (5s interval)
[14:11:44] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:44] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:44] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:44] HELLO → sent (cached token, role=query)
[14:11:44] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:44] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:44] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:44] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:44] [CLEANUP] ========================================
[14:11:44] [CLEANUP] Cleaning up all agent connections and views
[14:11:44] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:44] [CLEANUP] Stopped and removed 0 video connections
[14:11:44] [CLEANUP] Removed 0 video views
[14:11:44] [CLEANUP] Removed 0 feed scroll views
[14:11:44] [CLEANUP] Removed 0 status labels
[14:11:44] [CLEANUP] Reset agent query state
[14:11:44] [CLEANUP] Updated page indicator
[14:11:44] [CLEANUP] Rebuilt video layout
[14:11:44] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:44] [CLEANUP] ========================================
[14:11:44] [SERVER] Starting reconnect polling (5s interval)
[14:11:44] [CLEANUP] ========================================
[14:11:44] [CLEANUP] Cleaning up all agent connections and views
[14:11:44] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:44] [CLEANUP] Stopped and removed 0 video connections
[14:11:44] [CLEANUP] Removed 0 video views
[14:11:44] [CLEANUP] Removed 0 feed scroll views
[14:11:44] [CLEANUP] Removed 0 status labels
[14:11:44] [CLEANUP] Reset agent query state
[14:11:44] [CLEANUP] Updated page indicator
[14:11:44] [CLEANUP] Rebuilt video layout
[14:11:44] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:44] [CLEANUP] ========================================
[14:11:44] [SERVER] Starting reconnect polling (5s interval)
[14:11:46] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:46] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:46] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:46] HELLO → sent (cached token, role=query)
[14:11:46] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:46] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:46] [CLEANUP] ========================================
[14:11:46] [CLEANUP] Cleaning up all agent connections and views
[14:11:46] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:46] [CLEANUP] Stopped and removed 0 video connections
[14:11:46] [CLEANUP] Removed 0 video views
[14:11:46] [CLEANUP] Removed 0 feed scroll views
[14:11:46] [CLEANUP] Removed 0 status labels
[14:11:46] [CLEANUP] Reset agent query state
[14:11:46] [CLEANUP] Updated page indicator
[14:11:46] [CLEANUP] Rebuilt video layout
[14:11:46] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:46] [CLEANUP] ========================================
[14:11:46] [SERVER] Starting reconnect polling (5s interval)
[14:11:46] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:46] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:46] [CLEANUP] ========================================
[14:11:46] [CLEANUP] Cleaning up all agent connections and views
[14:11:46] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:46] [CLEANUP] Stopped and removed 0 video connections
[14:11:46] [CLEANUP] Removed 0 video views
[14:11:46] [CLEANUP] Removed 0 feed scroll views
[14:11:46] [CLEANUP] Removed 0 status labels
[14:11:46] [CLEANUP] Reset agent query state
[14:11:46] [CLEANUP] Updated page indicator
[14:11:46] [CLEANUP] Rebuilt video layout
[14:11:46] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:46] [CLEANUP] ========================================
[14:11:46] [SERVER] Starting reconnect polling (5s interval)
[14:11:48] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:48] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:48] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:48] HELLO → sent (cached token, role=query)
[14:11:48] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:48] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:48] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:48] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:48] [CLEANUP] ========================================
[14:11:48] [CLEANUP] Cleaning up all agent connections and views
[14:11:48] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:48] [CLEANUP] Stopped and removed 0 video connections
[14:11:48] [CLEANUP] Removed 0 video views
[14:11:48] [CLEANUP] Removed 0 feed scroll views
[14:11:48] [CLEANUP] Removed 0 status labels
[14:11:48] [CLEANUP] Reset agent query state
[14:11:48] [CLEANUP] Updated page indicator
[14:11:48] [CLEANUP] Rebuilt video layout
[14:11:48] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:48] [CLEANUP] ========================================
[14:11:48] [SERVER] Starting reconnect polling (5s interval)
[14:11:48] [CLEANUP] ========================================
[14:11:48] [CLEANUP] Cleaning up all agent connections and views
[14:11:48] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:48] [CLEANUP] Stopped and removed 0 video connections
[14:11:48] [CLEANUP] Removed 0 video views
[14:11:48] [CLEANUP] Removed 0 feed scroll views
[14:11:48] [CLEANUP] Removed 0 status labels
[14:11:48] [CLEANUP] Reset agent query state
[14:11:48] [CLEANUP] Updated page indicator
[14:11:48] [CLEANUP] Rebuilt video layout
[14:11:48] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:48] [CLEANUP] ========================================
[14:11:48] [SERVER] Starting reconnect polling (5s interval)
[14:11:50] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:50] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:50] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:50] HELLO → sent (cached token, role=query)
[14:11:50] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:50] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:50] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:50] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:50] [CLEANUP] ========================================
[14:11:50] [CLEANUP] Cleaning up all agent connections and views
[14:11:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:50] [CLEANUP] Stopped and removed 0 video connections
[14:11:50] [CLEANUP] Removed 0 video views
[14:11:50] [CLEANUP] Removed 0 feed scroll views
[14:11:50] [CLEANUP] Removed 0 status labels
[14:11:50] [CLEANUP] Reset agent query state
[14:11:50] [CLEANUP] Updated page indicator
[14:11:50] [CLEANUP] Rebuilt video layout
[14:11:50] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:50] [CLEANUP] ========================================
[14:11:50] [SERVER] Starting reconnect polling (5s interval)
[14:11:50] [CLEANUP] ========================================
[14:11:50] [CLEANUP] Cleaning up all agent connections and views
[14:11:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:50] [CLEANUP] Stopped and removed 0 video connections
[14:11:50] [CLEANUP] Removed 0 video views
[14:11:50] [CLEANUP] Removed 0 feed scroll views
[14:11:50] [CLEANUP] Removed 0 status labels
[14:11:50] [CLEANUP] Reset agent query state
[14:11:50] [CLEANUP] Updated page indicator
[14:11:50] [CLEANUP] Rebuilt video layout
[14:11:50] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:50] [CLEANUP] ========================================
[14:11:50] [SERVER] Starting reconnect polling (5s interval)
[14:11:51] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:51] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:52] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:52] HELLO → sent (cached token, role=query)
[14:11:52] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:52] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:52] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:52] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:52] [CLEANUP] ========================================
[14:11:52] [CLEANUP] Cleaning up all agent connections and views
[14:11:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:52] [CLEANUP] Stopped and removed 0 video connections
[14:11:52] [CLEANUP] Removed 0 video views
[14:11:52] [CLEANUP] Removed 0 feed scroll views
[14:11:52] [CLEANUP] Removed 0 status labels
[14:11:52] [CLEANUP] Reset agent query state
[14:11:52] [CLEANUP] Updated page indicator
[14:11:52] [CLEANUP] Rebuilt video layout
[14:11:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:52] [CLEANUP] ========================================
[14:11:52] [SERVER] Starting reconnect polling (5s interval)
[14:11:52] [CLEANUP] ========================================
[14:11:52] [CLEANUP] Cleaning up all agent connections and views
[14:11:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:52] [CLEANUP] Stopped and removed 0 video connections
[14:11:52] [CLEANUP] Removed 0 video views
[14:11:52] [CLEANUP] Removed 0 feed scroll views
[14:11:52] [CLEANUP] Removed 0 status labels
[14:11:52] [CLEANUP] Reset agent query state
[14:11:52] [CLEANUP] Updated page indicator
[14:11:52] [CLEANUP] Rebuilt video layout
[14:11:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:52] [CLEANUP] ========================================
[14:11:52] [SERVER] Starting reconnect polling (5s interval)
[14:11:53] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:53] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:53] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:53] HELLO → sent (cached token, role=query)
[14:11:53] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:53] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:53] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:53] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:53] [CLEANUP] ========================================
[14:11:53] [CLEANUP] Cleaning up all agent connections and views
[14:11:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:53] [CLEANUP] Stopped and removed 0 video connections
[14:11:53] [CLEANUP] Removed 0 video views
[14:11:53] [CLEANUP] Removed 0 feed scroll views
[14:11:53] [CLEANUP] Removed 0 status labels
[14:11:53] [CLEANUP] Reset agent query state
[14:11:53] [CLEANUP] Updated page indicator
[14:11:53] [CLEANUP] Rebuilt video layout
[14:11:53] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:53] [CLEANUP] ========================================
[14:11:53] [SERVER] Starting reconnect polling (5s interval)
[14:11:53] [CLEANUP] ========================================
[14:11:53] [CLEANUP] Cleaning up all agent connections and views
[14:11:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:53] [CLEANUP] Stopped and removed 0 video connections
[14:11:53] [CLEANUP] Removed 0 video views
[14:11:53] [CLEANUP] Removed 0 feed scroll views
[14:11:53] [CLEANUP] Removed 0 status labels
[14:11:53] [CLEANUP] Reset agent query state
[14:11:53] [CLEANUP] Updated page indicator
[14:11:53] [CLEANUP] Rebuilt video layout
[14:11:53] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:53] [CLEANUP] ========================================
[14:11:53] [SERVER] Starting reconnect polling (5s interval)
[14:11:55] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:55] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:55] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:55] HELLO → sent (cached token, role=query)
[14:11:55] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:55] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:55] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:55] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:55] [CLEANUP] ========================================
[14:11:55] [CLEANUP] Cleaning up all agent connections and views
[14:11:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:55] [CLEANUP] Stopped and removed 0 video connections
[14:11:55] [CLEANUP] Removed 0 video views
[14:11:55] [CLEANUP] Removed 0 feed scroll views
[14:11:55] [CLEANUP] Removed 0 status labels
[14:11:55] [CLEANUP] Reset agent query state
[14:11:55] [CLEANUP] Updated page indicator
[14:11:55] [CLEANUP] Rebuilt video layout
[14:11:55] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:55] [CLEANUP] ========================================
[14:11:55] [SERVER] Starting reconnect polling (5s interval)
[14:11:55] [CLEANUP] ========================================
[14:11:55] [CLEANUP] Cleaning up all agent connections and views
[14:11:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:55] [CLEANUP] Stopped and removed 0 video connections
[14:11:55] [CLEANUP] Removed 0 video views
[14:11:55] [CLEANUP] Removed 0 feed scroll views
[14:11:55] [CLEANUP] Removed 0 status labels
[14:11:55] [CLEANUP] Reset agent query state
[14:11:55] [CLEANUP] Updated page indicator
[14:11:55] [CLEANUP] Rebuilt video layout
[14:11:55] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:55] [CLEANUP] ========================================
[14:11:55] [SERVER] Starting reconnect polling (5s interval)
[14:11:57] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:57] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:57] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:57] HELLO → sent (cached token, role=query)
[14:11:57] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:57] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:57] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:57] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:57] [CLEANUP] ========================================
[14:11:57] [CLEANUP] Cleaning up all agent connections and views
[14:11:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:57] [CLEANUP] Stopped and removed 0 video connections
[14:11:57] [CLEANUP] Removed 0 video views
[14:11:57] [CLEANUP] Removed 0 feed scroll views
[14:11:57] [CLEANUP] Removed 0 status labels
[14:11:57] [CLEANUP] Reset agent query state
[14:11:57] [CLEANUP] Updated page indicator
[14:11:57] [CLEANUP] Rebuilt video layout
[14:11:57] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:57] [CLEANUP] ========================================
[14:11:57] [SERVER] Starting reconnect polling (5s interval)
[14:11:57] [CLEANUP] ========================================
[14:11:57] [CLEANUP] Cleaning up all agent connections and views
[14:11:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:57] [CLEANUP] Stopped and removed 0 video connections
[14:11:57] [CLEANUP] Removed 0 video views
[14:11:57] [CLEANUP] Removed 0 feed scroll views
[14:11:57] [CLEANUP] Removed 0 status labels
[14:11:57] [CLEANUP] Reset agent query state
[14:11:57] [CLEANUP] Updated page indicator
[14:11:57] [CLEANUP] Rebuilt video layout
[14:11:57] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:57] [CLEANUP] ========================================
[14:11:57] [SERVER] Starting reconnect polling (5s interval)
[14:11:59] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:59] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:11:59] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:11:59] HELLO → sent (cached token, role=query)
[14:11:59] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:11:59] [WS] Query connection failed - cleaning up all agent connections and views
[14:11:59] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:11:59] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:11:59] [CLEANUP] ========================================
[14:11:59] [CLEANUP] Cleaning up all agent connections and views
[14:11:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:59] [CLEANUP] Stopped and removed 0 video connections
[14:11:59] [CLEANUP] Removed 0 video views
[14:11:59] [CLEANUP] Removed 0 feed scroll views
[14:11:59] [CLEANUP] Removed 0 status labels
[14:11:59] [CLEANUP] Reset agent query state
[14:11:59] [CLEANUP] Updated page indicator
[14:11:59] [CLEANUP] Rebuilt video layout
[14:11:59] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:59] [CLEANUP] ========================================
[14:11:59] [SERVER] Starting reconnect polling (5s interval)
[14:11:59] [CLEANUP] ========================================
[14:11:59] [CLEANUP] Cleaning up all agent connections and views
[14:11:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:11:59] [CLEANUP] Stopped and removed 0 video connections
[14:11:59] [CLEANUP] Removed 0 video views
[14:11:59] [CLEANUP] Removed 0 feed scroll views
[14:11:59] [CLEANUP] Removed 0 status labels
[14:11:59] [CLEANUP] Reset agent query state
[14:11:59] [CLEANUP] Updated page indicator
[14:11:59] [CLEANUP] Rebuilt video layout
[14:11:59] [CLEANUP] ✅ All agent connections and views cleaned up
[14:11:59] [CLEANUP] ========================================
[14:11:59] [SERVER] Starting reconnect polling (5s interval)
[14:12:00] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:01] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:01] HELLO → sent (cached token, role=query)
[14:12:01] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:01] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:01] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:01] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:01] [CLEANUP] ========================================
[14:12:01] [CLEANUP] Cleaning up all agent connections and views
[14:12:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:01] [CLEANUP] Stopped and removed 0 video connections
[14:12:01] [CLEANUP] Removed 0 video views
[14:12:01] [CLEANUP] Removed 0 feed scroll views
[14:12:01] [CLEANUP] Removed 0 status labels
[14:12:01] [CLEANUP] Reset agent query state
[14:12:01] [CLEANUP] Updated page indicator
[14:12:01] [CLEANUP] Rebuilt video layout
[14:12:01] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:01] [CLEANUP] ========================================
[14:12:01] [SERVER] Starting reconnect polling (5s interval)
[14:12:01] [CLEANUP] ========================================
[14:12:01] [CLEANUP] Cleaning up all agent connections and views
[14:12:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:01] [CLEANUP] Stopped and removed 0 video connections
[14:12:01] [CLEANUP] Removed 0 video views
[14:12:01] [CLEANUP] Removed 0 feed scroll views
[14:12:01] [CLEANUP] Removed 0 status labels
[14:12:01] [CLEANUP] Reset agent query state
[14:12:01] [CLEANUP] Updated page indicator
[14:12:01] [CLEANUP] Rebuilt video layout
[14:12:01] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:01] [CLEANUP] ========================================
[14:12:01] [SERVER] Starting reconnect polling (5s interval)
[14:12:02] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:02] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:03] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:03] HELLO → sent (cached token, role=query)
[14:12:03] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:03] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:03] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:03] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:03] [CLEANUP] ========================================
[14:12:03] [CLEANUP] Cleaning up all agent connections and views
[14:12:03] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:03] [CLEANUP] Stopped and removed 0 video connections
[14:12:03] [CLEANUP] Removed 0 video views
[14:12:03] [CLEANUP] Removed 0 feed scroll views
[14:12:03] [CLEANUP] Removed 0 status labels
[14:12:03] [CLEANUP] Reset agent query state
[14:12:03] [CLEANUP] Updated page indicator
[14:12:03] [CLEANUP] Rebuilt video layout
[14:12:03] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:03] [CLEANUP] ========================================
[14:12:03] [SERVER] Starting reconnect polling (5s interval)
[14:12:03] [CLEANUP] ========================================
[14:12:03] [CLEANUP] Cleaning up all agent connections and views
[14:12:03] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:03] [CLEANUP] Stopped and removed 0 video connections
[14:12:03] [CLEANUP] Removed 0 video views
[14:12:03] [CLEANUP] Removed 0 feed scroll views
[14:12:03] [CLEANUP] Removed 0 status labels
[14:12:03] [CLEANUP] Reset agent query state
[14:12:03] [CLEANUP] Updated page indicator
[14:12:03] [CLEANUP] Rebuilt video layout
[14:12:03] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:03] [CLEANUP] ========================================
[14:12:03] [SERVER] Starting reconnect polling (5s interval)
[14:12:03] [REPLY_DEBUG] 📤 didTapSend - Sending message WITH reply to message 18823
[14:12:03] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=53, isReloading=false
[14:12:03] [REPLY_DEBUG] 🔗 sendMessage START - Captured reply to message 18823
[14:12:03] [SEND_MESSAGE] ✅ Added optimistic message id=-5 to arrays, newMsgCount=54
[14:12:03] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-5, 18825, 18824, 18823, 18822]
[14:12:03] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:03] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:03] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:03] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:12:03] [REPLY_DEBUG] 🔗 sendMessage HTTP BODY - Added reply_to_id=18823 to request body
[14:12:04] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:04] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:04] [CLIENT_SIG] Event received: type=0 messageId=18826
[14:12:04] [WS_EVENT] Received event: type=0, messageId=18826
[14:12:04] [WS_EVENT] 📨 New message notification (msgId=18826) - triggering incremental refresh, currentMsgCount=54
[14:12:04] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[14:12:04] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18825
[14:12:04] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18826,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:12:03"}
[14:12:04] [CHAT] receive_message.php JSON: ["file_name": , "session_id": ILUIWU, "message_type": 0, "message_id": 18826, "ok": 1, "datesent_utc": 2026-01-23 13:12:03]
[14:12:04] [DB_UPGRADE] Upgrading message ID: -5 → 18826, preserveOriginalDate=false
[14:12:04] [DB_UPGRADE] ✅ Upgraded -5 → 18826 with send_status=0, 1 row(s) affected
[14:12:04] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -5 → 18826
[14:12:04] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -5 → 18826
[14:12:04] ReloadData 9
[14:12:04] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:12:04] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:04] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:04] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:12:04] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54
[14:12:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:12:04] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:04] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:04] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:04] HELLO → sent (cached token, role=query)
[14:12:04] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:04] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:04] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:04] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:04] [CLEANUP] ========================================
[14:12:04] [CLEANUP] Cleaning up all agent connections and views
[14:12:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:04] [CLEANUP] Stopped and removed 0 video connections
[14:12:04] [CLEANUP] Removed 0 video views
[14:12:04] [CLEANUP] Removed 0 feed scroll views
[14:12:04] [CLEANUP] Removed 0 status labels
[14:12:04] [CLEANUP] Reset agent query state
[14:12:04] [CLEANUP] Updated page indicator
[14:12:04] [CLEANUP] Rebuilt video layout
[14:12:04] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:04] [CLEANUP] ========================================
[14:12:04] [SERVER] Starting reconnect polling (5s interval)
[14:12:04] [CLEANUP] ========================================
[14:12:04] [CLEANUP] Cleaning up all agent connections and views
[14:12:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:04] [CLEANUP] Stopped and removed 0 video connections
[14:12:04] [CLEANUP] Removed 0 video views
[14:12:04] [CLEANUP] Removed 0 feed scroll views
[14:12:04] [CLEANUP] Removed 0 status labels
[14:12:04] [CLEANUP] Reset agent query state
[14:12:04] [CLEANUP] Updated page indicator
[14:12:04] [CLEANUP] Rebuilt video layout
[14:12:04] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:04] [CLEANUP] ========================================
[14:12:04] [SERVER] Starting reconnect polling (5s interval)
[14:12:06] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:06] HELLO → sent (cached token, role=query)
[14:12:06] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:06] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:06] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:06] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:06] [CLEANUP] ========================================
[14:12:06] [CLEANUP] Cleaning up all agent connections and views
[14:12:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:06] [CLEANUP] Stopped and removed 0 video connections
[14:12:06] [CLEANUP] Removed 0 video views
[14:12:06] [CLEANUP] Removed 0 feed scroll views
[14:12:06] [CLEANUP] Removed 0 status labels
[14:12:06] [CLEANUP] Reset agent query state
[14:12:06] [CLEANUP] Updated page indicator
[14:12:06] [CLEANUP] Rebuilt video layout
[14:12:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:06] [CLEANUP] ========================================
[14:12:06] [SERVER] Starting reconnect polling (5s interval)
[14:12:06] [CLEANUP] ========================================
[14:12:06] [CLEANUP] Cleaning up all agent connections and views
[14:12:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:06] [CLEANUP] Stopped and removed 0 video connections
[14:12:06] [CLEANUP] Removed 0 video views
[14:12:06] [CLEANUP] Removed 0 feed scroll views
[14:12:06] [CLEANUP] Removed 0 status labels
[14:12:06] [CLEANUP] Reset agent query state
[14:12:06] [CLEANUP] Updated page indicator
[14:12:06] [CLEANUP] Rebuilt video layout
[14:12:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:06] [CLEANUP] ========================================
[14:12:06] [SERVER] Starting reconnect polling (5s interval)
[14:12:08] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:08] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:08] HELLO → sent (cached token, role=query)
[14:12:08] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:08] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:08] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:08] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:08] [CLEANUP] ========================================
[14:12:08] [CLEANUP] Cleaning up all agent connections and views
[14:12:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:08] [CLEANUP] Stopped and removed 0 video connections
[14:12:08] [CLEANUP] Removed 0 video views
[14:12:08] [CLEANUP] Removed 0 feed scroll views
[14:12:08] [CLEANUP] Removed 0 status labels
[14:12:08] [CLEANUP] Reset agent query state
[14:12:08] [CLEANUP] Updated page indicator
[14:12:08] [CLEANUP] Rebuilt video layout
[14:12:08] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:08] [CLEANUP] ========================================
[14:12:08] [SERVER] Starting reconnect polling (5s interval)
[14:12:08] [CLEANUP] ========================================
[14:12:08] [CLEANUP] Cleaning up all agent connections and views
[14:12:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:08] [CLEANUP] Stopped and removed 0 video connections
[14:12:08] [CLEANUP] Removed 0 video views
[14:12:08] [CLEANUP] Removed 0 feed scroll views
[14:12:08] [CLEANUP] Removed 0 status labels
[14:12:08] [CLEANUP] Reset agent query state
[14:12:08] [CLEANUP] Updated page indicator
[14:12:08] [CLEANUP] Rebuilt video layout
[14:12:08] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:08] [CLEANUP] ========================================
[14:12:08] [SERVER] Starting reconnect polling (5s interval)
[14:12:10] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:10] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:10] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:10] HELLO → sent (cached token, role=query)
[14:12:10] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:10] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:10] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:10] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:10] [CLEANUP] ========================================
[14:12:10] [CLEANUP] Cleaning up all agent connections and views
[14:12:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:10] [CLEANUP] Stopped and removed 0 video connections
[14:12:10] [CLEANUP] Removed 0 video views
[14:12:10] [CLEANUP] Removed 0 feed scroll views
[14:12:10] [CLEANUP] Removed 0 status labels
[14:12:10] [CLEANUP] Reset agent query state
[14:12:10] [CLEANUP] Updated page indicator
[14:12:10] [CLEANUP] Rebuilt video layout
[14:12:10] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:10] [CLEANUP] ========================================
[14:12:10] [SERVER] Starting reconnect polling (5s interval)
[14:12:10] [CLEANUP] ========================================
[14:12:10] [CLEANUP] Cleaning up all agent connections and views
[14:12:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:10] [CLEANUP] Stopped and removed 0 video connections
[14:12:10] [CLEANUP] Removed 0 video views
[14:12:10] [CLEANUP] Removed 0 feed scroll views
[14:12:10] [CLEANUP] Removed 0 status labels
[14:12:10] [CLEANUP] Reset agent query state
[14:12:10] [CLEANUP] Updated page indicator
[14:12:10] [CLEANUP] Rebuilt video layout
[14:12:10] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:10] [CLEANUP] ========================================
[14:12:10] [SERVER] Starting reconnect polling (5s interval)
[14:12:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:12] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:12] HELLO → sent (cached token, role=query)
[14:12:12] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:12] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:12] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:12] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:12] [CLEANUP] ========================================
[14:12:12] [CLEANUP] Cleaning up all agent connections and views
[14:12:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:12] [CLEANUP] Stopped and removed 0 video connections
[14:12:12] [CLEANUP] Removed 0 video views
[14:12:12] [CLEANUP] Removed 0 feed scroll views
[14:12:12] [CLEANUP] Removed 0 status labels
[14:12:12] [CLEANUP] Reset agent query state
[14:12:12] [CLEANUP] Updated page indicator
[14:12:12] [CLEANUP] Rebuilt video layout
[14:12:12] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:12] [CLEANUP] ========================================
[14:12:12] [SERVER] Starting reconnect polling (5s interval)
[14:12:12] [CLEANUP] ========================================
[14:12:12] [CLEANUP] Cleaning up all agent connections and views
[14:12:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:12] [CLEANUP] Stopped and removed 0 video connections
[14:12:12] [CLEANUP] Removed 0 video views
[14:12:12] [CLEANUP] Removed 0 feed scroll views
[14:12:12] [CLEANUP] Removed 0 status labels
[14:12:12] [CLEANUP] Reset agent query state
[14:12:12] [CLEANUP] Updated page indicator
[14:12:12] [CLEANUP] Rebuilt video layout
[14:12:12] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:12] [CLEANUP] ========================================
[14:12:12] [SERVER] Starting reconnect polling (5s interval)
[14:12:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:14] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:14] HELLO → sent (cached token, role=query)
[14:12:14] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:14] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:14] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:14] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:14] [CLEANUP] ========================================
[14:12:14] [CLEANUP] Cleaning up all agent connections and views
[14:12:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:14] [CLEANUP] Stopped and removed 0 video connections
[14:12:14] [CLEANUP] Removed 0 video views
[14:12:14] [CLEANUP] Removed 0 feed scroll views
[14:12:14] [CLEANUP] Removed 0 status labels
[14:12:14] [CLEANUP] Reset agent query state
[14:12:14] [CLEANUP] Updated page indicator
[14:12:14] [CLEANUP] Rebuilt video layout
[14:12:14] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:14] [CLEANUP] ========================================
[14:12:14] [SERVER] Starting reconnect polling (5s interval)
[14:12:14] [CLEANUP] ========================================
[14:12:14] [CLEANUP] Cleaning up all agent connections and views
[14:12:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:14] [CLEANUP] Stopped and removed 0 video connections
[14:12:14] [CLEANUP] Removed 0 video views
[14:12:14] [CLEANUP] Removed 0 feed scroll views
[14:12:14] [CLEANUP] Removed 0 status labels
[14:12:14] [CLEANUP] Reset agent query state
[14:12:14] [CLEANUP] Updated page indicator
[14:12:14] [CLEANUP] Rebuilt video layout
[14:12:14] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:14] [CLEANUP] ========================================
[14:12:14] [SERVER] Starting reconnect polling (5s interval)
[14:12:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:16] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:16] HELLO → sent (cached token, role=query)
[14:12:16] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:12:16] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:16] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:12:16] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:12:16] [CLEANUP] ========================================
[14:12:16] [CLEANUP] Cleaning up all agent connections and views
[14:12:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:16] [CLEANUP] Stopped and removed 0 video connections
[14:12:16] [CLEANUP] Removed 0 video views
[14:12:16] [CLEANUP] Removed 0 feed scroll views
[14:12:16] [CLEANUP] Removed 0 status labels
[14:12:16] [CLEANUP] Reset agent query state
[14:12:16] [CLEANUP] Updated page indicator
[14:12:16] [CLEANUP] Rebuilt video layout
[14:12:16] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:16] [CLEANUP] ========================================
[14:12:16] [SERVER] Starting reconnect polling (5s interval)
[14:12:16] [CLEANUP] ========================================
[14:12:16] [CLEANUP] Cleaning up all agent connections and views
[14:12:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:16] [CLEANUP] Stopped and removed 0 video connections
[14:12:16] [CLEANUP] Removed 0 video views
[14:12:16] [CLEANUP] Removed 0 feed scroll views
[14:12:16] [CLEANUP] Removed 0 status labels
[14:12:16] [CLEANUP] Reset agent query state
[14:12:16] [CLEANUP] Updated page indicator
[14:12:16] [CLEANUP] Rebuilt video layout
[14:12:16] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:16] [CLEANUP] ========================================
[14:12:16] [SERVER] Starting reconnect polling (5s interval)
[14:12:16] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:12:16] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false
[14:12:16] [SEND_MESSAGE] ✅ Added optimistic message id=-6 to arrays, newMsgCount=55
[14:12:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-6, 18826, 18825, 18824, 18823]
[14:12:16] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:16] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:16] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:16] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:12:16] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:12:17] [LIFECYCLE] App resigning active - cleared crash flag
[14:12:17] [CLIENT_SIG] Event received: type=0 messageId=18827
[14:12:17] [WS_EVENT] Received event: type=0, messageId=18827
[14:12:17] [WS_EVENT] 📨 New message notification (msgId=18827) - triggering incremental refresh, currentMsgCount=55
[14:12:17] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[14:12:17] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18827,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:12:16"}
[14:12:17] [CHAT] receive_message.php JSON: ["message_id": 18827, "session_id": ILUIWU, "datesent_utc": 2026-01-23 13:12:16, "message_type": 0, "file_name": , "ok": 1]
[14:12:17] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18826
[14:12:17] [DB_UPGRADE] Upgrading message ID: -6 → 18827, preserveOriginalDate=false
[14:12:17] [DB_UPGRADE] ✅ Upgraded -6 → 18827 with send_status=0, 1 row(s) affected
[14:12:17] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -6 → 18827
[14:12:17] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -6 → 18827
[14:12:17] ReloadData 9
[14:12:17] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:12:17] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:17] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:17] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:12:17] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[14:12:17] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:12:17] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:12:17] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:12:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:12:17] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:12:17] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:12:17] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:12:17] [SECURITY] Saved background timestamp
[14:12:17] [LIFECYCLE] App entering background - cleared crash flag
[14:12:17] [CLIENT_SIG] Disconnecting
[14:12:17] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:12:17] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[14:12:17] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:12:17] In cleanupPeer
[14:12:17] In cleanupPeer
[14:12:17] [LIFECYCLE] WebRTC audio disabled
[14:12:17] [LIFECYCLE] AVAudioSession deactivated
[14:12:17] [LIFECYCLE] All connections stopped
[14:12:18] [CLIENT_SIG] WebSocket closed with code 1001
[14:12:18] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:12:18] [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/}
[14:12:18] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:12:18] [SERVER] Stopped reconnect polling
[14:12:18] Will request stop of video 0
[14:12:18] Will request stop of video 0
[14:12:18] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[14:12:18] [WS] Query connection error - cleaning up all agent connections and views
[14:12:18] [WS] Connection failed: cancelled
[14:12:18] [WS] Query connection failed - cleaning up all agent connections and views
[14:12:18] [PIP] Removing 0 tracks from PiP for connection 0
[14:12:18] [PIP] ✅ All tracks removed for connection 0
[14:12:18] [PIP] Removing 0 tracks from PiP for connection 0
[14:12:18] [PIP] ✅ All tracks removed for connection 0
[14:12:18] [CLEANUP] ========================================
[14:12:18] [CLEANUP] Cleaning up all agent connections and views
[14:12:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:18] [CLEANUP] Stopped and removed 0 video connections
[14:12:18] [CLEANUP] Removed 0 video views
[14:12:18] [CLEANUP] Removed 0 feed scroll views
[14:12:18] [CLEANUP] Removed 0 status labels
[14:12:18] [CLEANUP] Reset agent query state
[14:12:18] [CLEANUP] Updated page indicator
[14:12:18] [CLEANUP] Rebuilt video layout
[14:12:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:18] [CLEANUP] ========================================
[14:12:18] [SERVER] Skipping reconnect polling - app is in background
[14:12:18] [WS] URLSession invalidated successfully
[14:12:18] [CLEANUP] ========================================
[14:12:18] [CLEANUP] Cleaning up all agent connections and views
[14:12:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:12:18] [CLEANUP] Stopped and removed 0 video connections
[14:12:18] [CLEANUP] Removed 0 video views
[14:12:18] [CLEANUP] Removed 0 feed scroll views
[14:12:18] [CLEANUP] Removed 0 status labels
[14:12:18] [CLEANUP] Reset agent query state
[14:12:18] [CLEANUP] Updated page indicator
[14:12:18] [CLEANUP] Rebuilt video layout
[14:12:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:12:18] [CLEANUP] ========================================
[14:12:18] [SERVER] Skipping reconnect polling - app is in background
[14:13:46] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:46] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:46] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:13:46] [PUSH] Notification tapped - session_id: ILUIWU
[14:13:46] [PUSH] Max message_id before tap: 18827
[14:13:46] [PUSH] Stored pending session: ILUIWU
[14:13:46] [PUSH_EMBED] 📩 Received embedded message: id=18828, type=0, sender=Esra
[14:13:46] [PUSH_EMBED] ✅ Saved message 18828 to local DB (sync)
[14:13:46] [PUSH_EMBED] Inserted message 18828 into existing cache (now 53 messages)
[14:13:46] [PUSH_EMBED] Fetching evolution data for message 18828 in background
[14:13:46] [PUSH_EMBED] ✅ Fully processed message 18828
[14:13:46] [PUSH] Embedded message handled instantly on tap
[14:13:46] [SECURITY] Timeout check: elapsed=89.0958251953125s, timeout=300.0s
[14:13:46] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:13:46] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:13:46] [PUSH] Fetching server messages since_id=18827 to catch coalesced notifications on tap
[14:13:46] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18827 to catch coalesced notifications
[14:13:46] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:13:46] [LIFECYCLE] App entering foreground - restoring connections
[14:13:46] [UPLOAD_RETRY] No pending uploads to retry
[14:13:46] [LIFECYCLE] Merged 910 reactions from local DB
[14:13:46] [LIFECYCLE] WebRTC audio re-enabled
[14:13:46] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:13:46] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:13:46] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:13:46] [VIEWER] Reconnecting after background - querying agents
[14:13:46] [UNSENT_RETRY] Checking for unsent messages...
[14:13:46] [PENDING_UPLOAD] Total pending upload messages: 0
[14:13:46] [UNSENT_RETRY] No unsent messages found
[14:13:46] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:13:46] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:13:46] [PUSH_UI] Inserted message 18828 into UI (now 56 messages)
[14:13:46] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:13:46] [PUSH_EMBED] Got evolution data for message 18828, saving to local DB
[14:13:46] [PUSH_EMBED] Saved evolution data for message 18828
[14:13:47] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[14:13:47] [PRELOAD_CACHE] Preserving 52 push-inserted messages: [18825, 18824, 18823, 18822, 18821, 18820, 18819, 18818, 18817, 18816, 18815, 18814, 18813, 18812, 18811, 18810, 18809, 18808, 18807, 18806, 18805, 18804, 18803, 18802, 18801, 18800, 18799, 18798, 18797, 18796, 18795, 18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:13:47] [PUSH_PRELOAD] ⚡ Pre-cached 53 messages for instant display (preserved 52 from push)
[14:13:47] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:13:47] [PUSH] Server fetch on tap completed (success=true)
[14:13:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, 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-01-23 13:13:43";
"file_name" = "";
message = "Yes, I dont want \Ud83e\Udd23";
"message_id" = 18828;
"message_type" = 0;
"prev_session_message_id" = 18827;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18828]
[14:13:47] [PUSH_EMBED_VC] Message 18828 already in memory - skipping
[14:13:47] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:13:47] [PUSH] Parsed message_id: 18828
[14:13:47] [PUSH] Parsed operation_type: 0
[14:13:47] [PUSH] Taking direct action: opType=0, messageId=18828
[14:13:47] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18828
[14:13:47] [PUSH] ⚡ Message 18828 already in memory - skipping duplicate notification entirely
[14:13:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18828, 18773, 18774, 18775, 18776]
[14:13:47] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:47] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:47] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:47] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18827 → 18828
[14:13:47] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:13:47] [SECURITY] Within timeout - cleared background flag
[14:13:47] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:13:47] [PUSH] handlePollEventsNotification userInfo: [:]
[14:13:47] [PUSH] No message_id in userInfo
[14:13:47] [PUSH] No operation_type in userInfo
[14:13:47] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:13:47] [FAST_REFRESH] Already have 56 messages - skipping local DB load
[14:13:47] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:13:47] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:13:47] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56
[14:13:47] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18828
[14:13:47] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:47] HELLO → sent (cached token, role=query)
[14:13:47] [CLIENT_SIG] WebSocket opened
[14:13:47] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:13:47] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:47] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:47] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:47] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:47] [CLEANUP] ========================================
[14:13:47] [CLEANUP] Cleaning up all agent connections and views
[14:13:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:47] [CLEANUP] Stopped and removed 0 video connections
[14:13:47] [CLEANUP] Removed 0 video views
[14:13:47] [CLEANUP] Removed 0 feed scroll views
[14:13:47] [CLEANUP] Removed 0 status labels
[14:13:47] [CLEANUP] Reset agent query state
[14:13:47] [CLEANUP] Updated page indicator
[14:13:47] [CLEANUP] Rebuilt video layout
[14:13:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:47] [CLEANUP] ========================================
[14:13:47] [SERVER] Starting reconnect polling (5s interval)
[14:13:47] [CLEANUP] ========================================
[14:13:47] [CLEANUP] Cleaning up all agent connections and views
[14:13:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:47] [CLEANUP] Stopped and removed 0 video connections
[14:13:47] [CLEANUP] Removed 0 video views
[14:13:47] [CLEANUP] Removed 0 feed scroll views
[14:13:47] [CLEANUP] Removed 0 status labels
[14:13:47] [CLEANUP] Reset agent query state
[14:13:47] [CLEANUP] Updated page indicator
[14:13:47] [CLEANUP] Rebuilt video layout
[14:13:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:47] [CLEANUP] ========================================
[14:13:47] [SERVER] Starting reconnect polling (5s interval)
[14:13:47] [CLIENT_SIG] Connected! clientId=fLGuf9TvA9KyysBR
[14:13:47] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:13:47] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:13:47] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:13:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18828, 18773, 18774, 18775, 18776]
[14:13:47] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:47] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:47] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:47] [INCREMENTAL_SYNC] ✅ No new messages
[14:13:47] [FAST_REFRESH] Incremental sync complete - 56 messages
[14:13:47] [COMBINED_FETCH] Loaded 7594 read receipts, 916 messages with reactions
[14:13:47] [FOREGROUND] Enriched 4 messages with readBy data from server
[14:13:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18828, 18773, 18774, 18775, 18776]
[14:13:47] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:47] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:47] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:47] [COMBINED_FETCH] Loaded 7594 read receipts, 916 messages with reactions
[14:13:47] [FAST_REFRESH] Enriched 56 messages with readBy data
[14:13:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18828, 18773, 18774, 18775, 18776]
[14:13:48] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:48] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:48] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:48] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:48] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:49] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:49] HELLO → sent (cached token, role=query)
[14:13:49] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:49] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:49] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:49] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:49] [CLEANUP] ========================================
[14:13:49] [CLEANUP] Cleaning up all agent connections and views
[14:13:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:49] [CLEANUP] Stopped and removed 0 video connections
[14:13:49] [CLEANUP] Removed 0 video views
[14:13:49] [CLEANUP] Removed 0 feed scroll views
[14:13:49] [CLEANUP] Removed 0 status labels
[14:13:49] [CLEANUP] Reset agent query state
[14:13:49] [CLEANUP] Updated page indicator
[14:13:49] [CLEANUP] Rebuilt video layout
[14:13:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:49] [CLEANUP] ========================================
[14:13:49] [SERVER] Starting reconnect polling (5s interval)
[14:13:49] [CLEANUP] ========================================
[14:13:49] [CLEANUP] Cleaning up all agent connections and views
[14:13:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:49] [CLEANUP] Stopped and removed 0 video connections
[14:13:49] [CLEANUP] Removed 0 video views
[14:13:49] [CLEANUP] Removed 0 feed scroll views
[14:13:49] [CLEANUP] Removed 0 status labels
[14:13:49] [CLEANUP] Reset agent query state
[14:13:49] [CLEANUP] Updated page indicator
[14:13:49] [CLEANUP] Rebuilt video layout
[14:13:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:49] [CLEANUP] ========================================
[14:13:49] [SERVER] Starting reconnect polling (5s interval)
[14:13:49] [CLIENT_SIG] Event received: type=3 messageId=18828
[14:13:49] [WS_EVENT] Received event: type=3, messageId=18828
[14:13:49] [WS_EVENT] Read receipt for message 18828 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:13:49] [PUSH] Silent push received
[14:13:49] [PUSH_EMBED] No embedded message_data in notification
[14:13:49] [PUSH] No embedded data, pre-loading messages from server
[14:13:49] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:13:49] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:13:49] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [18778, 18777, 18776, 18775, 18774]
[14:13:49] [PUSH_PRELOAD] ⚡ Pre-cached 55 messages for instant display (preserved 5 from push)
[14:13:49] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:13:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18828, AnyHashable("aps"): {
"content-available" = 1;
}]
[14:13:49] [PUSH] Parsed message_id: 18828
[14:13:49] [PUSH] Parsed operation_type: 3
[14:13:49] [PUSH] Taking direct action: opType=3, messageId=18828
[14:13:49] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18828
[14:13:50] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:13:50] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:50] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:50] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:50] HELLO → sent (cached token, role=query)
[14:13:50] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:50] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:50] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:50] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:50] [CLEANUP] ========================================
[14:13:50] [CLEANUP] Cleaning up all agent connections and views
[14:13:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:50] [CLEANUP] Stopped and removed 0 video connections
[14:13:50] [CLEANUP] Removed 0 video views
[14:13:50] [CLEANUP] Removed 0 feed scroll views
[14:13:50] [CLEANUP] Removed 0 status labels
[14:13:50] [CLEANUP] Reset agent query state
[14:13:50] [CLEANUP] Updated page indicator
[14:13:50] [CLEANUP] Rebuilt video layout
[14:13:50] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:50] [CLEANUP] ========================================
[14:13:50] [SERVER] Starting reconnect polling (5s interval)
[14:13:50] [CLEANUP] ========================================
[14:13:50] [CLEANUP] Cleaning up all agent connections and views
[14:13:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:50] [CLEANUP] Stopped and removed 0 video connections
[14:13:50] [CLEANUP] Removed 0 video views
[14:13:50] [CLEANUP] Removed 0 feed scroll views
[14:13:50] [CLEANUP] Removed 0 status labels
[14:13:50] [CLEANUP] Reset agent query state
[14:13:50] [CLEANUP] Updated page indicator
[14:13:50] [CLEANUP] Rebuilt video layout
[14:13:50] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:50] [CLEANUP] ========================================
[14:13:50] [SERVER] Starting reconnect polling (5s interval)
[14:13:52] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:52] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:52] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:52] HELLO → sent (cached token, role=query)
[14:13:52] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:52] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:52] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:52] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:52] [CLEANUP] ========================================
[14:13:52] [CLEANUP] Cleaning up all agent connections and views
[14:13:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:52] [CLEANUP] Stopped and removed 0 video connections
[14:13:52] [CLEANUP] Removed 0 video views
[14:13:52] [CLEANUP] Removed 0 feed scroll views
[14:13:52] [CLEANUP] Removed 0 status labels
[14:13:52] [CLEANUP] Reset agent query state
[14:13:52] [CLEANUP] Updated page indicator
[14:13:52] [CLEANUP] Rebuilt video layout
[14:13:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:52] [CLEANUP] ========================================
[14:13:52] [SERVER] Starting reconnect polling (5s interval)
[14:13:52] [CLEANUP] ========================================
[14:13:52] [CLEANUP] Cleaning up all agent connections and views
[14:13:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:52] [CLEANUP] Stopped and removed 0 video connections
[14:13:52] [CLEANUP] Removed 0 video views
[14:13:52] [CLEANUP] Removed 0 feed scroll views
[14:13:52] [CLEANUP] Removed 0 status labels
[14:13:52] [CLEANUP] Reset agent query state
[14:13:52] [CLEANUP] Updated page indicator
[14:13:52] [CLEANUP] Rebuilt video layout
[14:13:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:52] [CLEANUP] ========================================
[14:13:52] [SERVER] Starting reconnect polling (5s interval)
[14:13:54] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:54] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:54] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:54] HELLO → sent (cached token, role=query)
[14:13:54] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:54] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:54] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:54] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:54] [CLEANUP] ========================================
[14:13:54] [CLEANUP] Cleaning up all agent connections and views
[14:13:54] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:54] [CLEANUP] Stopped and removed 0 video connections
[14:13:54] [CLEANUP] Removed 0 video views
[14:13:54] [CLEANUP] Removed 0 feed scroll views
[14:13:54] [CLEANUP] Removed 0 status labels
[14:13:54] [CLEANUP] Reset agent query state
[14:13:54] [CLEANUP] Updated page indicator
[14:13:54] [CLEANUP] Rebuilt video layout
[14:13:54] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:54] [CLEANUP] ========================================
[14:13:54] [SERVER] Starting reconnect polling (5s interval)
[14:13:54] [CLEANUP] ========================================
[14:13:54] [CLEANUP] Cleaning up all agent connections and views
[14:13:54] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:54] [CLEANUP] Stopped and removed 0 video connections
[14:13:54] [CLEANUP] Removed 0 video views
[14:13:54] [CLEANUP] Removed 0 feed scroll views
[14:13:54] [CLEANUP] Removed 0 status labels
[14:13:54] [CLEANUP] Reset agent query state
[14:13:54] [CLEANUP] Updated page indicator
[14:13:54] [CLEANUP] Rebuilt video layout
[14:13:54] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:54] [CLEANUP] ========================================
[14:13:54] [SERVER] Starting reconnect polling (5s interval)
[14:13:55] [CLIENT_SIG] Event received: type=2 messageId=18828
[14:13:55] [WS_EVENT] Received event: type=2, messageId=18828
[14:13:55] [WS_EVENT] Message edited/updated: 18828
[14:13:55] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:13:55 +0000 - type: unknown, operation_type: 2, message_id: 18828, session_id: ILUIWU, state: 0
[14:13:55] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): {
alert = {
body = "";
title = StreamCam;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 18828, AnyHashable("session_id"): ILUIWU]
[14:13:55] [PUSH] App active - suppressing notification UI, posting internal event
[14:13:55] [PUSH_EMBED] No embedded message_data in notification
[14:13:55] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "";
title = StreamCam;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 18828, AnyHashable("session_id"): ILUIWU]
[14:13:55] [PUSH] Parsed message_id: 18828
[14:13:55] [PUSH] Parsed operation_type: 2
[14:13:55] [PUSH] Taking direct action: opType=2, messageId=18828
[14:13:55] [PUSH] TakeActionFromPush called: OperationType=2, MessageIds=18828
[14:13:55] [PUSH] Handling message fetch for opType=2, messageId=18828
[14:13:55] [PUSH] Requesting URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=18828
[14:13:55] [PUSH] Silent push received
[14:13:55] [PUSH_EMBED] No embedded message_data in notification
[14:13:55] [PUSH] No embedded data, pre-loading messages from server
[14:13:55] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:13:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18828, 18773, 18774, 18775, 18776]
[14:13:55] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:55] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:55] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:55] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:13:56] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:56] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:56] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:13:56] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=56, isReloading=false
[14:13:56] [SEND_MESSAGE] ✅ Added optimistic message id=-7 to arrays, newMsgCount=57
[14:13:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[-7, 18828, 18827, 18826, 18825]
[14:13:56] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:13:56] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:13:56] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:13:56] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:13:56] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:13:56] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:56] HELLO → sent (cached token, role=query)
[14:13:56] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:56] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:56] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:56] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:56] [CLEANUP] ========================================
[14:13:56] [CLEANUP] Cleaning up all agent connections and views
[14:13:56] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:56] [CLEANUP] Stopped and removed 0 video connections
[14:13:56] [CLEANUP] Removed 0 video views
[14:13:56] [CLEANUP] Removed 0 feed scroll views
[14:13:56] [CLEANUP] Removed 0 status labels
[14:13:56] [CLEANUP] Reset agent query state
[14:13:56] [CLEANUP] Updated page indicator
[14:13:56] [CLEANUP] Rebuilt video layout
[14:13:56] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:56] [CLEANUP] ========================================
[14:13:56] [SERVER] Starting reconnect polling (5s interval)
[14:13:56] [CLEANUP] ========================================
[14:13:56] [CLEANUP] Cleaning up all agent connections and views
[14:13:56] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:56] [CLEANUP] Stopped and removed 0 video connections
[14:13:56] [CLEANUP] Removed 0 video views
[14:13:56] [CLEANUP] Removed 0 feed scroll views
[14:13:56] [CLEANUP] Removed 0 status labels
[14:13:56] [CLEANUP] Reset agent query state
[14:13:56] [CLEANUP] Updated page indicator
[14:13:56] [CLEANUP] Rebuilt video layout
[14:13:56] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:56] [CLEANUP] ========================================
[14:13:56] [SERVER] Starting reconnect polling (5s interval)
[14:13:57] [PUSH] Silent push received
[14:13:57] [PUSH_EMBED] No embedded message_data in notification
[14:13:57] [PUSH] No embedded data, pre-loading messages from server
[14:13:57] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:13:57] [PUSH] get_message response: HTTP 200, 538 bytes
[14:13:57] [PUSH] get_message response body: [{"message_type":0,"message_id":18828,"session_id":"ILUIWU","message":"Yes but, I dont want 🤣","file_name":"","msgread":0,"datesent":"2026-01-23 13:13:43","timer":0,"timer_started_at":null,"timer_played":0,"sender_id":"EDAD55A1-003F-415D-AA60-672B34B504FE","sender_name":"Esra","distance":null,"link_url":null,"link_title":null,"link_description":null,"link_image_url":null,"reply_to_id":null,"replied_message":null,"replied_sender_id":null,"replied_sender_name":null,"read_by":["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"],"reactions":[]}]
[14:13:57] [PUSH] Updated readBy in allMessagesWithReadBy for message 18828: readBy=1
[14:13:57] [PUSH] Updated readBy in chatMessages for message 18828: readBy=1
[14:13:58] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:58] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:13:58] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:13:58] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [18778, 18777, 18776, 18775, 18774]
[14:13:58] [PUSH_PRELOAD] ⚡ Pre-cached 55 messages for instant display (preserved 5 from push)
[14:13:58] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:13:58] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18828, AnyHashable("operation_type"): 3]
[14:13:58] [PUSH] Parsed message_id: 18828
[14:13:58] [PUSH] Parsed operation_type: 3
[14:13:58] [PUSH] Taking direct action: opType=3, messageId=18828
[14:13:58] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18828
[14:13:58] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:13:58] [PRELOAD_CACHE] Preserving 6 push-inserted messages: [18779, 18778, 18777, 18776, 18775, 18774]
[14:13:58] [PUSH_PRELOAD] ⚡ Pre-cached 56 messages for instant display (preserved 6 from push)
[14:13:58] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:13:58] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "";
title = StreamCam;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18828, AnyHashable("operation_type"): 2, AnyHashable("session_id"): ILUIWU]
[14:13:58] [PUSH] Parsed message_id: 18828
[14:13:58] [PUSH] Parsed operation_type: 2
[14:13:58] [PUSH] Taking direct action: opType=2, messageId=18828
[14:13:58] [PUSH] TakeActionFromPush called: OperationType=2, MessageIds=18828
[14:13:58] [PUSH] Handling message fetch for opType=2, messageId=18828
[14:13:58] [PUSH] Requesting URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?session_id=ILUIWU&viewer=1&messages=18828
[14:13:58] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:58] HELLO → sent (cached token, role=query)
[14:13:58] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:13:58] [WS] Query connection failed - cleaning up all agent connections and views
[14:13:58] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:13:58] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:13:58] [CLEANUP] ========================================
[14:13:58] [CLEANUP] Cleaning up all agent connections and views
[14:13:58] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:58] [CLEANUP] Stopped and removed 0 video connections
[14:13:58] [CLEANUP] Removed 0 video views
[14:13:58] [CLEANUP] Removed 0 feed scroll views
[14:13:58] [CLEANUP] Removed 0 status labels
[14:13:58] [CLEANUP] Reset agent query state
[14:13:58] [CLEANUP] Updated page indicator
[14:13:58] [CLEANUP] Rebuilt video layout
[14:13:58] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:58] [CLEANUP] ========================================
[14:13:58] [SERVER] Starting reconnect polling (5s interval)
[14:13:58] [CLEANUP] ========================================
[14:13:58] [CLEANUP] Cleaning up all agent connections and views
[14:13:58] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:13:58] [CLEANUP] Stopped and removed 0 video connections
[14:13:58] [CLEANUP] Removed 0 video views
[14:13:58] [CLEANUP] Removed 0 feed scroll views
[14:13:58] [CLEANUP] Removed 0 status labels
[14:13:58] [CLEANUP] Reset agent query state
[14:13:58] [CLEANUP] Updated page indicator
[14:13:58] [CLEANUP] Rebuilt video layout
[14:13:58] [CLEANUP] ✅ All agent connections and views cleaned up
[14:13:58] [CLEANUP] ========================================
[14:13:58] [SERVER] Starting reconnect polling (5s interval)
[14:13:59] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18829,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:13:57"}
[14:13:59] [CHAT] receive_message.php JSON: ["message_type": 0, "file_name": , "datesent_utc": 2026-01-23 13:13:57, "message_id": 18829, "session_id": ILUIWU, "ok": 1]
[14:13:59] [DB_UPGRADE] Upgrading message ID: -7 → 18829, preserveOriginalDate=false
[14:13:59] [DB_UPGRADE] ❌ Step fail: UNIQUE constraint failed: local_messages.message_id
[14:13:59] [CLIENT_SIG] Event received: type=0 messageId=18829
[14:13:59] [PUSH] get_message response: HTTP 200, 538 bytes
[14:13:59] [PUSH] get_message response body: [{"message_type":0,"message_id":18828,"session_id":"ILUIWU","message":"Yes but, I dont want 🤣","file_name":"","msgread":1,"datesent":"2026-01-23 13:13:43","timer":0,"timer_started_at":null,"timer_played":0,"sender_id":"EDAD55A1-003F-415D-AA60-672B34B504FE","sender_name":"Esra","distance":null,"link_url":null,"link_title":null,"link_description":null,"link_image_url":null,"reply_to_id":null,"replied_message":null,"replied_sender_id":null,"replied_sender_name":null,"read_by":["3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF"],"reactions":[]}]
[14:13:59] [WS_EVENT] Received event: type=0, messageId=18829
[14:13:59] [WS_EVENT] 📨 New message notification (msgId=18829) - triggering incremental refresh, currentMsgCount=57
[14:13:59] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=57
[14:13:59] [PUSH] Updated readBy in allMessagesWithReadBy for message 18828: readBy=1
[14:13:59] [PUSH] Updated readBy in chatMessages for message 18828: readBy=1
[14:13:59] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18829
[14:13:59] [SEND_UPGRADE] ⚠️ DB upgrade failed, server ID 18829 not in memory yet - deleting provisional -7 from DB
[14:13:59] ReloadData 9
[14:13:59] [INCREMENTAL_SYNC] ✅ No new messages
[14:13:59] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=57
[14:13:59] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:13:59] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:00] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:00] HELLO → sent (cached token, role=query)
[14:14:00] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:00] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:00] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:00] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:00] [CLEANUP] ========================================
[14:14:00] [CLEANUP] Cleaning up all agent connections and views
[14:14:00] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:00] [CLEANUP] Stopped and removed 0 video connections
[14:14:00] [CLEANUP] Removed 0 video views
[14:14:00] [CLEANUP] Removed 0 feed scroll views
[14:14:00] [CLEANUP] Removed 0 status labels
[14:14:00] [CLEANUP] Reset agent query state
[14:14:00] [CLEANUP] Updated page indicator
[14:14:00] [CLEANUP] Rebuilt video layout
[14:14:00] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:00] [CLEANUP] ========================================
[14:14:00] [SERVER] Starting reconnect polling (5s interval)
[14:14:00] [CLEANUP] ========================================
[14:14:00] [CLEANUP] Cleaning up all agent connections and views
[14:14:00] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:00] [CLEANUP] Stopped and removed 0 video connections
[14:14:00] [CLEANUP] Removed 0 video views
[14:14:00] [CLEANUP] Removed 0 feed scroll views
[14:14:00] [CLEANUP] Removed 0 status labels
[14:14:00] [CLEANUP] Reset agent query state
[14:14:00] [CLEANUP] Updated page indicator
[14:14:00] [CLEANUP] Rebuilt video layout
[14:14:00] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:00] [CLEANUP] ========================================
[14:14:00] [SERVER] Starting reconnect polling (5s interval)
[14:14:00] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:01] [PUSH] Silent push received
[14:14:01] [PUSH_EMBED] No embedded message_data in notification
[14:14:01] [PUSH] No embedded data, pre-loading messages from server
[14:14:01] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:14:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:14:01] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:01] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:01] [PRELOAD_CACHE] Preserving 6 push-inserted messages: [18779, 18778, 18777, 18776, 18775, 18774]
[14:14:01] [PUSH_PRELOAD] ⚡ Pre-cached 56 messages for instant display (preserved 6 from push)
[14:14:01] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:14:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18829]
[14:14:01] [PUSH] Parsed message_id: 18829
[14:14:01] [PUSH] Parsed operation_type: 3
[14:14:01] [PUSH] Taking direct action: opType=3, messageId=18829
[14:14:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18829
[14:14:01] [CLIENT_SIG] Event received: type=3 messageId=18829
[14:14:01] [WS_EVENT] Received event: type=3, messageId=18829
[14:14:01] [WS_EVENT] Read receipt for message 18829 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:01] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:01] HELLO → sent (cached token, role=query)
[14:14:01] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:01] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:01] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:01] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:01] [CLEANUP] ========================================
[14:14:01] [CLEANUP] Cleaning up all agent connections and views
[14:14:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:01] [CLEANUP] Stopped and removed 0 video connections
[14:14:01] [CLEANUP] Removed 0 video views
[14:14:01] [CLEANUP] Removed 0 feed scroll views
[14:14:01] [CLEANUP] Removed 0 status labels
[14:14:01] [CLEANUP] Reset agent query state
[14:14:01] [CLEANUP] Updated page indicator
[14:14:01] [CLEANUP] Rebuilt video layout
[14:14:01] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:01] [CLEANUP] ========================================
[14:14:01] [SERVER] Starting reconnect polling (5s interval)
[14:14:01] [CLEANUP] ========================================
[14:14:01] [CLEANUP] Cleaning up all agent connections and views
[14:14:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:01] [CLEANUP] Stopped and removed 0 video connections
[14:14:01] [CLEANUP] Removed 0 video views
[14:14:01] [CLEANUP] Removed 0 feed scroll views
[14:14:01] [CLEANUP] Removed 0 status labels
[14:14:01] [CLEANUP] Reset agent query state
[14:14:01] [CLEANUP] Updated page indicator
[14:14:01] [CLEANUP] Rebuilt video layout
[14:14:01] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:01] [CLEANUP] ========================================
[14:14:01] [SERVER] Starting reconnect polling (5s interval)
[14:14:02] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:02] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:03] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:03] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:03] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:03] HELLO → sent (cached token, role=query)
[14:14:03] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:03] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:03] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:03] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:03] [CLEANUP] ========================================
[14:14:03] [CLEANUP] Cleaning up all agent connections and views
[14:14:03] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:03] [CLEANUP] Stopped and removed 0 video connections
[14:14:03] [CLEANUP] Removed 0 video views
[14:14:03] [CLEANUP] Removed 0 feed scroll views
[14:14:03] [CLEANUP] Removed 0 status labels
[14:14:03] [CLEANUP] Reset agent query state
[14:14:03] [CLEANUP] Updated page indicator
[14:14:03] [CLEANUP] Rebuilt video layout
[14:14:03] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:03] [CLEANUP] ========================================
[14:14:03] [SERVER] Starting reconnect polling (5s interval)
[14:14:03] [CLEANUP] ========================================
[14:14:03] [CLEANUP] Cleaning up all agent connections and views
[14:14:03] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:03] [CLEANUP] Stopped and removed 0 video connections
[14:14:03] [CLEANUP] Removed 0 video views
[14:14:03] [CLEANUP] Removed 0 feed scroll views
[14:14:03] [CLEANUP] Removed 0 status labels
[14:14:03] [CLEANUP] Reset agent query state
[14:14:03] [CLEANUP] Updated page indicator
[14:14:03] [CLEANUP] Rebuilt video layout
[14:14:03] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:03] [CLEANUP] ========================================
[14:14:03] [SERVER] Starting reconnect polling (5s interval)
[14:14:04] [CLIENT_SIG] Event received: type=0 messageId=18830
[14:14:04] [WS_EVENT] Received event: type=0, messageId=18830
[14:14:04] [WS_EVENT] 📨 New message notification (msgId=18830) - triggering incremental refresh, currentMsgCount=57
[14:14:04] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=57
[14:14:04] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18829
[14:14:04] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:14:04] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:14:04] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=58
[14:14:04] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:14:04 +0000 - type: unknown, operation_type: 0, message_id: 18830, session_id: ILUIWU, state: 0
[14:14:04] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:02";
"file_name" = "";
message = Truee;
"message_id" = 18830;
"message_type" = 0;
"prev_session_message_id" = 18829;
"replied_message" = "The IT OPS Manager until last year was more sexy. But now with vision it will quickly become a 1 man show. Delivery more visible.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18826;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18830]
[14:14:04] [PUSH] App active - suppressing notification UI, posting internal event
[14:14:04] [PUSH_EMBED] 📩 Received embedded message: id=18830, type=0, sender=Esra
[14:14:04] [PUSH_EMBED] ✅ Saved message 18830 to local DB (sync)
[14:14:04] [PUSH_EMBED] Inserted message 18830 into existing cache (now 57 messages)
[14:14:04] [PUSH_EMBED] Fetching evolution data for message 18830 in background
[14:14:04] [PUSH_EMBED] ✅ Fully processed message 18830
[14:14:04] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:02";
"file_name" = "";
message = Truee;
"message_id" = 18830;
"message_type" = 0;
"prev_session_message_id" = 18829;
"replied_message" = "The IT OPS Manager until last year was more sexy. But now with vision it will quickly become a 1 man show. Delivery more visible.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18826;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18830]
[14:14:04] [PUSH_EMBED_VC] Message 18830 already in memory - skipping
[14:14:04] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:14:04] [PUSH] Parsed message_id: 18830
[14:14:04] [PUSH] Parsed operation_type: 0
[14:14:04] [PUSH] Taking direct action: opType=0, messageId=18830
[14:14:04] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18830
[14:14:04] [PUSH] ⚡ Message 18830 already in memory - skipping duplicate notification entirely
[14:14:04] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:14:04] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:14:04] [PUSH_UI] Message 18830 already in memory - skipping insert
[14:14:04] [PUSH] Silent push received
[14:14:04] [PUSH_EMBED] 📩 Received embedded message: id=18830, type=0, sender=Esra
[14:14:04] [PUSH_EMBED] ✅ Saved message 18830 to local DB (sync)
[14:14:04] [PUSH_EMBED] Fetching evolution data for message 18830 in background
[14:14:04] [PUSH_EMBED] ✅ Fully processed message 18830
[14:14:04] [PUSH] Embedded message handled instantly from silent push
[14:14:04] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:14:04] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:14:04] [PUSH_UI] Message 18830 already in memory - skipping insert
[14:14:04] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, 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-01-23 13:14:02";
"file_name" = "";
message = Truee;
"message_id" = 18830;
"message_type" = 0;
"prev_session_message_id" = 18829;
"replied_message" = "The IT OPS Manager until last year was more sexy. But now with vision it will quickly become a 1 man show. Delivery more visible.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18826;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18830]
[14:14:04] [PUSH_EMBED_VC] Message 18830 already in memory - skipping
[14:14:04] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:14:04] [PUSH] Parsed message_id: 18830
[14:14:04] [PUSH] Parsed operation_type: 0
[14:14:04] [PUSH] Taking direct action: opType=0, messageId=18830
[14:14:04] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18830
[14:14:04] [PUSH] ⚡ Message 18830 already in memory - skipping duplicate notification entirely
[14:14:04] [PUSH_EMBED] Got evolution data for message 18830, saving to local DB
[14:14:04] [PUSH_EMBED] Saved evolution data for message 18830
[14:14:04] [PUSH_EMBED] Got evolution data for message 18830, saving to local DB
[14:14:04] [PUSH_EMBED] Saved evolution data for message 18830
[14:14:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:14:04] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18829 → 18830
[14:14:04] [CELL_UPLOAD] configure: msgId=18824, file=0d08f6fe6141897c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[14:14:04] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[14:14:04] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=0d08f6fe6141897c.jpg, overlayExists=true
[14:14:05] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:05] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:05] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:05] HELLO → sent (cached token, role=query)
[14:14:05] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:05] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:05] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:05] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:05] [CLEANUP] ========================================
[14:14:05] [CLEANUP] Cleaning up all agent connections and views
[14:14:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:05] [CLEANUP] Stopped and removed 0 video connections
[14:14:05] [CLEANUP] Removed 0 video views
[14:14:05] [CLEANUP] Removed 0 feed scroll views
[14:14:05] [CLEANUP] Removed 0 status labels
[14:14:05] [CLEANUP] Reset agent query state
[14:14:05] [CLEANUP] Updated page indicator
[14:14:05] [CLEANUP] Rebuilt video layout
[14:14:05] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:05] [CLEANUP] ========================================
[14:14:05] [SERVER] Starting reconnect polling (5s interval)
[14:14:05] [CLEANUP] ========================================
[14:14:05] [CLEANUP] Cleaning up all agent connections and views
[14:14:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:05] [CLEANUP] Stopped and removed 0 video connections
[14:14:05] [CLEANUP] Removed 0 video views
[14:14:05] [CLEANUP] Removed 0 feed scroll views
[14:14:05] [CLEANUP] Removed 0 status labels
[14:14:05] [CLEANUP] Reset agent query state
[14:14:05] [CLEANUP] Updated page indicator
[14:14:05] [CLEANUP] Rebuilt video layout
[14:14:05] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:05] [CLEANUP] ========================================
[14:14:05] [SERVER] Starting reconnect polling (5s interval)
[14:14:05] [PUSH] Silent push received
[14:14:05] [PUSH_EMBED] No embedded message_data in notification
[14:14:05] [PUSH] No embedded data, pre-loading messages from server
[14:14:05] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:14:06] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:14:06] [PRELOAD_CACHE] Preserving 7 push-inserted messages: [18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:14:06] [PUSH_PRELOAD] ⚡ Pre-cached 57 messages for instant display (preserved 7 from push)
[14:14:06] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:14:06] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18830]
[14:14:06] [PUSH] Parsed message_id: 18830
[14:14:06] [PUSH] Parsed operation_type: 3
[14:14:06] [PUSH] Taking direct action: opType=3, messageId=18830
[14:14:06] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18830
[14:14:06] [CLIENT_SIG] Event received: type=3 messageId=18830
[14:14:06] [WS_EVENT] Received event: type=3, messageId=18830
[14:14:06] [WS_EVENT] Read receipt for message 18830 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:14:07] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:07] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:07] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:07] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:07] HELLO → sent (cached token, role=query)
[14:14:07] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:07] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:07] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:07] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:07] [CLEANUP] ========================================
[14:14:07] [CLEANUP] Cleaning up all agent connections and views
[14:14:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:07] [CLEANUP] Stopped and removed 0 video connections
[14:14:07] [CLEANUP] Removed 0 video views
[14:14:07] [CLEANUP] Removed 0 feed scroll views
[14:14:07] [CLEANUP] Removed 0 status labels
[14:14:07] [CLEANUP] Reset agent query state
[14:14:07] [CLEANUP] Updated page indicator
[14:14:07] [CLEANUP] Rebuilt video layout
[14:14:07] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:07] [CLEANUP] ========================================
[14:14:07] [SERVER] Starting reconnect polling (5s interval)
[14:14:07] [CLEANUP] ========================================
[14:14:07] [CLEANUP] Cleaning up all agent connections and views
[14:14:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:07] [CLEANUP] Stopped and removed 0 video connections
[14:14:07] [CLEANUP] Removed 0 video views
[14:14:07] [CLEANUP] Removed 0 feed scroll views
[14:14:07] [CLEANUP] Removed 0 status labels
[14:14:07] [CLEANUP] Reset agent query state
[14:14:07] [CLEANUP] Updated page indicator
[14:14:07] [CLEANUP] Rebuilt video layout
[14:14:07] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:07] [CLEANUP] ========================================
[14:14:07] [SERVER] Starting reconnect polling (5s interval)
[14:14:08] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:08] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:09] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:09] HELLO → sent (cached token, role=query)
[14:14:09] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:09] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:09] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:09] [CLEANUP] ========================================
[14:14:09] [CLEANUP] Cleaning up all agent connections and views
[14:14:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:09] [CLEANUP] Stopped and removed 0 video connections
[14:14:09] [CLEANUP] Removed 0 video views
[14:14:09] [CLEANUP] Removed 0 feed scroll views
[14:14:09] [CLEANUP] Removed 0 status labels
[14:14:09] [CLEANUP] Reset agent query state
[14:14:09] [CLEANUP] Updated page indicator
[14:14:09] [CLEANUP] Rebuilt video layout
[14:14:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:09] [CLEANUP] ========================================
[14:14:09] [SERVER] Starting reconnect polling (5s interval)
[14:14:09] [CLEANUP] ========================================
[14:14:09] [CLEANUP] Cleaning up all agent connections and views
[14:14:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:09] [CLEANUP] Stopped and removed 0 video connections
[14:14:09] [CLEANUP] Removed 0 video views
[14:14:09] [CLEANUP] Removed 0 feed scroll views
[14:14:09] [CLEANUP] Removed 0 status labels
[14:14:09] [CLEANUP] Reset agent query state
[14:14:09] [CLEANUP] Updated page indicator
[14:14:09] [CLEANUP] Rebuilt video layout
[14:14:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:09] [CLEANUP] ========================================
[14:14:09] [SERVER] Starting reconnect polling (5s interval)
[14:14:09] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:10] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:10] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:10] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:10] HELLO → sent (cached token, role=query)
[14:14:10] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:10] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:10] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:10] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:10] [CLEANUP] ========================================
[14:14:10] [CLEANUP] Cleaning up all agent connections and views
[14:14:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:10] [CLEANUP] Stopped and removed 0 video connections
[14:14:10] [CLEANUP] Removed 0 video views
[14:14:10] [CLEANUP] Removed 0 feed scroll views
[14:14:10] [CLEANUP] Removed 0 status labels
[14:14:10] [CLEANUP] Reset agent query state
[14:14:10] [CLEANUP] Updated page indicator
[14:14:10] [CLEANUP] Rebuilt video layout
[14:14:10] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:10] [CLEANUP] ========================================
[14:14:10] [SERVER] Starting reconnect polling (5s interval)
[14:14:10] [CLEANUP] ========================================
[14:14:10] [CLEANUP] Cleaning up all agent connections and views
[14:14:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:10] [CLEANUP] Stopped and removed 0 video connections
[14:14:10] [CLEANUP] Removed 0 video views
[14:14:10] [CLEANUP] Removed 0 feed scroll views
[14:14:10] [CLEANUP] Removed 0 status labels
[14:14:10] [CLEANUP] Reset agent query state
[14:14:10] [CLEANUP] Updated page indicator
[14:14:10] [CLEANUP] Rebuilt video layout
[14:14:10] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:10] [CLEANUP] ========================================
[14:14:10] [SERVER] Starting reconnect polling (5s interval)
[14:14:12] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:12] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:12] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:12] HELLO → sent (cached token, role=query)
[14:14:12] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:12] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:12] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:12] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:12] [CLEANUP] ========================================
[14:14:12] [CLEANUP] Cleaning up all agent connections and views
[14:14:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:12] [CLEANUP] Stopped and removed 0 video connections
[14:14:12] [CLEANUP] Removed 0 video views
[14:14:12] [CLEANUP] Removed 0 feed scroll views
[14:14:12] [CLEANUP] Removed 0 status labels
[14:14:12] [CLEANUP] Reset agent query state
[14:14:12] [CLEANUP] Updated page indicator
[14:14:12] [CLEANUP] Rebuilt video layout
[14:14:12] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:12] [CLEANUP] ========================================
[14:14:12] [SERVER] Starting reconnect polling (5s interval)
[14:14:12] [CLEANUP] ========================================
[14:14:12] [CLEANUP] Cleaning up all agent connections and views
[14:14:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:12] [CLEANUP] Stopped and removed 0 video connections
[14:14:12] [CLEANUP] Removed 0 video views
[14:14:12] [CLEANUP] Removed 0 feed scroll views
[14:14:12] [CLEANUP] Removed 0 status labels
[14:14:12] [CLEANUP] Reset agent query state
[14:14:12] [CLEANUP] Updated page indicator
[14:14:12] [CLEANUP] Rebuilt video layout
[14:14:12] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:12] [CLEANUP] ========================================
[14:14:12] [SERVER] Starting reconnect polling (5s interval)
[14:14:13] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:14] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:14:14] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=58, isReloading=false
[14:14:14] [SEND_MESSAGE] ✅ Added optimistic message id=-8 to arrays, newMsgCount=59
[14:14:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[-8, 18830, 18829, 18828, 18827]
[14:14:14] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:14:14] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:14:14] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:14] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:14] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:14] HELLO → sent (cached token, role=query)
[14:14:14] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:14] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:14] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:14] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:14] [CLEANUP] ========================================
[14:14:14] [CLEANUP] Cleaning up all agent connections and views
[14:14:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:14] [CLEANUP] Stopped and removed 0 video connections
[14:14:14] [CLEANUP] Removed 0 video views
[14:14:14] [CLEANUP] Removed 0 feed scroll views
[14:14:14] [CLEANUP] Removed 0 status labels
[14:14:14] [CLEANUP] Reset agent query state
[14:14:14] [CLEANUP] Updated page indicator
[14:14:14] [CLEANUP] Rebuilt video layout
[14:14:14] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:14] [CLEANUP] ========================================
[14:14:14] [SERVER] Starting reconnect polling (5s interval)
[14:14:14] [CLEANUP] ========================================
[14:14:14] [CLEANUP] Cleaning up all agent connections and views
[14:14:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:14] [CLEANUP] Stopped and removed 0 video connections
[14:14:14] [CLEANUP] Removed 0 video views
[14:14:14] [CLEANUP] Removed 0 feed scroll views
[14:14:14] [CLEANUP] Removed 0 status labels
[14:14:14] [CLEANUP] Reset agent query state
[14:14:14] [CLEANUP] Updated page indicator
[14:14:14] [CLEANUP] Rebuilt video layout
[14:14:14] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:14] [CLEANUP] ========================================
[14:14:14] [SERVER] Starting reconnect polling (5s interval)
[14:14:16] [CLIENT_SIG] Event received: type=0 messageId=18831
[14:14:16] [WS_EVENT] Received event: type=0, messageId=18831
[14:14:16] [WS_EVENT] 📨 New message notification (msgId=18831) - triggering incremental refresh, currentMsgCount=59
[14:14:16] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=59
[14:14:16] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18830
[14:14:16] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:16] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:16] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:14:16 +0000 - type: unknown, operation_type: 0, message_id: 18831, session_id: ILUIWU, state: 0
[14:14:16] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:13";
"file_name" = "";
message = "Ha ha \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18831;
"message_type" = 0;
"prev_session_message_id" = 18830;
"replied_message" = "Babyyyy. You're sooo mean";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18829;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18831, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:14:16] [PUSH] App active - suppressing notification UI, posting internal event
[14:14:16] [PUSH_EMBED] 📩 Received embedded message: id=18831, type=0, sender=Esra
[14:14:16] [PUSH_EMBED] ✅ Saved message 18831 to local DB (sync)
[14:14:16] [PUSH_EMBED] Inserted message 18831 into existing cache (now 58 messages)
[14:14:16] [PUSH_EMBED] Fetching evolution data for message 18831 in background
[14:14:16] [PUSH_EMBED] ✅ Fully processed message 18831
[14:14:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:13";
"file_name" = "";
message = "Ha ha \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18831;
"message_type" = 0;
"prev_session_message_id" = 18830;
"replied_message" = "Babyyyy. You're sooo mean";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18829;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18831, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:14:16] [PUSH_EMBED_VC] Processing embedded message: id=18831, type=0, sender=Esra, prevId=18830
[14:14:16] [PUSH_EMBED_VC] Inserted message 18831 into allMessagesWithReadBy (now 60 messages)
[14:14:16] [PUSH_EMBED_VC] ✅ Previous message 18830 exists in memory
[14:14:16] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:14:16] [PUSH] Parsed message_id: 18831
[14:14:16] [PUSH] Parsed operation_type: 0
[14:14:16] [PUSH] Taking direct action: opType=0, messageId=18831
[14:14:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18831
[14:14:16] [PUSH] ⚡ Message 18831 already in memory - skipping duplicate notification entirely
[14:14:16] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:14:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:14:16] [PUSH_UI] Message 18831 already in memory - skipping insert
[14:14:16] [PUSH_EMBED_VC] Saved message 18831 to local DB
[14:14:16] [INCREMENTAL_SYNC] ✅ Found 2 new messages
[14:14:16] [PUSH] Silent push received
[14:14:16] [PUSH_EMBED] 📩 Received embedded message: id=18831, type=0, sender=Esra
[14:14:16] [PUSH_EMBED] ✅ Saved message 18831 to local DB (sync)
[14:14:16] [PUSH_EMBED] Fetching evolution data for message 18831 in background
[14:14:16] [PUSH_EMBED] ✅ Fully processed message 18831
[14:14:16] [PUSH] Embedded message handled instantly from silent push
[14:14:16] [INCREMENTAL_SYNC] Replaced optimistic message (id=-8) with server message (id=18832)
[14:14:16] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=2
[14:14:16] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:14:16] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:14:16] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:14:16] [PUSH_UI] Message 18831 already in memory - skipping insert
[14:14:16] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18831, AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:13";
"file_name" = "";
message = "Ha ha \Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18831;
"message_type" = 0;
"prev_session_message_id" = 18830;
"replied_message" = "Babyyyy. You're sooo mean";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18829;
"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;
}]
[14:14:16] [PUSH_EMBED_VC] Message 18831 already in memory - skipping
[14:14:16] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:14:16] [PUSH] Parsed message_id: 18831
[14:14:16] [PUSH] Parsed operation_type: 0
[14:14:16] [PUSH] Taking direct action: opType=0, messageId=18831
[14:14:16] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18831
[14:14:16] [PUSH] ⚡ Message 18831 already in memory - skipping duplicate notification entirely
[14:14:16] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=60
[14:14:16] [PUSH_EMBED] Got evolution data for message 18831, saving to local DB
[14:14:16] [PUSH_EMBED] Saved evolution data for message 18831
[14:14:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:14:16] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18830 → 18831
[14:14:16] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:16] HELLO → sent (cached token, role=query)
[14:14:16] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:16] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:16] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:16] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:16] [CLEANUP] ========================================
[14:14:16] [CLEANUP] Cleaning up all agent connections and views
[14:14:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:16] [CLEANUP] Stopped and removed 0 video connections
[14:14:16] [CLEANUP] Removed 0 video views
[14:14:16] [CLEANUP] Removed 0 feed scroll views
[14:14:16] [CLEANUP] Removed 0 status labels
[14:14:16] [CLEANUP] Reset agent query state
[14:14:16] [CLEANUP] Updated page indicator
[14:14:16] [CLEANUP] Rebuilt video layout
[14:14:16] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:16] [CLEANUP] ========================================
[14:14:16] [SERVER] Starting reconnect polling (5s interval)
[14:14:16] [CLEANUP] ========================================
[14:14:16] [CLEANUP] Cleaning up all agent connections and views
[14:14:16] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:16] [CLEANUP] Stopped and removed 0 video connections
[14:14:16] [CLEANUP] Removed 0 video views
[14:14:16] [CLEANUP] Removed 0 feed scroll views
[14:14:16] [CLEANUP] Removed 0 status labels
[14:14:16] [CLEANUP] Reset agent query state
[14:14:16] [CLEANUP] Updated page indicator
[14:14:16] [CLEANUP] Rebuilt video layout
[14:14:16] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:16] [CLEANUP] ========================================
[14:14:16] [SERVER] Starting reconnect polling (5s interval)
[14:14:17] [CLIENT_SIG] Event received: type=0 messageId=18832
[14:14:17] [WS_EVENT] Received event: type=0, messageId=18832
[14:14:17] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18832,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:14:14"}
[14:14:17] [WS_EVENT] 📨 New message notification (msgId=18832) - triggering incremental refresh, currentMsgCount=60
[14:14:17] [CHAT] receive_message.php JSON: ["file_name": , "datesent_utc": 2026-01-23 13:14:14, "message_id": 18832, "session_id": ILUIWU, "message_type": 0, "ok": 1]
[14:14:17] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=60
[14:14:17] [DB_UPGRADE] Upgrading message ID: -8 → 18832, preserveOriginalDate=false
[14:14:17] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18832
[14:14:17] [DB_UPGRADE] ⚠️ No rows affected - message -8 not found in DB
[14:14:17] [SEND_UPGRADE] ⚠️ Server ID 18832 already exists - removing provisional entry -8
[14:14:17] [PUSH_EMBED] Got evolution data for message 18831, saving to local DB
[14:14:17] ReloadData 9
[14:14:17] [PUSH_EMBED] Saved evolution data for message 18831
[14:14:17] [INCREMENTAL_SYNC] ✅ No new messages
[14:14:17] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=60
[14:14:18] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:18] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:18] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:18] HELLO → sent (cached token, role=query)
[14:14:18] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:18] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:18] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:18] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:18] [CLEANUP] ========================================
[14:14:18] [CLEANUP] Cleaning up all agent connections and views
[14:14:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:18] [CLEANUP] Stopped and removed 0 video connections
[14:14:18] [CLEANUP] Removed 0 video views
[14:14:18] [CLEANUP] Removed 0 feed scroll views
[14:14:18] [CLEANUP] Removed 0 status labels
[14:14:18] [CLEANUP] Reset agent query state
[14:14:18] [CLEANUP] Updated page indicator
[14:14:18] [CLEANUP] Rebuilt video layout
[14:14:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:18] [CLEANUP] ========================================
[14:14:18] [SERVER] Starting reconnect polling (5s interval)
[14:14:18] [CLEANUP] ========================================
[14:14:18] [CLEANUP] Cleaning up all agent connections and views
[14:14:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:18] [CLEANUP] Stopped and removed 0 video connections
[14:14:18] [CLEANUP] Removed 0 video views
[14:14:18] [CLEANUP] Removed 0 feed scroll views
[14:14:18] [CLEANUP] Removed 0 status labels
[14:14:18] [CLEANUP] Reset agent query state
[14:14:18] [CLEANUP] Updated page indicator
[14:14:18] [CLEANUP] Rebuilt video layout
[14:14:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:18] [CLEANUP] ========================================
[14:14:18] [SERVER] Starting reconnect polling (5s interval)
[14:14:19] [PUSH] Silent push received
[14:14:19] [PUSH_EMBED] No embedded message_data in notification
[14:14:19] [PUSH] No embedded data, pre-loading messages from server
[14:14:19] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:14:19] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:19] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:19] [PUSH] Silent push received
[14:14:19] [PUSH_EMBED] No embedded message_data in notification
[14:14:19] [PUSH] No embedded data, pre-loading messages from server
[14:14:19] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:14:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:14:20] [PRELOAD_CACHE] Preserving 9 push-inserted messages: [18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:14:20] [PUSH_PRELOAD] ⚡ Pre-cached 59 messages for instant display (preserved 9 from push)
[14:14:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:14:20] [PRELOAD_CACHE] Preserving 9 push-inserted messages: [18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:14:20] [PUSH_PRELOAD] ⚡ Pre-cached 59 messages for instant display (preserved 9 from push)
[14:14:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:14:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18831, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
[14:14:20] [PUSH] Parsed message_id: 18831
[14:14:20] [PUSH] Parsed operation_type: 3
[14:14:20] [PUSH] Taking direct action: opType=3, messageId=18831
[14:14:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18831
[14:14:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:14:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18831, AnyHashable("operation_type"): 3]
[14:14:20] [PUSH] Parsed message_id: 18831
[14:14:20] [PUSH] Parsed operation_type: 3
[14:14:20] [PUSH] Taking direct action: opType=3, messageId=18831
[14:14:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18831
[14:14:20] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:20] HELLO → sent (cached token, role=query)
[14:14:20] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:20] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:20] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:20] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:20] [CLEANUP] ========================================
[14:14:20] [CLEANUP] Cleaning up all agent connections and views
[14:14:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:20] [CLEANUP] Stopped and removed 0 video connections
[14:14:20] [CLEANUP] Removed 0 video views
[14:14:20] [CLEANUP] Removed 0 feed scroll views
[14:14:20] [CLEANUP] Removed 0 status labels
[14:14:20] [CLEANUP] Reset agent query state
[14:14:20] [CLEANUP] Updated page indicator
[14:14:20] [CLEANUP] Rebuilt video layout
[14:14:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:20] [CLEANUP] ========================================
[14:14:20] [SERVER] Starting reconnect polling (5s interval)
[14:14:20] [CLEANUP] ========================================
[14:14:20] [CLEANUP] Cleaning up all agent connections and views
[14:14:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:20] [CLEANUP] Stopped and removed 0 video connections
[14:14:20] [CLEANUP] Removed 0 video views
[14:14:20] [CLEANUP] Removed 0 feed scroll views
[14:14:20] [CLEANUP] Removed 0 status labels
[14:14:20] [CLEANUP] Reset agent query state
[14:14:20] [CLEANUP] Updated page indicator
[14:14:20] [CLEANUP] Rebuilt video layout
[14:14:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:20] [CLEANUP] ========================================
[14:14:20] [SERVER] Starting reconnect polling (5s interval)
[14:14:20] [CLIENT_SIG] Event received: type=3 messageId=18831
[14:14:20] [WS_EVENT] Received event: type=3, messageId=18831
[14:14:20] [WS_EVENT] Read receipt for message 18831 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:14:20] [PUSH] Silent push received
[14:14:20] [PUSH_EMBED] No embedded message_data in notification
[14:14:20] [PUSH] No embedded data, pre-loading messages from server
[14:14:20] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:14:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:14:20] [PRELOAD_CACHE] Preserving 9 push-inserted messages: [18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:14:20] [PUSH_PRELOAD] ⚡ Pre-cached 59 messages for instant display (preserved 9 from push)
[14:14:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:14:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18832, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
[14:14:20] [PUSH] Parsed message_id: 18832
[14:14:20] [PUSH] Parsed operation_type: 3
[14:14:20] [PUSH] Taking direct action: opType=3, messageId=18832
[14:14:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18832
[14:14:21] [CLIENT_SIG] Event received: type=3 messageId=18832
[14:14:21] [WS_EVENT] Received event: type=3, messageId=18832
[14:14:21] [WS_EVENT] Read receipt for message 18832 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:21] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:21] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:22] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:22] HELLO → sent (cached token, role=query)
[14:14:22] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:22] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:22] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:22] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:22] [CLEANUP] ========================================
[14:14:22] [CLEANUP] Cleaning up all agent connections and views
[14:14:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:22] [CLEANUP] Stopped and removed 0 video connections
[14:14:22] [CLEANUP] Removed 0 video views
[14:14:22] [CLEANUP] Removed 0 feed scroll views
[14:14:22] [CLEANUP] Removed 0 status labels
[14:14:22] [CLEANUP] Reset agent query state
[14:14:22] [CLEANUP] Updated page indicator
[14:14:22] [CLEANUP] Rebuilt video layout
[14:14:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:22] [CLEANUP] ========================================
[14:14:22] [SERVER] Starting reconnect polling (5s interval)
[14:14:22] [CLEANUP] ========================================
[14:14:22] [CLEANUP] Cleaning up all agent connections and views
[14:14:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:22] [CLEANUP] Stopped and removed 0 video connections
[14:14:22] [CLEANUP] Removed 0 video views
[14:14:22] [CLEANUP] Removed 0 feed scroll views
[14:14:22] [CLEANUP] Removed 0 status labels
[14:14:22] [CLEANUP] Reset agent query state
[14:14:22] [CLEANUP] Updated page indicator
[14:14:22] [CLEANUP] Rebuilt video layout
[14:14:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:22] [CLEANUP] ========================================
[14:14:22] [SERVER] Starting reconnect polling (5s interval)
[14:14:22] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:14:23] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:23] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:23] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:23] HELLO → sent (cached token, role=query)
[14:14:23] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:23] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:23] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:23] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:23] [CLEANUP] ========================================
[14:14:23] [CLEANUP] Cleaning up all agent connections and views
[14:14:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:23] [CLEANUP] Stopped and removed 0 video connections
[14:14:23] [CLEANUP] Removed 0 video views
[14:14:23] [CLEANUP] Removed 0 feed scroll views
[14:14:23] [CLEANUP] Removed 0 status labels
[14:14:23] [CLEANUP] Reset agent query state
[14:14:23] [CLEANUP] Updated page indicator
[14:14:23] [CLEANUP] Rebuilt video layout
[14:14:23] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:23] [CLEANUP] ========================================
[14:14:23] [SERVER] Starting reconnect polling (5s interval)
[14:14:23] [CLEANUP] ========================================
[14:14:23] [CLEANUP] Cleaning up all agent connections and views
[14:14:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:23] [CLEANUP] Stopped and removed 0 video connections
[14:14:23] [CLEANUP] Removed 0 video views
[14:14:23] [CLEANUP] Removed 0 feed scroll views
[14:14:23] [CLEANUP] Removed 0 status labels
[14:14:23] [CLEANUP] Reset agent query state
[14:14:23] [CLEANUP] Updated page indicator
[14:14:23] [CLEANUP] Rebuilt video layout
[14:14:23] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:23] [CLEANUP] ========================================
[14:14:23] [SERVER] Starting reconnect polling (5s interval)
[14:14:25] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:25] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:26] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:26] HELLO → sent (cached token, role=query)
[14:14:26] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:26] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:26] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:26] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:26] [CLEANUP] ========================================
[14:14:26] [CLEANUP] Cleaning up all agent connections and views
[14:14:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:26] [CLEANUP] Stopped and removed 0 video connections
[14:14:26] [CLEANUP] Removed 0 video views
[14:14:26] [CLEANUP] Removed 0 feed scroll views
[14:14:26] [CLEANUP] Removed 0 status labels
[14:14:26] [CLEANUP] Reset agent query state
[14:14:26] [CLEANUP] Updated page indicator
[14:14:26] [CLEANUP] Rebuilt video layout
[14:14:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:26] [CLEANUP] ========================================
[14:14:26] [SERVER] Starting reconnect polling (5s interval)
[14:14:26] [CLEANUP] ========================================
[14:14:26] [CLEANUP] Cleaning up all agent connections and views
[14:14:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:26] [CLEANUP] Stopped and removed 0 video connections
[14:14:26] [CLEANUP] Removed 0 video views
[14:14:26] [CLEANUP] Removed 0 feed scroll views
[14:14:26] [CLEANUP] Removed 0 status labels
[14:14:26] [CLEANUP] Reset agent query state
[14:14:26] [CLEANUP] Updated page indicator
[14:14:26] [CLEANUP] Rebuilt video layout
[14:14:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:26] [CLEANUP] ========================================
[14:14:26] [SERVER] Starting reconnect polling (5s interval)
[14:14:27] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:27] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:29] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:29] HELLO → sent (cached token, role=query)
[14:14:29] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:29] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:29] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:29] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:29] [CLEANUP] ========================================
[14:14:29] [CLEANUP] Cleaning up all agent connections and views
[14:14:29] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:29] [CLEANUP] Stopped and removed 0 video connections
[14:14:29] [CLEANUP] Removed 0 video views
[14:14:29] [CLEANUP] Removed 0 feed scroll views
[14:14:29] [CLEANUP] Removed 0 status labels
[14:14:29] [CLEANUP] Reset agent query state
[14:14:29] [CLEANUP] Updated page indicator
[14:14:29] [CLEANUP] Rebuilt video layout
[14:14:29] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:29] [CLEANUP] ========================================
[14:14:29] [SERVER] Starting reconnect polling (5s interval)
[14:14:29] [CLEANUP] ========================================
[14:14:29] [CLEANUP] Cleaning up all agent connections and views
[14:14:29] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:29] [CLEANUP] Stopped and removed 0 video connections
[14:14:29] [CLEANUP] Removed 0 video views
[14:14:29] [CLEANUP] Removed 0 feed scroll views
[14:14:29] [CLEANUP] Removed 0 status labels
[14:14:29] [CLEANUP] Reset agent query state
[14:14:29] [CLEANUP] Updated page indicator
[14:14:29] [CLEANUP] Rebuilt video layout
[14:14:29] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:29] [CLEANUP] ========================================
[14:14:29] [SERVER] Starting reconnect polling (5s interval)
[14:14:31] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:31] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:31] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:31] HELLO → sent (cached token, role=query)
[14:14:31] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:31] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:31] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:31] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:31] [CLEANUP] ========================================
[14:14:31] [CLEANUP] Cleaning up all agent connections and views
[14:14:31] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:31] [CLEANUP] Stopped and removed 0 video connections
[14:14:31] [CLEANUP] Removed 0 video views
[14:14:31] [CLEANUP] Removed 0 feed scroll views
[14:14:31] [CLEANUP] Removed 0 status labels
[14:14:31] [CLEANUP] Reset agent query state
[14:14:31] [CLEANUP] Updated page indicator
[14:14:31] [CLEANUP] Rebuilt video layout
[14:14:31] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:31] [CLEANUP] ========================================
[14:14:31] [SERVER] Starting reconnect polling (5s interval)
[14:14:31] [CLEANUP] ========================================
[14:14:31] [CLEANUP] Cleaning up all agent connections and views
[14:14:31] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:31] [CLEANUP] Stopped and removed 0 video connections
[14:14:31] [CLEANUP] Removed 0 video views
[14:14:31] [CLEANUP] Removed 0 feed scroll views
[14:14:31] [CLEANUP] Removed 0 status labels
[14:14:31] [CLEANUP] Reset agent query state
[14:14:31] [CLEANUP] Updated page indicator
[14:14:31] [CLEANUP] Rebuilt video layout
[14:14:31] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:31] [CLEANUP] ========================================
[14:14:31] [SERVER] Starting reconnect polling (5s interval)
[14:14:33] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:33] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:14:33] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:14:33] HELLO → sent (cached token, role=query)
[14:14:33] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:14:33] [WS] Query connection failed - cleaning up all agent connections and views
[14:14:33] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:14:33] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:14:33] [CLEANUP] ========================================
[14:14:33] [CLEANUP] Cleaning up all agent connections and views
[14:14:33] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:33] [CLEANUP] Stopped and removed 0 video connections
[14:14:33] [CLEANUP] Removed 0 video views
[14:14:33] [CLEANUP] Removed 0 feed scroll views
[14:14:33] [CLEANUP] Removed 0 status labels
[14:14:33] [CLEANUP] Reset agent query state
[14:14:33] [CLEANUP] Updated page indicator
[14:14:33] [CLEANUP] Rebuilt video layout
[14:14:33] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:33] [CLEANUP] ========================================
[14:14:33] [SERVER] Starting reconnect polling (5s interval)
[14:14:33] [CLEANUP] ========================================
[14:14:33] [CLEANUP] Cleaning up all agent connections and views
[14:14:33] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:14:33] [CLEANUP] Stopped and removed 0 video connections
[14:14:33] [CLEANUP] Removed 0 video views
[14:14:33] [CLEANUP] Removed 0 feed scroll views
[14:14:33] [CLEANUP] Removed 0 status labels
[14:14:33] [CLEANUP] Reset agent query state
[14:14:33] [CLEANUP] Updated page indicator
[14:14:33] [CLEANUP] Rebuilt video layout
[14:14:33] [CLEANUP] ✅ All agent connections and views cleaned up
[14:14:33] [CLEANUP] ========================================
[14:14:33] [SERVER] Starting reconnect polling (5s interval)
[14:14:33] [LIFECYCLE] App resigning active - cleared crash flag
[14:14:34] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:14:34] [SECURITY] Saved background timestamp
[14:14:34] [LIFECYCLE] App entering background - cleared crash flag
[14:14:34] [CLIENT_SIG] Disconnecting
[14:14:34] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:14:34] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[14:14:34] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:14:34] In cleanupPeer
[14:14:34] In cleanupPeer
[14:14:34] [LIFECYCLE] WebRTC audio disabled
[14:14:34] [LIFECYCLE] AVAudioSession deactivated
[14:14:34] [LIFECYCLE] All connections stopped
[14:14:34] [CLIENT_SIG] WebSocket closed with code 1001
[14:14:34] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:14:34] [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/}
[14:14:34] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:14:34] [SERVER] Stopped reconnect polling
[14:14:34] [WS] URLSession invalidated successfully
[14:14:34] Will request stop of video 0
[14:14:34] Will request stop of video 0
[14:14:34] [PIP] Removing 0 tracks from PiP for connection 0
[14:14:34] [PIP] ✅ All tracks removed for connection 0
[14:14:34] [PIP] Removing 0 tracks from PiP for connection 0
[14:14:34] [PIP] ✅ All tracks removed for connection 0
[14:15:05] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:05] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:05] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:15:05] [PUSH] Notification tapped - session_id: ILUIWU
[14:15:05] [PUSH] Max message_id before tap: 18832
[14:15:05] [PUSH] Stored pending session: ILUIWU
[14:15:05] [PUSH_EMBED] 📩 Received embedded message: id=18833, type=0, sender=Esra
[14:15:05] [PUSH_EMBED] ✅ Saved message 18833 to local DB (sync)
[14:15:05] [PUSH_EMBED] Inserted message 18833 into existing cache (now 60 messages)
[14:15:05] [PUSH_EMBED] Fetching evolution data for message 18833 in background
[14:15:05] [PUSH_EMBED] ✅ Fully processed message 18833
[14:15:05] [PUSH] Embedded message handled instantly on tap
[14:15:05] [SECURITY] Timeout check: elapsed=31.085562229156494s, timeout=300.0s
[14:15:05] [PUSH] Fetching server messages since_id=18832 to catch coalesced notifications on tap
[14:15:05] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:15:05] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18832 to catch coalesced notifications
[14:15:05] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:15:05] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:15:05] [LIFECYCLE] App entering foreground - restoring connections
[14:15:05] [UPLOAD_RETRY] No pending uploads to retry
[14:15:05] [LIFECYCLE] Merged 910 reactions from local DB
[14:15:05] [LIFECYCLE] WebRTC audio re-enabled
[14:15:05] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:15:05] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:15:05] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:15:05] [VIEWER] Reconnecting after background - querying agents
[14:15:05] [UNSENT_RETRY] Checking for unsent messages...
[14:15:05] [PENDING_UPLOAD] Total pending upload messages: 0
[14:15:05] [UNSENT_RETRY] No unsent messages found
[14:15:05] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:15:05] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:15:05] [PUSH_UI] Inserted message 18833 into UI (now 61 messages)
[14:15:05] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:15:05] [PUSH_EMBED] Got evolution data for message 18833, saving to local DB
[14:15:05] [PUSH_EMBED] Saved evolution data for message 18833
[14:15:05] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[14:15:05] [PRELOAD_CACHE] Preserving 59 push-inserted messages: [18832, 18831, 18830, 18829, 18828, 18827, 18826, 18825, 18824, 18823, 18822, 18821, 18820, 18819, 18818, 18817, 18816, 18815, 18814, 18813, 18812, 18811, 18810, 18809, 18808, 18807, 18806, 18805, 18804, 18803, 18802, 18801, 18800, 18799, 18798, 18797, 18796, 18795, 18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:15:05] [PUSH_PRELOAD] ⚡ Pre-cached 60 messages for instant display (preserved 59 from push)
[14:15:05] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:15:05] [PUSH] Server fetch on tap completed (success=true)
[14:15:05] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18833, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-23 13:14:57";
"file_name" = "";
message = "But it means taht being a king of nothing \Ud83e\Udd23 and this also good if you can manage";
"message_id" = 18833;
"message_type" = 0;
"prev_session_message_id" = 18832;
"replied_message" = "The IT OPS Manager until last year was more sexy. But now with vision it will quickly become a 1 man show. Delivery more visible.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18826;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[14:15:05] [PUSH_EMBED_VC] Message 18833 already in memory - skipping
[14:15:05] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:15:05] [PUSH] Parsed message_id: 18833
[14:15:05] [PUSH] Parsed operation_type: 0
[14:15:05] [PUSH] Taking direct action: opType=0, messageId=18833
[14:15:05] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18833
[14:15:05] [PUSH] ⚡ Message 18833 already in memory - skipping duplicate notification entirely
[14:15:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18833, 18773, 18774, 18775, 18776]
[14:15:05] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18832 → 18833
[14:15:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:06] HELLO → sent (cached token, role=query)
[14:15:06] [CLIENT_SIG] WebSocket opened
[14:15:06] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:15:06] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:06] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:06] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:06] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:06] [CLEANUP] ========================================
[14:15:06] [CLEANUP] Cleaning up all agent connections and views
[14:15:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:06] [CLEANUP] Stopped and removed 0 video connections
[14:15:06] [CLEANUP] Removed 0 video views
[14:15:06] [CLEANUP] Removed 0 feed scroll views
[14:15:06] [CLEANUP] Removed 0 status labels
[14:15:06] [CLEANUP] Reset agent query state
[14:15:06] [CLEANUP] Updated page indicator
[14:15:06] [CLEANUP] Rebuilt video layout
[14:15:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:06] [CLEANUP] ========================================
[14:15:06] [SERVER] Starting reconnect polling (5s interval)
[14:15:06] [CLEANUP] ========================================
[14:15:06] [CLEANUP] Cleaning up all agent connections and views
[14:15:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:06] [CLEANUP] Stopped and removed 0 video connections
[14:15:06] [CLEANUP] Removed 0 video views
[14:15:06] [CLEANUP] Removed 0 feed scroll views
[14:15:06] [CLEANUP] Removed 0 status labels
[14:15:06] [CLEANUP] Reset agent query state
[14:15:06] [CLEANUP] Updated page indicator
[14:15:06] [CLEANUP] Rebuilt video layout
[14:15:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:06] [CLEANUP] ========================================
[14:15:06] [SERVER] Starting reconnect polling (5s interval)
[14:15:06] [CLIENT_SIG] Connected! clientId=lHTXvSrvbAZJFaFU
[14:15:06] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:15:06] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:15:06] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:15:06] [SECURITY] Within timeout - cleared background flag
[14:15:06] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:15:06] [PUSH] handlePollEventsNotification userInfo: [:]
[14:15:06] [PUSH] No message_id in userInfo
[14:15:06] [PUSH] No operation_type in userInfo
[14:15:06] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:15:06] [FAST_REFRESH] Already have 61 messages - skipping local DB load
[14:15:06] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:15:06] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:15:06] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=61
[14:15:06] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18833
[14:15:06] [INCREMENTAL_SYNC] ✅ No new messages
[14:15:06] [FAST_REFRESH] Incremental sync complete - 61 messages
[14:15:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18833, 18773, 18774, 18775, 18776]
[14:15:06] [COMBINED_FETCH] Loaded 7599 read receipts, 916 messages with reactions
[14:15:06] [FOREGROUND] Enriched 1 messages with readBy data from server
[14:15:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18833, 18773, 18774, 18775, 18776]
[14:15:07] [COMBINED_FETCH] Loaded 7599 read receipts, 916 messages with reactions
[14:15:07] [FAST_REFRESH] Enriched 61 messages with readBy data
[14:15:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18833, 18773, 18774, 18775, 18776]
[14:15:07] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:07] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:07] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:07] HELLO → sent (cached token, role=query)
[14:15:07] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:07] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:07] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:07] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:07] [CLEANUP] ========================================
[14:15:07] [CLEANUP] Cleaning up all agent connections and views
[14:15:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:07] [CLEANUP] Stopped and removed 0 video connections
[14:15:07] [CLEANUP] Removed 0 video views
[14:15:07] [CLEANUP] Removed 0 feed scroll views
[14:15:07] [CLEANUP] Removed 0 status labels
[14:15:07] [CLEANUP] Reset agent query state
[14:15:07] [CLEANUP] Updated page indicator
[14:15:07] [CLEANUP] Rebuilt video layout
[14:15:07] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:07] [CLEANUP] ========================================
[14:15:07] [SERVER] Starting reconnect polling (5s interval)
[14:15:07] [CLEANUP] ========================================
[14:15:07] [CLEANUP] Cleaning up all agent connections and views
[14:15:07] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:07] [CLEANUP] Stopped and removed 0 video connections
[14:15:07] [CLEANUP] Removed 0 video views
[14:15:07] [CLEANUP] Removed 0 feed scroll views
[14:15:07] [CLEANUP] Removed 0 status labels
[14:15:07] [CLEANUP] Reset agent query state
[14:15:07] [CLEANUP] Updated page indicator
[14:15:07] [CLEANUP] Rebuilt video layout
[14:15:07] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:07] [CLEANUP] ========================================
[14:15:07] [SERVER] Starting reconnect polling (5s interval)
[14:15:07] [PUSH] Silent push received
[14:15:07] [PUSH_EMBED] 📩 Received embedded message: id=18833, type=0, sender=Esra
[14:15:07] [PUSH_EMBED] ✅ Saved message 18833 to local DB (sync)
[14:15:07] [PUSH_EMBED] Fetching evolution data for message 18833 in background
[14:15:07] [PUSH_EMBED] ✅ Fully processed message 18833
[14:15:07] [PUSH] Embedded message handled instantly from silent push
[14:15:07] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:15:07] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:15:07] [PUSH_UI] Message 18833 already in memory - skipping insert
[14:15:07] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, 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-01-23 13:14:57";
"file_name" = "";
message = "But it means taht being a king of nothing \Ud83e\Udd23 and this also good if you can manage";
"message_id" = 18833;
"message_type" = 0;
"prev_session_message_id" = 18832;
"replied_message" = "The IT OPS Manager until last year was more sexy. But now with vision it will quickly become a 1 man show. Delivery more visible.";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18826;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18833]
[14:15:07] [PUSH_EMBED_VC] Message 18833 already in memory - skipping
[14:15:07] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:15:07] [PUSH] Parsed message_id: 18833
[14:15:07] [PUSH] Parsed operation_type: 0
[14:15:07] [PUSH] Taking direct action: opType=0, messageId=18833
[14:15:07] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18833
[14:15:07] [PUSH] ⚡ Message 18833 already in memory - skipping duplicate notification entirely
[14:15:08] [PUSH_EMBED] Got evolution data for message 18833, saving to local DB
[14:15:08] [PUSH_EMBED] Saved evolution data for message 18833
[14:15:08] [PUSH] Silent push received
[14:15:08] [PUSH_EMBED] No embedded message_data in notification
[14:15:08] [PUSH] No embedded data, pre-loading messages from server
[14:15:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:15:08] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:15:08] [PRELOAD_CACHE] Preserving 10 push-inserted messages: [18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:15:08] [PUSH_PRELOAD] ⚡ Pre-cached 60 messages for instant display (preserved 10 from push)
[14:15:08] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:15:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18833]
[14:15:08] [PUSH] Parsed message_id: 18833
[14:15:08] [PUSH] Parsed operation_type: 3
[14:15:08] [PUSH] Taking direct action: opType=3, messageId=18833
[14:15:08] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18833
[14:15:08] [CLIENT_SIG] Event received: type=3 messageId=18833
[14:15:08] [WS_EVENT] Received event: type=3, messageId=18833
[14:15:08] [WS_EVENT] Read receipt for message 18833 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:15:09] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:09] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:09] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:09] HELLO → sent (cached token, role=query)
[14:15:09] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:09] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:09] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:09] [CLEANUP] ========================================
[14:15:09] [CLEANUP] Cleaning up all agent connections and views
[14:15:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:09] [CLEANUP] Stopped and removed 0 video connections
[14:15:09] [CLEANUP] Removed 0 video views
[14:15:09] [CLEANUP] Removed 0 feed scroll views
[14:15:09] [CLEANUP] Removed 0 status labels
[14:15:09] [CLEANUP] Reset agent query state
[14:15:09] [CLEANUP] Updated page indicator
[14:15:09] [CLEANUP] Rebuilt video layout
[14:15:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:09] [CLEANUP] ========================================
[14:15:09] [SERVER] Starting reconnect polling (5s interval)
[14:15:09] [CLEANUP] ========================================
[14:15:09] [CLEANUP] Cleaning up all agent connections and views
[14:15:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:09] [CLEANUP] Stopped and removed 0 video connections
[14:15:09] [CLEANUP] Removed 0 video views
[14:15:09] [CLEANUP] Removed 0 feed scroll views
[14:15:09] [CLEANUP] Removed 0 status labels
[14:15:09] [CLEANUP] Reset agent query state
[14:15:09] [CLEANUP] Updated page indicator
[14:15:09] [CLEANUP] Rebuilt video layout
[14:15:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:09] [CLEANUP] ========================================
[14:15:09] [SERVER] Starting reconnect polling (5s interval)
[14:15:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:11] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:11] HELLO → sent (cached token, role=query)
[14:15:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:11] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:11] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:11] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:11] [CLEANUP] ========================================
[14:15:11] [CLEANUP] Cleaning up all agent connections and views
[14:15:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:11] [CLEANUP] Stopped and removed 0 video connections
[14:15:11] [CLEANUP] Removed 0 video views
[14:15:11] [CLEANUP] Removed 0 feed scroll views
[14:15:11] [CLEANUP] Removed 0 status labels
[14:15:11] [CLEANUP] Reset agent query state
[14:15:11] [CLEANUP] Updated page indicator
[14:15:11] [CLEANUP] Rebuilt video layout
[14:15:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:11] [CLEANUP] ========================================
[14:15:11] [SERVER] Starting reconnect polling (5s interval)
[14:15:11] [CLEANUP] ========================================
[14:15:11] [CLEANUP] Cleaning up all agent connections and views
[14:15:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:11] [CLEANUP] Stopped and removed 0 video connections
[14:15:11] [CLEANUP] Removed 0 video views
[14:15:11] [CLEANUP] Removed 0 feed scroll views
[14:15:11] [CLEANUP] Removed 0 status labels
[14:15:11] [CLEANUP] Reset agent query state
[14:15:11] [CLEANUP] Updated page indicator
[14:15:11] [CLEANUP] Rebuilt video layout
[14:15:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:11] [CLEANUP] ========================================
[14:15:11] [SERVER] Starting reconnect polling (5s interval)
[14:15:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:13] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:13] HELLO → sent (cached token, role=query)
[14:15:13] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:13] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:13] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:13] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:13] [CLEANUP] ========================================
[14:15:13] [CLEANUP] Cleaning up all agent connections and views
[14:15:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:13] [CLEANUP] Stopped and removed 0 video connections
[14:15:13] [CLEANUP] Removed 0 video views
[14:15:13] [CLEANUP] Removed 0 feed scroll views
[14:15:13] [CLEANUP] Removed 0 status labels
[14:15:13] [CLEANUP] Reset agent query state
[14:15:13] [CLEANUP] Updated page indicator
[14:15:13] [CLEANUP] Rebuilt video layout
[14:15:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:13] [CLEANUP] ========================================
[14:15:13] [SERVER] Starting reconnect polling (5s interval)
[14:15:13] [CLEANUP] ========================================
[14:15:13] [CLEANUP] Cleaning up all agent connections and views
[14:15:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:13] [CLEANUP] Stopped and removed 0 video connections
[14:15:13] [CLEANUP] Removed 0 video views
[14:15:13] [CLEANUP] Removed 0 feed scroll views
[14:15:13] [CLEANUP] Removed 0 status labels
[14:15:13] [CLEANUP] Reset agent query state
[14:15:13] [CLEANUP] Updated page indicator
[14:15:13] [CLEANUP] Rebuilt video layout
[14:15:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:13] [CLEANUP] ========================================
[14:15:13] [SERVER] Starting reconnect polling (5s interval)
[14:15:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:15] HELLO → sent (cached token, role=query)
[14:15:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:15] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:15] [CLEANUP] ========================================
[14:15:15] [CLEANUP] Cleaning up all agent connections and views
[14:15:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:15] [CLEANUP] Stopped and removed 0 video connections
[14:15:15] [CLEANUP] Removed 0 video views
[14:15:15] [CLEANUP] Removed 0 feed scroll views
[14:15:15] [CLEANUP] Removed 0 status labels
[14:15:15] [CLEANUP] Reset agent query state
[14:15:15] [CLEANUP] Updated page indicator
[14:15:15] [CLEANUP] Rebuilt video layout
[14:15:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:15] [CLEANUP] ========================================
[14:15:15] [SERVER] Starting reconnect polling (5s interval)
[14:15:15] [CLEANUP] ========================================
[14:15:15] [CLEANUP] Cleaning up all agent connections and views
[14:15:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:15] [CLEANUP] Stopped and removed 0 video connections
[14:15:15] [CLEANUP] Removed 0 video views
[14:15:15] [CLEANUP] Removed 0 feed scroll views
[14:15:15] [CLEANUP] Removed 0 status labels
[14:15:15] [CLEANUP] Reset agent query state
[14:15:15] [CLEANUP] Updated page indicator
[14:15:15] [CLEANUP] Rebuilt video layout
[14:15:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:15] [CLEANUP] ========================================
[14:15:15] [SERVER] Starting reconnect polling (5s interval)
[14:15:16] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:16] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:17] HELLO → sent (cached token, role=query)
[14:15:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:17] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:17] [CLEANUP] ========================================
[14:15:17] [CLEANUP] Cleaning up all agent connections and views
[14:15:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:17] [CLEANUP] Stopped and removed 0 video connections
[14:15:17] [CLEANUP] Removed 0 video views
[14:15:17] [CLEANUP] Removed 0 feed scroll views
[14:15:17] [CLEANUP] Removed 0 status labels
[14:15:17] [CLEANUP] Reset agent query state
[14:15:17] [CLEANUP] Updated page indicator
[14:15:17] [CLEANUP] Rebuilt video layout
[14:15:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:17] [CLEANUP] ========================================
[14:15:17] [SERVER] Starting reconnect polling (5s interval)
[14:15:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:17] [CLEANUP] ========================================
[14:15:17] [CLEANUP] Cleaning up all agent connections and views
[14:15:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:17] [CLEANUP] Stopped and removed 0 video connections
[14:15:17] [CLEANUP] Removed 0 video views
[14:15:17] [CLEANUP] Removed 0 feed scroll views
[14:15:17] [CLEANUP] Removed 0 status labels
[14:15:17] [CLEANUP] Reset agent query state
[14:15:17] [CLEANUP] Updated page indicator
[14:15:17] [CLEANUP] Rebuilt video layout
[14:15:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:17] [CLEANUP] ========================================
[14:15:17] [SERVER] Starting reconnect polling (5s interval)
[14:15:18] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:18] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:18] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:18] HELLO → sent (cached token, role=query)
[14:15:18] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:18] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:18] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:18] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:18] [CLEANUP] ========================================
[14:15:18] [CLEANUP] Cleaning up all agent connections and views
[14:15:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:18] [CLEANUP] Stopped and removed 0 video connections
[14:15:18] [CLEANUP] Removed 0 video views
[14:15:18] [CLEANUP] Removed 0 feed scroll views
[14:15:18] [CLEANUP] Removed 0 status labels
[14:15:18] [CLEANUP] Reset agent query state
[14:15:18] [CLEANUP] Updated page indicator
[14:15:18] [CLEANUP] Rebuilt video layout
[14:15:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:18] [CLEANUP] ========================================
[14:15:18] [SERVER] Starting reconnect polling (5s interval)
[14:15:18] [CLEANUP] ========================================
[14:15:18] [CLEANUP] Cleaning up all agent connections and views
[14:15:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:18] [CLEANUP] Stopped and removed 0 video connections
[14:15:18] [CLEANUP] Removed 0 video views
[14:15:18] [CLEANUP] Removed 0 feed scroll views
[14:15:18] [CLEANUP] Removed 0 status labels
[14:15:18] [CLEANUP] Reset agent query state
[14:15:18] [CLEANUP] Updated page indicator
[14:15:18] [CLEANUP] Rebuilt video layout
[14:15:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:18] [CLEANUP] ========================================
[14:15:18] [SERVER] Starting reconnect polling (5s interval)
[14:15:20] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:20] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:20] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:20] HELLO → sent (cached token, role=query)
[14:15:20] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:20] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:20] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:20] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:20] [CLEANUP] ========================================
[14:15:20] [CLEANUP] Cleaning up all agent connections and views
[14:15:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:20] [CLEANUP] Stopped and removed 0 video connections
[14:15:20] [CLEANUP] Removed 0 video views
[14:15:20] [CLEANUP] Removed 0 feed scroll views
[14:15:20] [CLEANUP] Removed 0 status labels
[14:15:20] [CLEANUP] Reset agent query state
[14:15:20] [CLEANUP] Updated page indicator
[14:15:20] [CLEANUP] Rebuilt video layout
[14:15:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:20] [CLEANUP] ========================================
[14:15:20] [SERVER] Starting reconnect polling (5s interval)
[14:15:20] [CLEANUP] ========================================
[14:15:20] [CLEANUP] Cleaning up all agent connections and views
[14:15:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:20] [CLEANUP] Stopped and removed 0 video connections
[14:15:20] [CLEANUP] Removed 0 video views
[14:15:20] [CLEANUP] Removed 0 feed scroll views
[14:15:20] [CLEANUP] Removed 0 status labels
[14:15:20] [CLEANUP] Reset agent query state
[14:15:20] [CLEANUP] Updated page indicator
[14:15:20] [CLEANUP] Rebuilt video layout
[14:15:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:20] [CLEANUP] ========================================
[14:15:20] [SERVER] Starting reconnect polling (5s interval)
[14:15:22] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:22] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:22] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:22] HELLO → sent (cached token, role=query)
[14:15:22] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:22] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:22] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:22] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:22] [CLEANUP] ========================================
[14:15:22] [CLEANUP] Cleaning up all agent connections and views
[14:15:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:22] [CLEANUP] Stopped and removed 0 video connections
[14:15:22] [CLEANUP] Removed 0 video views
[14:15:22] [CLEANUP] Removed 0 feed scroll views
[14:15:22] [CLEANUP] Removed 0 status labels
[14:15:22] [CLEANUP] Reset agent query state
[14:15:22] [CLEANUP] Updated page indicator
[14:15:22] [CLEANUP] Rebuilt video layout
[14:15:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:22] [CLEANUP] ========================================
[14:15:22] [SERVER] Starting reconnect polling (5s interval)
[14:15:22] [CLEANUP] ========================================
[14:15:22] [CLEANUP] Cleaning up all agent connections and views
[14:15:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:22] [CLEANUP] Stopped and removed 0 video connections
[14:15:22] [CLEANUP] Removed 0 video views
[14:15:22] [CLEANUP] Removed 0 feed scroll views
[14:15:22] [CLEANUP] Removed 0 status labels
[14:15:22] [CLEANUP] Reset agent query state
[14:15:22] [CLEANUP] Updated page indicator
[14:15:22] [CLEANUP] Rebuilt video layout
[14:15:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:22] [CLEANUP] ========================================
[14:15:22] [SERVER] Starting reconnect polling (5s interval)
[14:15:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:24] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:24] HELLO → sent (cached token, role=query)
[14:15:24] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:24] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:24] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:24] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:24] [CLEANUP] ========================================
[14:15:24] [CLEANUP] Cleaning up all agent connections and views
[14:15:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:24] [CLEANUP] Stopped and removed 0 video connections
[14:15:24] [CLEANUP] Removed 0 video views
[14:15:24] [CLEANUP] Removed 0 feed scroll views
[14:15:24] [CLEANUP] Removed 0 status labels
[14:15:24] [CLEANUP] Reset agent query state
[14:15:24] [CLEANUP] Updated page indicator
[14:15:24] [CLEANUP] Rebuilt video layout
[14:15:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:24] [CLEANUP] ========================================
[14:15:24] [SERVER] Starting reconnect polling (5s interval)
[14:15:24] [CLEANUP] ========================================
[14:15:24] [CLEANUP] Cleaning up all agent connections and views
[14:15:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:24] [CLEANUP] Stopped and removed 0 video connections
[14:15:24] [CLEANUP] Removed 0 video views
[14:15:24] [CLEANUP] Removed 0 feed scroll views
[14:15:24] [CLEANUP] Removed 0 status labels
[14:15:24] [CLEANUP] Reset agent query state
[14:15:24] [CLEANUP] Updated page indicator
[14:15:24] [CLEANUP] Rebuilt video layout
[14:15:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:24] [CLEANUP] ========================================
[14:15:24] [SERVER] Starting reconnect polling (5s interval)
[14:15:26] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:15:26] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=61, isReloading=false
[14:15:26] [SEND_MESSAGE] ✅ Added optimistic message id=-9 to arrays, newMsgCount=62
[14:15:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[-9, 18833, 18832, 18831, 18830]
[14:15:26] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:15:26] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:15:26] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:26] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:26] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:26] HELLO → sent (cached token, role=query)
[14:15:26] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:15:26] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:26] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:15:26] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:15:26] [CLEANUP] ========================================
[14:15:26] [CLEANUP] Cleaning up all agent connections and views
[14:15:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:26] [CLEANUP] Stopped and removed 0 video connections
[14:15:26] [CLEANUP] Removed 0 video views
[14:15:26] [CLEANUP] Removed 0 feed scroll views
[14:15:26] [CLEANUP] Removed 0 status labels
[14:15:26] [CLEANUP] Reset agent query state
[14:15:26] [CLEANUP] Updated page indicator
[14:15:26] [CLEANUP] Rebuilt video layout
[14:15:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:26] [CLEANUP] ========================================
[14:15:26] [SERVER] Starting reconnect polling (5s interval)
[14:15:26] [CLEANUP] ========================================
[14:15:26] [CLEANUP] Cleaning up all agent connections and views
[14:15:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:26] [CLEANUP] Stopped and removed 0 video connections
[14:15:26] [CLEANUP] Removed 0 video views
[14:15:26] [CLEANUP] Removed 0 feed scroll views
[14:15:26] [CLEANUP] Removed 0 status labels
[14:15:26] [CLEANUP] Reset agent query state
[14:15:26] [CLEANUP] Updated page indicator
[14:15:26] [CLEANUP] Rebuilt video layout
[14:15:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:26] [CLEANUP] ========================================
[14:15:26] [SERVER] Starting reconnect polling (5s interval)
[14:15:27] [LIFECYCLE] App resigning active - cleared crash flag
[14:15:27] [CLIENT_SIG] Event received: type=0 messageId=18834
[14:15:27] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18834,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:15:26"}
[14:15:27] [WS_EVENT] Received event: type=0, messageId=18834
[14:15:27] [CHAT] receive_message.php JSON: ["ok": 1, "datesent_utc": 2026-01-23 13:15:26, "file_name": , "session_id": ILUIWU, "message_id": 18834, "message_type": 0]
[14:15:27] [WS_EVENT] 📨 New message notification (msgId=18834) - triggering incremental refresh, currentMsgCount=62
[14:15:27] [DB_UPGRADE] Upgrading message ID: -9 → 18834, preserveOriginalDate=false
[14:15:27] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=62
[14:15:27] [DB_UPGRADE] ✅ Upgraded -9 → 18834 with send_status=0, 1 row(s) affected
[14:15:27] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18834
[14:15:27] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -9 → 18834
[14:15:27] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -9 → 18834
[14:15:27] ReloadData 9
[14:15:27] [INCREMENTAL_SYNC] ✅ No new messages
[14:15:27] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=62
[14:15:27] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:15:27] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:15:28] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:15:28] [SECURITY] Saved background timestamp
[14:15:28] [LIFECYCLE] App entering background - cleared crash flag
[14:15:28] [CLIENT_SIG] Disconnecting
[14:15:28] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:15:28] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[14:15:28] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:15:28] In cleanupPeer
[14:15:28] In cleanupPeer
[14:15:28] [LIFECYCLE] WebRTC audio disabled
[14:15:28] [LIFECYCLE] AVAudioSession deactivated
[14:15:28] [LIFECYCLE] All connections stopped
[14:15:28] [CLIENT_SIG] WebSocket closed with code 1001
[14:15:28] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:15:28] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[14:15:28] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:15:28] [SERVER] Stopped reconnect polling
[14:15:28] Will request stop of video 0
[14:15:28] Will request stop of video 0
[14:15:28] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[14:15:28] [WS] Query connection error - cleaning up all agent connections and views
[14:15:28] [WS] Connection failed: cancelled
[14:15:28] [WS] Query connection failed - cleaning up all agent connections and views
[14:15:28] [PIP] Removing 0 tracks from PiP for connection 0
[14:15:28] [PIP] ✅ All tracks removed for connection 0
[14:15:28] [PIP] Removing 0 tracks from PiP for connection 0
[14:15:28] [PIP] ✅ All tracks removed for connection 0
[14:15:28] [CLEANUP] ========================================
[14:15:28] [CLEANUP] Cleaning up all agent connections and views
[14:15:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:28] [CLEANUP] Stopped and removed 0 video connections
[14:15:28] [CLEANUP] Removed 0 video views
[14:15:28] [CLEANUP] Removed 0 feed scroll views
[14:15:28] [CLEANUP] Removed 0 status labels
[14:15:28] [CLEANUP] Reset agent query state
[14:15:28] [CLEANUP] Updated page indicator
[14:15:28] [CLEANUP] Rebuilt video layout
[14:15:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:28] [CLEANUP] ========================================
[14:15:28] [SERVER] Skipping reconnect polling - app is in background
[14:15:28] [WS] URLSession invalidated successfully
[14:15:28] [CLEANUP] ========================================
[14:15:28] [CLEANUP] Cleaning up all agent connections and views
[14:15:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:15:28] [CLEANUP] Stopped and removed 0 video connections
[14:15:28] [CLEANUP] Removed 0 video views
[14:15:28] [CLEANUP] Removed 0 feed scroll views
[14:15:28] [CLEANUP] Removed 0 status labels
[14:15:28] [CLEANUP] Reset agent query state
[14:15:28] [CLEANUP] Updated page indicator
[14:15:28] [CLEANUP] Rebuilt video layout
[14:15:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:15:28] [CLEANUP] ========================================
[14:15:28] [SERVER] Skipping reconnect polling - app is in background
[14:18:04] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:04] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:04] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:04] [SECURITY] Timeout check: elapsed=156.0590968132019s, timeout=300.0s
[14:18:04] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:18:04] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:04] [LIFECYCLE] App entering foreground - restoring connections
[14:18:04] [LIFECYCLE] Away > 2 minutes (156s) - will scroll to bottom
[14:18:04] [UPLOAD_RETRY] No pending uploads to retry
[14:18:04] [LIFECYCLE] Merged 910 reactions from local DB
[14:18:04] [LIFECYCLE] WebRTC audio re-enabled
[14:18:04] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:18:04] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:18:04] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:04] [VIEWER] Reconnecting after background - querying agents
[14:18:04] [UNSENT_RETRY] Checking for unsent messages...
[14:18:04] [PENDING_UPLOAD] Total pending upload messages: 0
[14:18:04] [UNSENT_RETRY] No unsent messages found
[14:18:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[18834, 18833, 18832, 18831, 18830]
[14:18:04] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:18:04] [SECURITY] Within timeout - cleared background flag
[14:18:04] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:18:04] [PUSH] handlePollEventsNotification userInfo: [:]
[14:18:04] [PUSH] No message_id in userInfo
[14:18:04] [PUSH] No operation_type in userInfo
[14:18:04] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:18:04] [FAST_REFRESH] Already have 62 messages - skipping local DB load
[14:18:04] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:18:04] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:18:04] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=62
[14:18:04] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18834
[14:18:04] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:04] HELLO → sent (cached token, role=query)
[14:18:04] [CLIENT_SIG] WebSocket opened
[14:18:04] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:18:04] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:04] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:04] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:04] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:04] [CLEANUP] ========================================
[14:18:04] [CLEANUP] Cleaning up all agent connections and views
[14:18:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:04] [CLEANUP] Stopped and removed 0 video connections
[14:18:04] [CLEANUP] Removed 0 video views
[14:18:04] [CLEANUP] Removed 0 feed scroll views
[14:18:04] [CLEANUP] Removed 0 status labels
[14:18:04] [CLEANUP] Reset agent query state
[14:18:04] [CLEANUP] Updated page indicator
[14:18:04] [CLEANUP] Rebuilt video layout
[14:18:04] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:04] [CLEANUP] ========================================
[14:18:04] [SERVER] Starting reconnect polling (5s interval)
[14:18:04] [CLEANUP] ========================================
[14:18:04] [CLEANUP] Cleaning up all agent connections and views
[14:18:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:04] [CLEANUP] Stopped and removed 0 video connections
[14:18:04] [CLEANUP] Removed 0 video views
[14:18:04] [CLEANUP] Removed 0 feed scroll views
[14:18:04] [CLEANUP] Removed 0 status labels
[14:18:04] [CLEANUP] Reset agent query state
[14:18:04] [CLEANUP] Updated page indicator
[14:18:04] [CLEANUP] Rebuilt video layout
[14:18:04] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:04] [CLEANUP] ========================================
[14:18:04] [SERVER] Starting reconnect polling (5s interval)
[14:18:04] [CLIENT_SIG] Connected! clientId=AR7Rre4G4ZHMgyfu
[14:18:04] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:18:04] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:04] [INCREMENTAL_SYNC] ✅ No new messages
[14:18:04] [FAST_REFRESH] Incremental sync complete - 62 messages
[14:18:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[18834, 18833, 18832, 18831, 18830]
[14:18:04] [COMBINED_FETCH] Loaded 7600 read receipts, 916 messages with reactions
[14:18:04] [FOREGROUND] Enriched 0 messages with readBy data from server
[14:18:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[18834, 18833, 18832, 18831, 18830]
[14:18:05] [COMBINED_FETCH] Loaded 7600 read receipts, 916 messages with reactions
[14:18:05] [FAST_REFRESH] Enriched 62 messages with readBy data
[14:18:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[18834, 18833, 18832, 18831, 18830]
[14:18:05] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:05] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:06] HELLO → sent (cached token, role=query)
[14:18:06] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:06] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:06] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:06] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:06] [CLEANUP] ========================================
[14:18:06] [CLEANUP] Cleaning up all agent connections and views
[14:18:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:06] [CLEANUP] Stopped and removed 0 video connections
[14:18:06] [CLEANUP] Removed 0 video views
[14:18:06] [CLEANUP] Removed 0 feed scroll views
[14:18:06] [CLEANUP] Removed 0 status labels
[14:18:06] [CLEANUP] Reset agent query state
[14:18:06] [CLEANUP] Updated page indicator
[14:18:06] [CLEANUP] Rebuilt video layout
[14:18:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:06] [CLEANUP] ========================================
[14:18:06] [SERVER] Starting reconnect polling (5s interval)
[14:18:06] [CLEANUP] ========================================
[14:18:06] [CLEANUP] Cleaning up all agent connections and views
[14:18:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:06] [CLEANUP] Stopped and removed 0 video connections
[14:18:06] [CLEANUP] Removed 0 video views
[14:18:06] [CLEANUP] Removed 0 feed scroll views
[14:18:06] [CLEANUP] Removed 0 status labels
[14:18:06] [CLEANUP] Reset agent query state
[14:18:06] [CLEANUP] Updated page indicator
[14:18:06] [CLEANUP] Rebuilt video layout
[14:18:06] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:06] [CLEANUP] ========================================
[14:18:06] [SERVER] Starting reconnect polling (5s interval)
[14:18:07] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:07] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:08] HELLO → sent (cached token, role=query)
[14:18:08] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:08] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:08] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:08] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:08] [CLEANUP] ========================================
[14:18:08] [CLEANUP] Cleaning up all agent connections and views
[14:18:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:08] [CLEANUP] Stopped and removed 0 video connections
[14:18:08] [CLEANUP] Removed 0 video views
[14:18:08] [CLEANUP] Removed 0 feed scroll views
[14:18:08] [CLEANUP] Removed 0 status labels
[14:18:08] [CLEANUP] Reset agent query state
[14:18:08] [CLEANUP] Updated page indicator
[14:18:08] [CLEANUP] Rebuilt video layout
[14:18:08] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:08] [CLEANUP] ========================================
[14:18:08] [SERVER] Starting reconnect polling (5s interval)
[14:18:08] [CLEANUP] ========================================
[14:18:08] [CLEANUP] Cleaning up all agent connections and views
[14:18:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:08] [CLEANUP] Stopped and removed 0 video connections
[14:18:08] [CLEANUP] Removed 0 video views
[14:18:08] [CLEANUP] Removed 0 feed scroll views
[14:18:08] [CLEANUP] Removed 0 status labels
[14:18:08] [CLEANUP] Reset agent query state
[14:18:08] [CLEANUP] Updated page indicator
[14:18:08] [CLEANUP] Rebuilt video layout
[14:18:08] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:08] [CLEANUP] ========================================
[14:18:08] [SERVER] Starting reconnect polling (5s interval)
[14:18:09] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:09] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:09] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:09] HELLO → sent (cached token, role=query)
[14:18:09] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:09] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:09] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:09] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:09] [CLEANUP] ========================================
[14:18:09] [CLEANUP] Cleaning up all agent connections and views
[14:18:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:09] [CLEANUP] Stopped and removed 0 video connections
[14:18:09] [CLEANUP] Removed 0 video views
[14:18:09] [CLEANUP] Removed 0 feed scroll views
[14:18:09] [CLEANUP] Removed 0 status labels
[14:18:09] [CLEANUP] Reset agent query state
[14:18:09] [CLEANUP] Updated page indicator
[14:18:09] [CLEANUP] Rebuilt video layout
[14:18:09] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:09] [CLEANUP] ========================================
[14:18:10] [SERVER] Starting reconnect polling (5s interval)
[14:18:10] [CLEANUP] ========================================
[14:18:10] [CLEANUP] Cleaning up all agent connections and views
[14:18:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:10] [CLEANUP] Stopped and removed 0 video connections
[14:18:10] [CLEANUP] Removed 0 video views
[14:18:10] [CLEANUP] Removed 0 feed scroll views
[14:18:10] [CLEANUP] Removed 0 status labels
[14:18:10] [CLEANUP] Reset agent query state
[14:18:10] [CLEANUP] Updated page indicator
[14:18:10] [CLEANUP] Rebuilt video layout
[14:18:10] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:10] [CLEANUP] ========================================
[14:18:10] [SERVER] Starting reconnect polling (5s interval)
[14:18:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:11] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:11] HELLO → sent (cached token, role=query)
[14:18:11] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:11] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:11] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:11] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:11] [CLEANUP] ========================================
[14:18:11] [CLEANUP] Cleaning up all agent connections and views
[14:18:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:11] [CLEANUP] Stopped and removed 0 video connections
[14:18:11] [CLEANUP] Removed 0 video views
[14:18:11] [CLEANUP] Removed 0 feed scroll views
[14:18:11] [CLEANUP] Removed 0 status labels
[14:18:11] [CLEANUP] Reset agent query state
[14:18:11] [CLEANUP] Updated page indicator
[14:18:11] [CLEANUP] Rebuilt video layout
[14:18:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:11] [CLEANUP] ========================================
[14:18:11] [SERVER] Starting reconnect polling (5s interval)
[14:18:11] [CLEANUP] ========================================
[14:18:11] [CLEANUP] Cleaning up all agent connections and views
[14:18:11] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:11] [CLEANUP] Stopped and removed 0 video connections
[14:18:11] [CLEANUP] Removed 0 video views
[14:18:11] [CLEANUP] Removed 0 feed scroll views
[14:18:11] [CLEANUP] Removed 0 status labels
[14:18:11] [CLEANUP] Reset agent query state
[14:18:11] [CLEANUP] Updated page indicator
[14:18:11] [CLEANUP] Rebuilt video layout
[14:18:11] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:11] [CLEANUP] ========================================
[14:18:11] [SERVER] Starting reconnect polling (5s interval)
[14:18:11] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[14:18:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:13] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:13] HELLO → sent (cached token, role=query)
[14:18:13] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:13] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:13] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:13] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:13] [CLEANUP] ========================================
[14:18:13] [CLEANUP] Cleaning up all agent connections and views
[14:18:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:13] [CLEANUP] Stopped and removed 0 video connections
[14:18:13] [CLEANUP] Removed 0 video views
[14:18:13] [CLEANUP] Removed 0 feed scroll views
[14:18:13] [CLEANUP] Removed 0 status labels
[14:18:13] [CLEANUP] Reset agent query state
[14:18:13] [CLEANUP] Updated page indicator
[14:18:13] [CLEANUP] Rebuilt video layout
[14:18:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:13] [CLEANUP] ========================================
[14:18:13] [SERVER] Starting reconnect polling (5s interval)
[14:18:13] [CLEANUP] ========================================
[14:18:13] [CLEANUP] Cleaning up all agent connections and views
[14:18:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:13] [CLEANUP] Stopped and removed 0 video connections
[14:18:13] [CLEANUP] Removed 0 video views
[14:18:13] [CLEANUP] Removed 0 feed scroll views
[14:18:13] [CLEANUP] Removed 0 status labels
[14:18:13] [CLEANUP] Reset agent query state
[14:18:13] [CLEANUP] Updated page indicator
[14:18:13] [CLEANUP] Rebuilt video layout
[14:18:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:13] [CLEANUP] ========================================
[14:18:13] [SERVER] Starting reconnect polling (5s interval)
[14:18:13] [CLIENT_SIG] Event received: type=0 messageId=18835
[14:18:13] [WS_EVENT] Received event: type=0, messageId=18835
[14:18:13] [WS_EVENT] 📨 New message notification (msgId=18835) - triggering incremental refresh, currentMsgCount=62
[14:18:13] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=62
[14:18:13] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18834
[14:18:13] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:18:13 +0000 - type: unknown, operation_type: 0, message_id: 18835, session_id: ILUIWU, state: 0
[14:18:14] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18835;
"message_type" = 0;
"prev_session_message_id" = 18834;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18835, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:18:14] [PUSH] App active - suppressing notification UI, posting internal event
[14:18:14] [PUSH_EMBED] 📩 Received embedded message: id=18835, type=0, sender=Esra
[14:18:14] [PUSH_EMBED] ✅ Saved message 18835 to local DB (sync)
[14:18:14] [PUSH_EMBED] Inserted message 18835 into existing cache (now 61 messages)
[14:18:14] [PUSH_EMBED] Fetching evolution data for message 18835 in background
[14:18:14] [PUSH_EMBED] ✅ Fully processed message 18835
[14:18:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18835;
"message_type" = 0;
"prev_session_message_id" = 18834;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18835, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:18:14] [PUSH_EMBED_VC] Processing embedded message: id=18835, type=0, sender=Esra, prevId=18834
[14:18:14] [PUSH_EMBED_VC] Inserted message 18835 into allMessagesWithReadBy (now 63 messages)
[14:18:14] [PUSH_EMBED_VC] ✅ Previous message 18834 exists in memory
[14:18:14] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:14] [PUSH] Parsed message_id: 18835
[14:18:14] [PUSH] Parsed operation_type: 0
[14:18:14] [PUSH] Taking direct action: opType=0, messageId=18835
[14:18:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18835
[14:18:14] [PUSH] ⚡ Message 18835 already in memory - skipping duplicate notification entirely
[14:18:14] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:14] [PUSH_UI] Message 18835 already in memory - skipping insert
[14:18:14] [PUSH] Silent push received
[14:18:14] [PUSH_EMBED_VC] Saved message 18835 to local DB
[14:18:14] [PUSH_EMBED] 📩 Received embedded message: id=18835, type=0, sender=Esra
[14:18:14] [PUSH_EMBED] ✅ Saved message 18835 to local DB (sync)
[14:18:14] [PUSH_EMBED] Fetching evolution data for message 18835 in background
[14:18:14] [PUSH_EMBED] ✅ Fully processed message 18835
[14:18:14] [PUSH] Embedded message handled instantly from silent push
[14:18:14] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:14] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:14] [PUSH_UI] Message 18835 already in memory - skipping insert
[14:18:14] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18835, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18835;
"message_type" = 0;
"prev_session_message_id" = 18834;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:18:14] [PUSH_EMBED_VC] Message 18835 already in memory - skipping
[14:18:14] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:14] [PUSH] Parsed message_id: 18835
[14:18:14] [PUSH] Parsed operation_type: 0
[14:18:14] [PUSH] Taking direct action: opType=0, messageId=18835
[14:18:14] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18835
[14:18:14] [PUSH] ⚡ Message 18835 already in memory - skipping duplicate notification entirely
[14:18:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=63, first5Ids=[18835, 18834, 18833, 18832, 18831]
[14:18:14] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18834 → 18835
[14:18:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:15] HELLO → sent (cached token, role=query)
[14:18:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:15] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:15] [CLEANUP] ========================================
[14:18:15] [CLEANUP] Cleaning up all agent connections and views
[14:18:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:15] [CLEANUP] Stopped and removed 0 video connections
[14:18:15] [CLEANUP] Removed 0 video views
[14:18:15] [CLEANUP] Removed 0 feed scroll views
[14:18:15] [CLEANUP] Removed 0 status labels
[14:18:15] [CLEANUP] Reset agent query state
[14:18:15] [CLEANUP] Updated page indicator
[14:18:15] [CLEANUP] Rebuilt video layout
[14:18:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:15] [CLEANUP] ========================================
[14:18:15] [SERVER] Starting reconnect polling (5s interval)
[14:18:15] [CLEANUP] ========================================
[14:18:15] [CLEANUP] Cleaning up all agent connections and views
[14:18:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:15] [CLEANUP] Stopped and removed 0 video connections
[14:18:15] [CLEANUP] Removed 0 video views
[14:18:15] [CLEANUP] Removed 0 feed scroll views
[14:18:15] [CLEANUP] Removed 0 status labels
[14:18:15] [CLEANUP] Reset agent query state
[14:18:15] [CLEANUP] Updated page indicator
[14:18:15] [CLEANUP] Rebuilt video layout
[14:18:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:15] [CLEANUP] ========================================
[14:18:15] [SERVER] Starting reconnect polling (5s interval)
[14:18:15] [CLIENT_SIG] Event received: type=0 messageId=18836
[14:18:15] [WS_EVENT] Received event: type=0, messageId=18836
[14:18:15] [WS_EVENT] 📨 New message notification (msgId=18836) - triggering incremental refresh, currentMsgCount=63
[14:18:15] [INCREMENTAL_SYNC] ⚠️ Already reloading - skipping incremental refresh
[14:18:15] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=63
[14:18:15] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:18:15 +0000 - type: unknown, operation_type: 0, message_id: 18836, session_id: ILUIWU, state: 0
[14:18:15] [PUSH_DEBUG] Full userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18836, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18836;
"message_type" = 0;
"prev_session_message_id" = 18835;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
[14:18:15] [PUSH] App active - suppressing notification UI, posting internal event
[14:18:15] [PUSH_EMBED] 📩 Received embedded message: id=18836, type=0, sender=Esra
[14:18:15] [PUSH_EMBED] ✅ Saved message 18836 to local DB (sync)
[14:18:15] [PUSH_EMBED] Inserted message 18836 into existing cache (now 62 messages)
[14:18:15] [PUSH_EMBED] Fetching evolution data for message 18836 in background
[14:18:15] [PUSH_EMBED] ✅ Fully processed message 18836
[14:18:15] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18836, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18836;
"message_type" = 0;
"prev_session_message_id" = 18835;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
[14:18:15] [PUSH_EMBED_VC] Processing embedded message: id=18836, type=0, sender=Esra, prevId=18835
[14:18:15] [PUSH_EMBED_VC] Inserted message 18836 into allMessagesWithReadBy (now 64 messages)
[14:18:15] [PUSH_EMBED_VC] ✅ Previous message 18835 exists in memory
[14:18:15] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:15] [PUSH] Parsed message_id: 18836
[14:18:15] [PUSH] Parsed operation_type: 0
[14:18:15] [PUSH] Taking direct action: opType=0, messageId=18836
[14:18:15] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18836
[14:18:15] [PUSH] ⚡ Message 18836 already in memory - skipping duplicate notification entirely
[14:18:15] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:15] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:15] [PUSH_UI] Message 18836 already in memory - skipping insert
[14:18:15] [PUSH_EMBED_VC] Saved message 18836 to local DB
[14:18:15] [PUSH] Silent push received
[14:18:15] [PUSH_EMBED] 📩 Received embedded message: id=18836, type=0, sender=Esra
[14:18:15] [PUSH_EMBED] ✅ Saved message 18836 to local DB (sync)
[14:18:15] [PUSH_EMBED] Fetching evolution data for message 18836 in background
[14:18:15] [PUSH_EMBED] ✅ Fully processed message 18836
[14:18:15] [PUSH] Embedded message handled instantly from silent push
[14:18:15] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:15] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:15] [PUSH_UI] Message 18836 already in memory - skipping insert
[14:18:15] [PUSH_EMBED] No evolution data available for message 18835
[14:18:15] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:12";
"file_name" = "";
message = "Mmmm\Ud83e\Udd29\Ud83e\Udd29\Ud83e\Udd29";
"message_id" = 18836;
"message_type" = 0;
"prev_session_message_id" = 18835;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18836, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}]
[14:18:15] [PUSH_EMBED_VC] Message 18836 already in memory - skipping
[14:18:15] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:15] [PUSH] Parsed message_id: 18836
[14:18:15] [PUSH] Parsed operation_type: 0
[14:18:15] [PUSH] Taking direct action: opType=0, messageId=18836
[14:18:15] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18836
[14:18:15] [PUSH] ⚡ Message 18836 already in memory - skipping duplicate notification entirely
[14:18:15] [PUSH_EMBED] No evolution data available for message 18836
[14:18:15] [PUSH_EMBED] No evolution data available for message 18836
[14:18:15] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=64, first5Ids=[18836, 18835, 18834, 18833, 18832]
[14:18:15] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18835 → 18836
[14:18:16] [INCREMENTAL_SYNC] ✅ Found 2 new messages
[14:18:16] [PUSH_EMBED] No evolution data available for message 18835
[14:18:16] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=2
[14:18:16] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=64
[14:18:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=64, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:17] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:17] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:17] HELLO → sent (cached token, role=query)
[14:18:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:17] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:17] [CLEANUP] ========================================
[14:18:17] [CLEANUP] Cleaning up all agent connections and views
[14:18:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:17] [CLEANUP] Stopped and removed 0 video connections
[14:18:17] [CLEANUP] Removed 0 video views
[14:18:17] [CLEANUP] Removed 0 feed scroll views
[14:18:17] [CLEANUP] Removed 0 status labels
[14:18:17] [CLEANUP] Reset agent query state
[14:18:17] [CLEANUP] Updated page indicator
[14:18:17] [CLEANUP] Rebuilt video layout
[14:18:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:17] [CLEANUP] ========================================
[14:18:17] [SERVER] Starting reconnect polling (5s interval)
[14:18:17] [CLEANUP] ========================================
[14:18:17] [CLEANUP] Cleaning up all agent connections and views
[14:18:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:17] [CLEANUP] Stopped and removed 0 video connections
[14:18:17] [CLEANUP] Removed 0 video views
[14:18:17] [CLEANUP] Removed 0 feed scroll views
[14:18:17] [CLEANUP] Removed 0 status labels
[14:18:17] [CLEANUP] Reset agent query state
[14:18:17] [CLEANUP] Updated page indicator
[14:18:17] [CLEANUP] Rebuilt video layout
[14:18:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:17] [CLEANUP] ========================================
[14:18:17] [SERVER] Starting reconnect polling (5s interval)
[14:18:17] [PUSH] Silent push received
[14:18:17] [PUSH_EMBED] No embedded message_data in notification
[14:18:17] [PUSH] No embedded data, pre-loading messages from server
[14:18:17] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:18] [PUSH] Silent push received
[14:18:18] [PUSH_EMBED] No embedded message_data in notification
[14:18:18] [PUSH] No embedded data, pre-loading messages from server
[14:18:18] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:18] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:18] [PRELOAD_CACHE] Preserving 13 push-inserted messages: [18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:18] [PUSH_PRELOAD] ⚡ Pre-cached 63 messages for instant display (preserved 13 from push)
[14:18:18] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:18] [PRELOAD_CACHE] Preserving 13 push-inserted messages: [18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:18] [PUSH_PRELOAD] ⚡ Pre-cached 63 messages for instant display (preserved 13 from push)
[14:18:18] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18835, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[14:18:18] [PUSH] Parsed message_id: 18835
[14:18:18] [PUSH] Parsed operation_type: 3
[14:18:18] [PUSH] Taking direct action: opType=3, messageId=18835
[14:18:18] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18835
[14:18:18] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18836]
[14:18:18] [PUSH] Parsed message_id: 18836
[14:18:18] [PUSH] Parsed operation_type: 3
[14:18:18] [PUSH] Taking direct action: opType=3, messageId=18836
[14:18:18] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18836
[14:18:18] [CLIENT_SIG] Event received: type=3 messageId=18835
[14:18:18] [WS_EVENT] Received event: type=3, messageId=18835
[14:18:18] [WS_EVENT] Read receipt for message 18835 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:18] [PUSH] Silent push received
[14:18:18] [PUSH_EMBED] No embedded message_data in notification
[14:18:18] [PUSH] No embedded data, pre-loading messages from server
[14:18:18] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:18] [CLIENT_SIG] Event received: type=3 messageId=18836
[14:18:18] [WS_EVENT] Received event: type=3, messageId=18836
[14:18:18] [WS_EVENT] Read receipt for message 18836 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:18] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:18] [PRELOAD_CACHE] Preserving 13 push-inserted messages: [18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:18] [PUSH_PRELOAD] ⚡ Pre-cached 63 messages for instant display (preserved 13 from push)
[14:18:18] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:18] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18834]
[14:18:18] [PUSH] Parsed message_id: 18834
[14:18:18] [PUSH] Parsed operation_type: 3
[14:18:18] [PUSH] Taking direct action: opType=3, messageId=18834
[14:18:18] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18834
[14:18:18] [CLIENT_SIG] Event received: type=3 messageId=18834
[14:18:18] [WS_EVENT] Received event: type=3, messageId=18834
[14:18:18] [WS_EVENT] Read receipt for message 18834 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:18] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:18] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:19] HELLO → sent (cached token, role=query)
[14:18:19] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:19] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:19] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:19] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:19] [CLEANUP] ========================================
[14:18:19] [CLEANUP] Cleaning up all agent connections and views
[14:18:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:19] [CLEANUP] Stopped and removed 0 video connections
[14:18:19] [CLEANUP] Removed 0 video views
[14:18:19] [CLEANUP] Removed 0 feed scroll views
[14:18:19] [CLEANUP] Removed 0 status labels
[14:18:19] [CLEANUP] Reset agent query state
[14:18:19] [CLEANUP] Updated page indicator
[14:18:19] [CLEANUP] Rebuilt video layout
[14:18:19] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:19] [CLEANUP] ========================================
[14:18:19] [SERVER] Starting reconnect polling (5s interval)
[14:18:19] [CLEANUP] ========================================
[14:18:19] [CLEANUP] Cleaning up all agent connections and views
[14:18:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:19] [CLEANUP] Stopped and removed 0 video connections
[14:18:19] [CLEANUP] Removed 0 video views
[14:18:19] [CLEANUP] Removed 0 feed scroll views
[14:18:19] [CLEANUP] Removed 0 status labels
[14:18:19] [CLEANUP] Reset agent query state
[14:18:19] [CLEANUP] Updated page indicator
[14:18:19] [CLEANUP] Rebuilt video layout
[14:18:19] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:19] [CLEANUP] ========================================
[14:18:19] [SERVER] Starting reconnect polling (5s interval)
[14:18:19] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:20] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:20] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:20] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:21] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:21] HELLO → sent (cached token, role=query)
[14:18:21] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:21] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:21] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:21] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:21] [CLEANUP] ========================================
[14:18:21] [CLEANUP] Cleaning up all agent connections and views
[14:18:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:21] [CLEANUP] Stopped and removed 0 video connections
[14:18:21] [CLEANUP] Removed 0 video views
[14:18:21] [CLEANUP] Removed 0 feed scroll views
[14:18:21] [CLEANUP] Removed 0 status labels
[14:18:21] [CLEANUP] Reset agent query state
[14:18:21] [CLEANUP] Updated page indicator
[14:18:21] [CLEANUP] Rebuilt video layout
[14:18:21] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:21] [CLEANUP] ========================================
[14:18:21] [SERVER] Starting reconnect polling (5s interval)
[14:18:21] [CLEANUP] ========================================
[14:18:21] [CLEANUP] Cleaning up all agent connections and views
[14:18:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:21] [CLEANUP] Stopped and removed 0 video connections
[14:18:21] [CLEANUP] Removed 0 video views
[14:18:21] [CLEANUP] Removed 0 feed scroll views
[14:18:21] [CLEANUP] Removed 0 status labels
[14:18:21] [CLEANUP] Reset agent query state
[14:18:21] [CLEANUP] Updated page indicator
[14:18:21] [CLEANUP] Rebuilt video layout
[14:18:21] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:21] [CLEANUP] ========================================
[14:18:21] [SERVER] Starting reconnect polling (5s interval)
[14:18:22] [LIFECYCLE] App resigning active - cleared crash flag
[14:18:22] [CLIENT_SIG] Event received: type=0 messageId=18837
[14:18:22] [WS_EVENT] Received event: type=0, messageId=18837
[14:18:22] [WS_EVENT] 📨 New message notification (msgId=18837) - triggering incremental refresh, currentMsgCount=64
[14:18:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=64
[14:18:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18836
[14:18:22] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:18:22] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 13:18:22 +0000 - type: unknown, operation_type: 0, message_id: 18837, session_id: ILUIWU, state: 1
[14:18:22] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18837, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:20";
"file_name" = "";
message = "\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
"message_id" = 18837;
"message_type" = 0;
"prev_session_message_id" = 18836;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
[14:18:22] [PUSH] Max message_id before push: 18837
[14:18:22] [PUSH_EMBED] 📩 Received embedded message: id=18837, type=0, sender=Esra
[14:18:22] [PUSH_EMBED] ✅ Saved message 18837 to local DB (sync)
[14:18:22] [PUSH_EMBED] Inserted message 18837 into existing cache (now 64 messages)
[14:18:22] [PUSH_EMBED] Fetching evolution data for message 18837 in background
[14:18:22] [PUSH_EMBED] ✅ Fully processed message 18837
[14:18:22] [PUSH] App not active - showing notification
[14:18:22] [PUSH] Fetching server messages since_id=18837 to catch coalesced notifications
[14:18:22] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18837 to catch coalesced notifications
[14:18:22] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:22] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:18:22] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:22] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:22] [PUSH_UI] Message 18837 already in memory - skipping insert
[14:18:22] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=65
[14:18:22] [PUSH] Silent push received
[14:18:22] [PUSH_EMBED] 📩 Received embedded message: id=18837, type=0, sender=Esra
[14:18:22] [PUSH_EMBED] ✅ Saved message 18837 to local DB (sync)
[14:18:22] [PUSH_EMBED] Fetching evolution data for message 18837 in background
[14:18:22] [PUSH_EMBED] ✅ Fully processed message 18837
[14:18:22] [PUSH] Embedded message handled instantly from silent push
[14:18:22] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:22] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:22] [PUSH_UI] Message 18837 already in memory - skipping insert
[14:18:22] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:20";
"file_name" = "";
message = "\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
"message_id" = 18837;
"message_type" = 0;
"prev_session_message_id" = 18836;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18837, AnyHashable("session_id"): ILUIWU]
[14:18:22] [PUSH_EMBED_VC] Message 18837 already in memory - skipping
[14:18:22] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:22] [PUSH] Parsed message_id: 18837
[14:18:22] [PUSH] Parsed operation_type: 0
[14:18:22] [PUSH] Taking direct action: opType=0, messageId=18837
[14:18:22] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18837
[14:18:22] [PUSH] ⚡ Message 18837 already in memory - skipping duplicate notification entirely
[14:18:22] [PUSH_EMBED] Got evolution data for message 18837, saving to local DB
[14:18:22] [PUSH_EMBED] Saved evolution data for message 18837
[14:18:22] [PUSH_EMBED] Got evolution data for message 18837, saving to local DB
[14:18:22] [PUSH_EMBED] Saved evolution data for message 18837
[14:18:22] [PUSH_PRELOAD] No messages or parse error
[14:18:22] [PUSH] Server fetch completed (success=false) - posting pollEventsNow
[14:18:22] [PUSH] handlePollEventsNotification userInfo: [:]
[14:18:22] [PUSH] No message_id in userInfo
[14:18:22] [PUSH] No operation_type in userInfo
[14:18:22] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:18:22] [FAST_REFRESH] Already have 65 messages - skipping local DB load
[14:18:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:18:22] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:18:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:18:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=65
[14:18:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18837
[14:18:22] [INCREMENTAL_SYNC] ✅ No new messages
[14:18:22] [FAST_REFRESH] Incremental sync complete - 65 messages
[14:18:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:22] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18836 → 18837
[14:18:22] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:22] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:22] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:18:22] [SECURITY] Saved background timestamp
[14:18:22] [LIFECYCLE] App entering background - cleared crash flag
[14:18:22] [CLIENT_SIG] Disconnecting
[14:18:22] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:18:22] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[14:18:22] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:18:22] In cleanupPeer
[14:18:22] In cleanupPeer
[14:18:22] [LIFECYCLE] WebRTC audio disabled
[14:18:22] [LIFECYCLE] AVAudioSession deactivated
[14:18:22] [LIFECYCLE] All connections stopped
[14:18:23] [CLIENT_SIG] WebSocket closed with code 1001
[14:18:23] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:18:23] [SERVER] Stopped reconnect polling
[14:18:23] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[14:18:23] [WS] Query connection error - cleaning up all agent connections and views
[14:18:23] Will request stop of video 0
[14:18:23] Will request stop of video 0
[14:18:23] [WS] Connection failed: cancelled
[14:18:23] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:23] [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/}
[14:18:23] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:18:23] [COMBINED_FETCH] Loaded 7603 read receipts, 916 messages with reactions
[14:18:23] [FAST_REFRESH] Enriched 65 messages with readBy data
[14:18:23] [CLEANUP] ========================================
[14:18:23] [CLEANUP] Cleaning up all agent connections and views
[14:18:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:23] [CLEANUP] Stopped and removed 0 video connections
[14:18:23] [CLEANUP] Removed 0 video views
[14:18:23] [CLEANUP] Removed 0 feed scroll views
[14:18:23] [CLEANUP] Removed 0 status labels
[14:18:23] [CLEANUP] Reset agent query state
[14:18:23] [CLEANUP] Updated page indicator
[14:18:23] [CLEANUP] Rebuilt video layout
[14:18:23] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:23] [CLEANUP] ========================================
[14:18:23] [SERVER] Skipping reconnect polling - app is in background
[14:18:23] [WS] URLSession invalidated successfully
[14:18:23] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:23] [PIP] ✅ All tracks removed for connection 0
[14:18:23] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:23] [PIP] ✅ All tracks removed for connection 0
[14:18:23] [CLEANUP] ========================================
[14:18:23] [CLEANUP] Cleaning up all agent connections and views
[14:18:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:23] [CLEANUP] Stopped and removed 0 video connections
[14:18:23] [CLEANUP] Removed 0 video views
[14:18:23] [CLEANUP] Removed 0 feed scroll views
[14:18:23] [CLEANUP] Removed 0 status labels
[14:18:23] [CLEANUP] Reset agent query state
[14:18:23] [CLEANUP] Updated page indicator
[14:18:23] [CLEANUP] Rebuilt video layout
[14:18:23] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:23] [CLEANUP] ========================================
[14:18:23] [SERVER] Skipping reconnect polling - app is in background
[14:18:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:23] [PUSH] Notification tapped - session_id: ILUIWU
[14:18:23] [PUSH] Max message_id before tap: 18837
[14:18:23] [PUSH] Stored pending session: ILUIWU
[14:18:23] [PUSH_EMBED] 📩 Received embedded message: id=18837, type=0, sender=Esra
[14:18:23] [PUSH_EMBED] ✅ Saved message 18837 to local DB (sync)
[14:18:23] [PUSH_EMBED] Fetching evolution data for message 18837 in background
[14:18:23] [PUSH_EMBED] ✅ Fully processed message 18837
[14:18:23] [PUSH] Embedded message handled instantly on tap
[14:18:23] [SECURITY] Timeout check: elapsed=0.5213038921356201s, timeout=300.0s
[14:18:23] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:18:23] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:23] [PUSH] Fetching server messages since_id=18837 to catch coalesced notifications on tap
[14:18:23] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18837 to catch coalesced notifications
[14:18:23] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:23] [LIFECYCLE] App entering foreground - restoring connections
[14:18:23] [UPLOAD_RETRY] No pending uploads to retry
[14:18:23] [LIFECYCLE] Merged 910 reactions from local DB
[14:18:23] [LIFECYCLE] WebRTC audio re-enabled
[14:18:23] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:18:23] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:18:23] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:23] [VIEWER] Reconnecting after background - querying agents
[14:18:23] [UNSENT_RETRY] Checking for unsent messages...
[14:18:23] [PENDING_UPLOAD] Total pending upload messages: 0
[14:18:23] [UNSENT_RETRY] No unsent messages found
[14:18:23] [PUSH_EMBED] Got evolution data for message 18837, saving to local DB
[14:18:23] [PUSH_EMBED] Saved evolution data for message 18837
[14:18:23] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:23] [PUSH_UI] Message 18837 already in memory - skipping insert
[14:18:23] [PUSH_PRELOAD] No messages or parse error
[14:18:23] [PUSH] Server fetch on tap completed (success=false)
[14:18:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:20";
"file_name" = "";
message = "\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
"message_id" = 18837;
"message_type" = 0;
"prev_session_message_id" = 18836;
"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"): 18837, AnyHashable("operation_type"): 0]
[14:18:23] [PUSH_EMBED_VC] Message 18837 already in memory - skipping
[14:18:23] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:23] [PUSH] Parsed message_id: 18837
[14:18:23] [PUSH] Parsed operation_type: 0
[14:18:23] [PUSH] Taking direct action: opType=0, messageId=18837
[14:18:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18837
[14:18:23] [PUSH] ⚡ Message 18837 already in memory - skipping duplicate notification entirely
[14:18:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:23] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:18:23] [SECURITY] Within timeout - cleared background flag
[14:18:23] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:18:23] [PUSH] handlePollEventsNotification userInfo: [:]
[14:18:23] [PUSH] No message_id in userInfo
[14:18:23] [PUSH] No operation_type in userInfo
[14:18:23] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:18:23] [FAST_REFRESH] Already have 65 messages - skipping local DB load
[14:18:23] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:18:23] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:18:23] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=65
[14:18:23] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18837
[14:18:23] [CLIENT_SIG] WebSocket opened
[14:18:23] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:18:23] [CLIENT_SIG] Connected! clientId=tlx-Itk2eFS90j1n
[14:18:23] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:18:23] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:23] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:23] [INCREMENTAL_SYNC] ✅ No new messages
[14:18:23] [FAST_REFRESH] Incremental sync complete - 65 messages
[14:18:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:24] [COMBINED_FETCH] Loaded 7603 read receipts, 916 messages with reactions
[14:18:24] [FOREGROUND] Enriched 1 messages with readBy data from server
[14:18:24] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:24] [COMBINED_FETCH] Loaded 7603 read receipts, 916 messages with reactions
[14:18:24] [FAST_REFRESH] Enriched 65 messages with readBy data
[14:18:24] [PUSH] Silent push received
[14:18:24] [PUSH_EMBED] No embedded message_data in notification
[14:18:24] [PUSH] No embedded data, pre-loading messages from server
[14:18:24] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:24] [PRELOAD_CACHE] Preserving 14 push-inserted messages: [18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:24] [PUSH_PRELOAD] ⚡ Pre-cached 64 messages for instant display (preserved 14 from push)
[14:18:24] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18837, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[14:18:24] [PUSH] Parsed message_id: 18837
[14:18:24] [PUSH] Parsed operation_type: 3
[14:18:24] [PUSH] Taking direct action: opType=3, messageId=18837
[14:18:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18837
[14:18:24] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:24] [CLIENT_SIG] Event received: type=3 messageId=18837
[14:18:24] [WS_EVENT] Received event: type=3, messageId=18837
[14:18:24] [WS_EVENT] Read receipt for message 18837 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:25] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:25] HELLO → sent (cached token, role=query)
[14:18:25] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:25] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:25] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:25] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:25] [CLEANUP] ========================================
[14:18:25] [CLEANUP] Cleaning up all agent connections and views
[14:18:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:25] [CLEANUP] Stopped and removed 0 video connections
[14:18:25] [CLEANUP] Removed 0 video views
[14:18:25] [CLEANUP] Removed 0 feed scroll views
[14:18:25] [CLEANUP] Removed 0 status labels
[14:18:25] [CLEANUP] Reset agent query state
[14:18:25] [CLEANUP] Updated page indicator
[14:18:25] [CLEANUP] Rebuilt video layout
[14:18:25] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:25] [CLEANUP] ========================================
[14:18:25] [SERVER] Starting reconnect polling (5s interval)
[14:18:25] [CLEANUP] ========================================
[14:18:25] [CLEANUP] Cleaning up all agent connections and views
[14:18:25] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:25] [CLEANUP] Stopped and removed 0 video connections
[14:18:25] [CLEANUP] Removed 0 video views
[14:18:25] [CLEANUP] Removed 0 feed scroll views
[14:18:25] [CLEANUP] Removed 0 status labels
[14:18:25] [CLEANUP] Reset agent query state
[14:18:25] [CLEANUP] Updated page indicator
[14:18:25] [CLEANUP] Rebuilt video layout
[14:18:25] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:25] [CLEANUP] ========================================
[14:18:25] [SERVER] Starting reconnect polling (5s interval)
[14:18:26] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:26] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:26] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:26] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:26] HELLO → sent (cached token, role=query)
[14:18:26] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:26] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:26] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:26] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:26] [CLEANUP] ========================================
[14:18:26] [CLEANUP] Cleaning up all agent connections and views
[14:18:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:26] [CLEANUP] Stopped and removed 0 video connections
[14:18:26] [CLEANUP] Removed 0 video views
[14:18:26] [CLEANUP] Removed 0 feed scroll views
[14:18:26] [CLEANUP] Removed 0 status labels
[14:18:26] [CLEANUP] Reset agent query state
[14:18:26] [CLEANUP] Updated page indicator
[14:18:26] [CLEANUP] Rebuilt video layout
[14:18:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:26] [CLEANUP] ========================================
[14:18:26] [SERVER] Starting reconnect polling (5s interval)
[14:18:26] [CLEANUP] ========================================
[14:18:26] [CLEANUP] Cleaning up all agent connections and views
[14:18:26] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:26] [CLEANUP] Stopped and removed 0 video connections
[14:18:26] [CLEANUP] Removed 0 video views
[14:18:26] [CLEANUP] Removed 0 feed scroll views
[14:18:26] [CLEANUP] Removed 0 status labels
[14:18:26] [CLEANUP] Reset agent query state
[14:18:26] [CLEANUP] Updated page indicator
[14:18:26] [CLEANUP] Rebuilt video layout
[14:18:26] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:26] [CLEANUP] ========================================
[14:18:26] [SERVER] Starting reconnect polling (5s interval)
[14:18:27] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:28] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:28] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:28] HELLO → sent (cached token, role=query)
[14:18:28] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:28] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:28] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:28] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:28] [CLEANUP] ========================================
[14:18:28] [CLEANUP] Cleaning up all agent connections and views
[14:18:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:28] [CLEANUP] Stopped and removed 0 video connections
[14:18:28] [CLEANUP] Removed 0 video views
[14:18:28] [CLEANUP] Removed 0 feed scroll views
[14:18:28] [CLEANUP] Removed 0 status labels
[14:18:28] [CLEANUP] Reset agent query state
[14:18:28] [CLEANUP] Updated page indicator
[14:18:28] [CLEANUP] Rebuilt video layout
[14:18:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:28] [CLEANUP] ========================================
[14:18:28] [SERVER] Starting reconnect polling (5s interval)
[14:18:28] [CLEANUP] ========================================
[14:18:28] [CLEANUP] Cleaning up all agent connections and views
[14:18:28] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:28] [CLEANUP] Stopped and removed 0 video connections
[14:18:28] [CLEANUP] Removed 0 video views
[14:18:28] [CLEANUP] Removed 0 feed scroll views
[14:18:28] [CLEANUP] Removed 0 status labels
[14:18:28] [CLEANUP] Reset agent query state
[14:18:28] [CLEANUP] Updated page indicator
[14:18:28] [CLEANUP] Rebuilt video layout
[14:18:28] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:28] [CLEANUP] ========================================
[14:18:28] [SERVER] Starting reconnect polling (5s interval)
[14:18:30] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:30] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:30] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:30] HELLO → sent (cached token, role=query)
[14:18:30] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:30] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:30] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:30] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:30] [CLEANUP] ========================================
[14:18:30] [CLEANUP] Cleaning up all agent connections and views
[14:18:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:30] [CLEANUP] Stopped and removed 0 video connections
[14:18:30] [CLEANUP] Removed 0 video views
[14:18:30] [CLEANUP] Removed 0 feed scroll views
[14:18:30] [CLEANUP] Removed 0 status labels
[14:18:30] [CLEANUP] Reset agent query state
[14:18:30] [CLEANUP] Updated page indicator
[14:18:30] [CLEANUP] Rebuilt video layout
[14:18:30] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:30] [CLEANUP] ========================================
[14:18:30] [SERVER] Starting reconnect polling (5s interval)
[14:18:30] [CLEANUP] ========================================
[14:18:30] [CLEANUP] Cleaning up all agent connections and views
[14:18:30] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:30] [CLEANUP] Stopped and removed 0 video connections
[14:18:30] [CLEANUP] Removed 0 video views
[14:18:30] [CLEANUP] Removed 0 feed scroll views
[14:18:30] [CLEANUP] Removed 0 status labels
[14:18:30] [CLEANUP] Reset agent query state
[14:18:30] [CLEANUP] Updated page indicator
[14:18:30] [CLEANUP] Rebuilt video layout
[14:18:30] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:30] [CLEANUP] ========================================
[14:18:30] [SERVER] Starting reconnect polling (5s interval)
[14:18:30] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:18:30] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=65, isReloading=false
[14:18:30] [SEND_MESSAGE] ✅ Added optimistic message id=-10 to arrays, newMsgCount=66
[14:18:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[-10, 18837, 18836, 18835, 18834]
[14:18:30] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:18:30] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:18:31] [CLIENT_SIG] Event received: type=0 messageId=18838
[14:18:31] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18838,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:18:31"}
[14:18:31] [WS_EVENT] Received event: type=0, messageId=18838
[14:18:31] [WS_EVENT] 📨 New message notification (msgId=18838) - triggering incremental refresh, currentMsgCount=66
[14:18:31] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 13:18:31, "ok": 1, "session_id": ILUIWU, "file_name": , "message_id": 18838, "message_type": 0]
[14:18:31] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=66
[14:18:31] [DB_UPGRADE] Upgrading message ID: -10 → 18838, preserveOriginalDate=false
[14:18:31] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18837
[14:18:31] [DB_UPGRADE] ✅ Upgraded -10 → 18838 with send_status=0, 1 row(s) affected
[14:18:31] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -10 → 18838
[14:18:31] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -10 → 18838
[14:18:31] ReloadData 9
[14:18:31] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:18:31] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:18:31] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=66
[14:18:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:32] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:32] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:32] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:32] HELLO → sent (cached token, role=query)
[14:18:32] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:32] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:32] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:32] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:32] [CLEANUP] ========================================
[14:18:32] [CLEANUP] Cleaning up all agent connections and views
[14:18:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:32] [CLEANUP] Stopped and removed 0 video connections
[14:18:32] [CLEANUP] Removed 0 video views
[14:18:32] [CLEANUP] Removed 0 feed scroll views
[14:18:32] [CLEANUP] Removed 0 status labels
[14:18:32] [CLEANUP] Reset agent query state
[14:18:32] [CLEANUP] Updated page indicator
[14:18:32] [CLEANUP] Rebuilt video layout
[14:18:32] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:32] [CLEANUP] ========================================
[14:18:32] [SERVER] Starting reconnect polling (5s interval)
[14:18:32] [CLEANUP] ========================================
[14:18:32] [CLEANUP] Cleaning up all agent connections and views
[14:18:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:32] [CLEANUP] Stopped and removed 0 video connections
[14:18:32] [CLEANUP] Removed 0 video views
[14:18:32] [CLEANUP] Removed 0 feed scroll views
[14:18:32] [CLEANUP] Removed 0 status labels
[14:18:32] [CLEANUP] Reset agent query state
[14:18:32] [CLEANUP] Updated page indicator
[14:18:32] [CLEANUP] Rebuilt video layout
[14:18:32] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:32] [CLEANUP] ========================================
[14:18:32] [SERVER] Starting reconnect polling (5s interval)
[14:18:34] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:34] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:34] [PUSH] Silent push received
[14:18:34] [PUSH_EMBED] No embedded message_data in notification
[14:18:34] [PUSH] No embedded data, pre-loading messages from server
[14:18:34] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:34] [PRELOAD_CACHE] Preserving 15 push-inserted messages: [18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:34] [PUSH_PRELOAD] ⚡ Pre-cached 65 messages for instant display (preserved 15 from push)
[14:18:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18838]
[14:18:34] [PUSH] Parsed message_id: 18838
[14:18:34] [PUSH] Parsed operation_type: 3
[14:18:34] [PUSH] Taking direct action: opType=3, messageId=18838
[14:18:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18838
[14:18:34] [CLIENT_SIG] Event received: type=3 messageId=18838
[14:18:34] [WS_EVENT] Received event: type=3, messageId=18838
[14:18:34] [WS_EVENT] Read receipt for message 18838 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[14:18:34] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:34] HELLO → sent (cached token, role=query)
[14:18:34] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:34] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:34] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:34] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:34] [CLEANUP] ========================================
[14:18:34] [CLEANUP] Cleaning up all agent connections and views
[14:18:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:34] [CLEANUP] Stopped and removed 0 video connections
[14:18:34] [CLEANUP] Removed 0 video views
[14:18:34] [CLEANUP] Removed 0 feed scroll views
[14:18:34] [CLEANUP] Removed 0 status labels
[14:18:34] [CLEANUP] Reset agent query state
[14:18:34] [CLEANUP] Updated page indicator
[14:18:34] [CLEANUP] Rebuilt video layout
[14:18:34] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:34] [CLEANUP] ========================================
[14:18:34] [SERVER] Starting reconnect polling (5s interval)
[14:18:34] [CLEANUP] ========================================
[14:18:34] [CLEANUP] Cleaning up all agent connections and views
[14:18:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:34] [CLEANUP] Stopped and removed 0 video connections
[14:18:34] [CLEANUP] Removed 0 video views
[14:18:34] [CLEANUP] Removed 0 feed scroll views
[14:18:34] [CLEANUP] Removed 0 status labels
[14:18:34] [CLEANUP] Reset agent query state
[14:18:34] [CLEANUP] Updated page indicator
[14:18:34] [CLEANUP] Rebuilt video layout
[14:18:34] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:34] [CLEANUP] ========================================
[14:18:34] [SERVER] Starting reconnect polling (5s interval)
[14:18:34] [LIFECYCLE] App resigning active - cleared crash flag
[14:18:35] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:18:35] [SECURITY] Saved background timestamp
[14:18:35] [LIFECYCLE] App entering background - cleared crash flag
[14:18:35] [CLIENT_SIG] Disconnecting
[14:18:35] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:18:35] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[14:18:35] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:18:35] In cleanupPeer
[14:18:35] In cleanupPeer
[14:18:35] [LIFECYCLE] WebRTC audio disabled
[14:18:35] [LIFECYCLE] AVAudioSession deactivated
[14:18:35] [LIFECYCLE] All connections stopped
[14:18:35] [CLIENT_SIG] WebSocket closed with code 1001
[14:18:35] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:18:35] [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/}
[14:18:35] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:18:35] [SERVER] Stopped reconnect polling
[14:18:35] [WS] URLSession invalidated successfully
[14:18:35] Will request stop of video 0
[14:18:35] Will request stop of video 0
[14:18:35] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:35] [PIP] ✅ All tracks removed for connection 0
[14:18:35] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:35] [PIP] ✅ All tracks removed for connection 0
[14:18:39] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:39] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:39] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:39] [PUSH] Notification tapped - session_id: ILUIWU
[14:18:39] [PUSH] Max message_id before tap: 18838
[14:18:39] [PUSH] Stored pending session: ILUIWU
[14:18:39] [PUSH_EMBED] 📩 Received embedded message: id=18839, type=0, sender=Esra
[14:18:39] [PUSH_EMBED] ✅ Saved message 18839 to local DB (sync)
[14:18:39] [PUSH_EMBED] Inserted message 18839 into existing cache (now 66 messages)
[14:18:39] [PUSH_EMBED] Fetching evolution data for message 18839 in background
[14:18:39] [PUSH_EMBED] ✅ Fully processed message 18839
[14:18:39] [PUSH] Embedded message handled instantly on tap
[14:18:39] [SECURITY] Timeout check: elapsed=4.553296804428101s, timeout=300.0s
[14:18:39] [PUSH] Fetching server messages since_id=18838 to catch coalesced notifications on tap
[14:18:39] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:18:39] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18838 to catch coalesced notifications
[14:18:39] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:39] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:39] [LIFECYCLE] App entering foreground - restoring connections
[14:18:39] [UPLOAD_RETRY] No pending uploads to retry
[14:18:39] [LIFECYCLE] Merged 910 reactions from local DB
[14:18:39] [LIFECYCLE] WebRTC audio re-enabled
[14:18:39] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:18:39] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:18:39] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:18:39] [VIEWER] Reconnecting after background - querying agents
[14:18:39] [UNSENT_RETRY] Checking for unsent messages...
[14:18:39] [PENDING_UPLOAD] Total pending upload messages: 0
[14:18:39] [UNSENT_RETRY] No unsent messages found
[14:18:39] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:39] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:39] [PUSH_UI] Inserted message 18839 into UI (now 67 messages)
[14:18:39] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:18:39] [PUSH_EMBED] Got evolution data for message 18839, saving to local DB
[14:18:39] [PUSH_EMBED] Saved evolution data for message 18839
[14:18:39] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[14:18:39] [PRELOAD_CACHE] Preserving 65 push-inserted messages: [18838, 18837, 18836, 18835, 18834, 18833, 18832, 18831, 18830, 18829, 18828, 18827, 18826, 18825, 18824, 18823, 18822, 18821, 18820, 18819, 18818, 18817, 18816, 18815, 18814, 18813, 18812, 18811, 18810, 18809, 18808, 18807, 18806, 18805, 18804, 18803, 18802, 18801, 18800, 18799, 18798, 18797, 18796, 18795, 18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:39] [PUSH_PRELOAD] ⚡ Pre-cached 66 messages for instant display (preserved 65 from push)
[14:18:39] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:39] [PUSH] Server fetch on tap completed (success=true)
[14:18:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:36";
"file_name" = "";
message = "Do I have a potential ?";
"message_id" = 18839;
"message_type" = 0;
"prev_session_message_id" = 18838;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18839, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
[14:18:39] [PUSH_EMBED_VC] Message 18839 already in memory - skipping
[14:18:39] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:39] [PUSH] Parsed message_id: 18839
[14:18:39] [PUSH] Parsed operation_type: 0
[14:18:39] [PUSH] Taking direct action: opType=0, messageId=18839
[14:18:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18839
[14:18:39] [PUSH] ⚡ Message 18839 already in memory - skipping duplicate notification entirely
[14:18:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[18839, 18773, 18774, 18775, 18776]
[14:18:39] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18838 → 18839
[14:18:40] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:40] HELLO → sent (cached token, role=query)
[14:18:40] [CLIENT_SIG] WebSocket opened
[14:18:40] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:18:40] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:40] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:40] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:40] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:40] [CLEANUP] ========================================
[14:18:40] [CLEANUP] Cleaning up all agent connections and views
[14:18:40] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:40] [CLEANUP] Stopped and removed 0 video connections
[14:18:40] [CLEANUP] Removed 0 video views
[14:18:40] [CLEANUP] Removed 0 feed scroll views
[14:18:40] [CLEANUP] Removed 0 status labels
[14:18:40] [CLEANUP] Reset agent query state
[14:18:40] [CLEANUP] Updated page indicator
[14:18:40] [CLEANUP] Rebuilt video layout
[14:18:40] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:40] [CLEANUP] ========================================
[14:18:40] [SERVER] Starting reconnect polling (5s interval)
[14:18:40] [CLEANUP] ========================================
[14:18:40] [CLEANUP] Cleaning up all agent connections and views
[14:18:40] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:40] [CLEANUP] Stopped and removed 0 video connections
[14:18:40] [CLEANUP] Removed 0 video views
[14:18:40] [CLEANUP] Removed 0 feed scroll views
[14:18:40] [CLEANUP] Removed 0 status labels
[14:18:40] [CLEANUP] Reset agent query state
[14:18:40] [CLEANUP] Updated page indicator
[14:18:40] [CLEANUP] Rebuilt video layout
[14:18:40] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:40] [CLEANUP] ========================================
[14:18:40] [SERVER] Starting reconnect polling (5s interval)
[14:18:40] [CLIENT_SIG] Connected! clientId=Ggylhl0dY8uoqVpW
[14:18:40] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:18:40] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:40] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:18:40] [SECURITY] Within timeout - cleared background flag
[14:18:40] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:18:40] [PUSH] handlePollEventsNotification userInfo: [:]
[14:18:40] [PUSH] No message_id in userInfo
[14:18:40] [PUSH] No operation_type in userInfo
[14:18:40] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:18:40] [FAST_REFRESH] Already have 67 messages - skipping local DB load
[14:18:40] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:18:40] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:18:40] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=67
[14:18:40] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18839
[14:18:40] [INCREMENTAL_SYNC] ✅ No new messages
[14:18:40] [FAST_REFRESH] Incremental sync complete - 67 messages
[14:18:40] [PUSH] Silent push received
[14:18:40] [PUSH_EMBED] 📩 Received embedded message: id=18839, type=0, sender=Esra
[14:18:40] [PUSH_EMBED] ✅ Saved message 18839 to local DB (sync)
[14:18:40] [PUSH_EMBED] Fetching evolution data for message 18839 in background
[14:18:40] [PUSH_EMBED] ✅ Fully processed message 18839
[14:18:40] [PUSH] Embedded message handled instantly from silent push
[14:18:40] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[14:18:40] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[14:18:40] [PUSH_UI] Message 18839 already in memory - skipping insert
[14:18:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-23 13:18:36";
"file_name" = "";
message = "Do I have a potential ?";
"message_id" = 18839;
"message_type" = 0;
"prev_session_message_id" = 18838;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18839]
[14:18:40] [PUSH_EMBED_VC] Message 18839 already in memory - skipping
[14:18:40] [PUSH] ⚡ Embedded message handled directly in ViewController
[14:18:40] [PUSH] Parsed message_id: 18839
[14:18:40] [PUSH] Parsed operation_type: 0
[14:18:40] [PUSH] Taking direct action: opType=0, messageId=18839
[14:18:40] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18839
[14:18:40] [PUSH] ⚡ Message 18839 already in memory - skipping duplicate notification entirely
[14:18:40] [PUSH_EMBED] Got evolution data for message 18839, saving to local DB
[14:18:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[18839, 18773, 18774, 18775, 18776]
[14:18:40] [PUSH_EMBED] Saved evolution data for message 18839
[14:18:40] [COMBINED_FETCH] Loaded 7605 read receipts, 916 messages with reactions
[14:18:40] [FOREGROUND] Enriched 0 messages with readBy data from server
[14:18:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[18839, 18773, 18774, 18775, 18776]
[14:18:40] [COMBINED_FETCH] Loaded 7605 read receipts, 916 messages with reactions
[14:18:40] [FAST_REFRESH] Enriched 67 messages with readBy data
[14:18:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[18839, 18773, 18774, 18775, 18776]
[14:18:41] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:41] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:41] [PUSH] Silent push received
[14:18:41] [PUSH_EMBED] No embedded message_data in notification
[14:18:41] [PUSH] No embedded data, pre-loading messages from server
[14:18:41] [PUSH_PRELOAD] Fetching messages for instant display cache
[14:18:41] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:41] HELLO → sent (cached token, role=query)
[14:18:41] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:41] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:41] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:41] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:41] [CLEANUP] ========================================
[14:18:41] [CLEANUP] Cleaning up all agent connections and views
[14:18:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:41] [CLEANUP] Stopped and removed 0 video connections
[14:18:41] [CLEANUP] Removed 0 video views
[14:18:41] [CLEANUP] Removed 0 feed scroll views
[14:18:41] [CLEANUP] Removed 0 status labels
[14:18:41] [CLEANUP] Reset agent query state
[14:18:41] [CLEANUP] Updated page indicator
[14:18:41] [CLEANUP] Rebuilt video layout
[14:18:41] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:41] [CLEANUP] ========================================
[14:18:41] [SERVER] Starting reconnect polling (5s interval)
[14:18:41] [CLEANUP] ========================================
[14:18:41] [CLEANUP] Cleaning up all agent connections and views
[14:18:41] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:41] [CLEANUP] Stopped and removed 0 video connections
[14:18:41] [CLEANUP] Removed 0 video views
[14:18:41] [CLEANUP] Removed 0 feed scroll views
[14:18:41] [CLEANUP] Removed 0 status labels
[14:18:41] [CLEANUP] Reset agent query state
[14:18:41] [CLEANUP] Updated page indicator
[14:18:41] [CLEANUP] Rebuilt video layout
[14:18:41] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:41] [CLEANUP] ========================================
[14:18:41] [SERVER] Starting reconnect polling (5s interval)
[14:18:41] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[14:18:42] [PRELOAD_CACHE] Preserving 16 push-inserted messages: [18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774]
[14:18:42] [PUSH_PRELOAD] ⚡ Pre-cached 66 messages for instant display (preserved 16 from push)
[14:18:42] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[14:18:42] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18839]
[14:18:42] [PUSH] Parsed message_id: 18839
[14:18:42] [PUSH] Parsed operation_type: 3
[14:18:42] [PUSH] Taking direct action: opType=3, messageId=18839
[14:18:42] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18839
[14:18:42] [CLIENT_SIG] Event received: type=3 messageId=18839
[14:18:42] [WS_EVENT] Received event: type=3, messageId=18839
[14:18:42] [WS_EVENT] Read receipt for message 18839 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:18:43] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:43] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:43] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:43] HELLO → sent (cached token, role=query)
[14:18:43] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:43] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:43] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:43] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:43] [CLEANUP] ========================================
[14:18:43] [CLEANUP] Cleaning up all agent connections and views
[14:18:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:43] [CLEANUP] Stopped and removed 0 video connections
[14:18:43] [CLEANUP] Removed 0 video views
[14:18:43] [CLEANUP] Removed 0 feed scroll views
[14:18:43] [CLEANUP] Removed 0 status labels
[14:18:43] [CLEANUP] Reset agent query state
[14:18:43] [CLEANUP] Updated page indicator
[14:18:43] [CLEANUP] Rebuilt video layout
[14:18:43] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:43] [CLEANUP] ========================================
[14:18:43] [SERVER] Starting reconnect polling (5s interval)
[14:18:43] [CLEANUP] ========================================
[14:18:43] [CLEANUP] Cleaning up all agent connections and views
[14:18:43] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:43] [CLEANUP] Stopped and removed 0 video connections
[14:18:43] [CLEANUP] Removed 0 video views
[14:18:43] [CLEANUP] Removed 0 feed scroll views
[14:18:43] [CLEANUP] Removed 0 status labels
[14:18:43] [CLEANUP] Reset agent query state
[14:18:43] [CLEANUP] Updated page indicator
[14:18:43] [CLEANUP] Rebuilt video layout
[14:18:43] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:43] [CLEANUP] ========================================
[14:18:43] [SERVER] Starting reconnect polling (5s interval)
[14:18:45] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:45] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:45] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:45] HELLO → sent (cached token, role=query)
[14:18:45] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:45] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:45] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:45] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:45] [CLEANUP] ========================================
[14:18:45] [CLEANUP] Cleaning up all agent connections and views
[14:18:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:45] [CLEANUP] Stopped and removed 0 video connections
[14:18:45] [CLEANUP] Removed 0 video views
[14:18:45] [CLEANUP] Removed 0 feed scroll views
[14:18:45] [CLEANUP] Removed 0 status labels
[14:18:45] [CLEANUP] Reset agent query state
[14:18:45] [CLEANUP] Updated page indicator
[14:18:45] [CLEANUP] Rebuilt video layout
[14:18:45] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:45] [CLEANUP] ========================================
[14:18:45] [SERVER] Starting reconnect polling (5s interval)
[14:18:45] [CLEANUP] ========================================
[14:18:45] [CLEANUP] Cleaning up all agent connections and views
[14:18:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:45] [CLEANUP] Stopped and removed 0 video connections
[14:18:45] [CLEANUP] Removed 0 video views
[14:18:45] [CLEANUP] Removed 0 feed scroll views
[14:18:45] [CLEANUP] Removed 0 status labels
[14:18:45] [CLEANUP] Reset agent query state
[14:18:45] [CLEANUP] Updated page indicator
[14:18:45] [CLEANUP] Rebuilt video layout
[14:18:45] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:45] [CLEANUP] ========================================
[14:18:45] [SERVER] Starting reconnect polling (5s interval)
[14:18:47] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:47] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:47] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:47] HELLO → sent (cached token, role=query)
[14:18:47] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:47] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:47] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:47] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:47] [CLEANUP] ========================================
[14:18:47] [CLEANUP] Cleaning up all agent connections and views
[14:18:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:47] [CLEANUP] Stopped and removed 0 video connections
[14:18:47] [CLEANUP] Removed 0 video views
[14:18:47] [CLEANUP] Removed 0 feed scroll views
[14:18:47] [CLEANUP] Removed 0 status labels
[14:18:47] [CLEANUP] Reset agent query state
[14:18:47] [CLEANUP] Updated page indicator
[14:18:47] [CLEANUP] Rebuilt video layout
[14:18:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:47] [CLEANUP] ========================================
[14:18:47] [SERVER] Starting reconnect polling (5s interval)
[14:18:47] [CLEANUP] ========================================
[14:18:47] [CLEANUP] Cleaning up all agent connections and views
[14:18:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:47] [CLEANUP] Stopped and removed 0 video connections
[14:18:47] [CLEANUP] Removed 0 video views
[14:18:47] [CLEANUP] Removed 0 feed scroll views
[14:18:47] [CLEANUP] Removed 0 status labels
[14:18:47] [CLEANUP] Reset agent query state
[14:18:47] [CLEANUP] Updated page indicator
[14:18:47] [CLEANUP] Rebuilt video layout
[14:18:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:47] [CLEANUP] ========================================
[14:18:47] [SERVER] Starting reconnect polling (5s interval)
[14:18:48] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:48] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:49] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:49] HELLO → sent (cached token, role=query)
[14:18:49] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:49] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:49] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:49] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:49] [CLEANUP] ========================================
[14:18:49] [CLEANUP] Cleaning up all agent connections and views
[14:18:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:49] [CLEANUP] Stopped and removed 0 video connections
[14:18:49] [CLEANUP] Removed 0 video views
[14:18:49] [CLEANUP] Removed 0 feed scroll views
[14:18:49] [CLEANUP] Removed 0 status labels
[14:18:49] [CLEANUP] Reset agent query state
[14:18:49] [CLEANUP] Updated page indicator
[14:18:49] [CLEANUP] Rebuilt video layout
[14:18:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:49] [CLEANUP] ========================================
[14:18:49] [SERVER] Starting reconnect polling (5s interval)
[14:18:49] [CLEANUP] ========================================
[14:18:49] [CLEANUP] Cleaning up all agent connections and views
[14:18:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:49] [CLEANUP] Stopped and removed 0 video connections
[14:18:49] [CLEANUP] Removed 0 video views
[14:18:49] [CLEANUP] Removed 0 feed scroll views
[14:18:49] [CLEANUP] Removed 0 status labels
[14:18:49] [CLEANUP] Reset agent query state
[14:18:49] [CLEANUP] Updated page indicator
[14:18:49] [CLEANUP] Rebuilt video layout
[14:18:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:49] [CLEANUP] ========================================
[14:18:49] [SERVER] Starting reconnect polling (5s interval)
[14:18:50] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:50] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:51] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:51] HELLO → sent (cached token, role=query)
[14:18:51] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:51] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:51] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:51] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:51] [CLEANUP] ========================================
[14:18:51] [CLEANUP] Cleaning up all agent connections and views
[14:18:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:51] [CLEANUP] Stopped and removed 0 video connections
[14:18:51] [CLEANUP] Removed 0 video views
[14:18:51] [CLEANUP] Removed 0 feed scroll views
[14:18:51] [CLEANUP] Removed 0 status labels
[14:18:51] [CLEANUP] Reset agent query state
[14:18:51] [CLEANUP] Updated page indicator
[14:18:51] [CLEANUP] Rebuilt video layout
[14:18:51] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:51] [CLEANUP] ========================================
[14:18:51] [SERVER] Starting reconnect polling (5s interval)
[14:18:51] [CLEANUP] ========================================
[14:18:51] [CLEANUP] Cleaning up all agent connections and views
[14:18:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:51] [CLEANUP] Stopped and removed 0 video connections
[14:18:51] [CLEANUP] Removed 0 video views
[14:18:51] [CLEANUP] Removed 0 feed scroll views
[14:18:51] [CLEANUP] Removed 0 status labels
[14:18:51] [CLEANUP] Reset agent query state
[14:18:51] [CLEANUP] Updated page indicator
[14:18:51] [CLEANUP] Rebuilt video layout
[14:18:51] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:51] [CLEANUP] ========================================
[14:18:51] [SERVER] Starting reconnect polling (5s interval)
[14:18:52] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:52] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:52] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:52] HELLO → sent (cached token, role=query)
[14:18:52] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:52] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:52] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:52] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:52] [CLEANUP] ========================================
[14:18:52] [CLEANUP] Cleaning up all agent connections and views
[14:18:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:52] [CLEANUP] Stopped and removed 0 video connections
[14:18:52] [CLEANUP] Removed 0 video views
[14:18:52] [CLEANUP] Removed 0 feed scroll views
[14:18:52] [CLEANUP] Removed 0 status labels
[14:18:52] [CLEANUP] Reset agent query state
[14:18:52] [CLEANUP] Updated page indicator
[14:18:52] [CLEANUP] Rebuilt video layout
[14:18:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:52] [CLEANUP] ========================================
[14:18:52] [SERVER] Starting reconnect polling (5s interval)
[14:18:52] [CLEANUP] ========================================
[14:18:52] [CLEANUP] Cleaning up all agent connections and views
[14:18:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:52] [CLEANUP] Stopped and removed 0 video connections
[14:18:52] [CLEANUP] Removed 0 video views
[14:18:52] [CLEANUP] Removed 0 feed scroll views
[14:18:52] [CLEANUP] Removed 0 status labels
[14:18:52] [CLEANUP] Reset agent query state
[14:18:52] [CLEANUP] Updated page indicator
[14:18:52] [CLEANUP] Rebuilt video layout
[14:18:52] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:52] [CLEANUP] ========================================
[14:18:52] [SERVER] Starting reconnect polling (5s interval)
[14:18:54] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:18:54] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=67, isReloading=false
[14:18:54] [SEND_MESSAGE] ✅ Added optimistic message id=-11 to arrays, newMsgCount=68
[14:18:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[-11, 18839, 18838, 18837, 18836]
[14:18:54] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:18:54] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:18:54] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:54] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:54] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:54] HELLO → sent (cached token, role=query)
[14:18:54] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:18:54] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:54] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:18:54] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:18:54] [CLEANUP] ========================================
[14:18:54] [CLEANUP] Cleaning up all agent connections and views
[14:18:54] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:54] [CLEANUP] Stopped and removed 0 video connections
[14:18:54] [CLEANUP] Removed 0 video views
[14:18:54] [CLEANUP] Removed 0 feed scroll views
[14:18:54] [CLEANUP] Removed 0 status labels
[14:18:54] [CLEANUP] Reset agent query state
[14:18:54] [CLEANUP] Updated page indicator
[14:18:54] [CLEANUP] Rebuilt video layout
[14:18:54] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:54] [CLEANUP] ========================================
[14:18:54] [SERVER] Starting reconnect polling (5s interval)
[14:18:54] [CLEANUP] ========================================
[14:18:54] [CLEANUP] Cleaning up all agent connections and views
[14:18:54] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:54] [CLEANUP] Stopped and removed 0 video connections
[14:18:54] [CLEANUP] Removed 0 video views
[14:18:54] [CLEANUP] Removed 0 feed scroll views
[14:18:54] [CLEANUP] Removed 0 status labels
[14:18:54] [CLEANUP] Reset agent query state
[14:18:54] [CLEANUP] Updated page indicator
[14:18:54] [CLEANUP] Rebuilt video layout
[14:18:54] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:54] [CLEANUP] ========================================
[14:18:54] [SERVER] Starting reconnect polling (5s interval)
[14:18:55] [CLIENT_SIG] Event received: type=0 messageId=18840
[14:18:55] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18840,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:18:54"}
[14:18:55] [WS_EVENT] Received event: type=0, messageId=18840
[14:18:55] [WS_EVENT] 📨 New message notification (msgId=18840) - triggering incremental refresh, currentMsgCount=68
[14:18:55] [CHAT] receive_message.php JSON: ["message_type": 0, "datesent_utc": 2026-01-23 13:18:54, "message_id": 18840, "session_id": ILUIWU, "ok": 1, "file_name": ]
[14:18:55] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=68
[14:18:55] [DB_UPGRADE] Upgrading message ID: -11 → 18840, preserveOriginalDate=false
[14:18:55] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18839
[14:18:55] [DB_UPGRADE] ✅ Upgraded -11 → 18840 with send_status=0, 1 row(s) affected
[14:18:55] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -11 → 18840
[14:18:55] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -11 → 18840
[14:18:55] ReloadData 9
[14:18:55] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[14:18:55] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[14:18:55] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=68
[14:18:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:18:55] [LIFECYCLE] App resigning active - cleared crash flag
[14:18:56] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:18:56] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:18:56] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:18:56] [SECURITY] Saved background timestamp
[14:18:56] [LIFECYCLE] App entering background - cleared crash flag
[14:18:56] [CLIENT_SIG] Disconnecting
[14:18:56] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:18:56] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[14:18:56] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:18:56] In cleanupPeer
[14:18:56] In cleanupPeer
[14:18:56] [LIFECYCLE] WebRTC audio disabled
[14:18:56] [LIFECYCLE] AVAudioSession deactivated
[14:18:56] [LIFECYCLE] All connections stopped
[14:18:56] [CLIENT_SIG] WebSocket closed with code 1001
[14:18:56] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:18:56] [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/}
[14:18:56] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:18:56] [SERVER] Stopped reconnect polling
[14:18:56] Will request stop of video 0
[14:18:56] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[14:18:56] [WS] Query connection error - cleaning up all agent connections and views
[14:18:56] Will request stop of video 0
[14:18:56] [WS] Connection failed: cancelled
[14:18:56] [WS] Query connection failed - cleaning up all agent connections and views
[14:18:56] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:56] [PIP] ✅ All tracks removed for connection 0
[14:18:56] [CLEANUP] ========================================
[14:18:56] [CLEANUP] Cleaning up all agent connections and views
[14:18:56] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:56] [CLEANUP] Stopped and removed 0 video connections
[14:18:56] [CLEANUP] Removed 0 video views
[14:18:56] [CLEANUP] Removed 0 feed scroll views
[14:18:56] [CLEANUP] Removed 0 status labels
[14:18:56] [CLEANUP] Reset agent query state
[14:18:56] [CLEANUP] Updated page indicator
[14:18:56] [CLEANUP] Rebuilt video layout
[14:18:56] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:56] [CLEANUP] ========================================
[14:18:56] [SERVER] Skipping reconnect polling - app is in background
[14:18:56] [PIP] Removing 0 tracks from PiP for connection 0
[14:18:56] [PIP] ✅ All tracks removed for connection 0
[14:18:56] [WS] URLSession invalidated successfully
[14:18:56] [CLEANUP] ========================================
[14:18:56] [CLEANUP] Cleaning up all agent connections and views
[14:18:56] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:18:56] [CLEANUP] Stopped and removed 0 video connections
[14:18:56] [CLEANUP] Removed 0 video views
[14:18:56] [CLEANUP] Removed 0 feed scroll views
[14:18:56] [CLEANUP] Removed 0 status labels
[14:18:56] [CLEANUP] Reset agent query state
[14:18:56] [CLEANUP] Updated page indicator
[14:18:56] [CLEANUP] Rebuilt video layout
[14:18:56] [CLEANUP] ✅ All agent connections and views cleaned up
[14:18:56] [CLEANUP] ========================================
[14:18:56] [SERVER] Skipping reconnect polling - app is in background
[14:19:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:13] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:13] [SECURITY] Timeout check: elapsed=16.80958080291748s, timeout=300.0s
[14:19:13] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:19:13] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:19:13] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:19:13] [SECURITY] Within timeout - cleared background flag
[14:19:13] [LIFECYCLE] App entering foreground - restoring connections
[14:19:13] [UPLOAD_RETRY] No pending uploads to retry
[14:19:13] [LIFECYCLE] Merged 910 reactions from local DB
[14:19:13] [LIFECYCLE] WebRTC audio re-enabled
[14:19:13] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:19:13] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:19:13] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:19:13] [VIEWER] Reconnecting after background - querying agents
[14:19:13] [UNSENT_RETRY] Checking for unsent messages...
[14:19:13] [PENDING_UPLOAD] Total pending upload messages: 0
[14:19:13] [UNSENT_RETRY] No unsent messages found
[14:19:13] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:19:13] [PUSH] handlePollEventsNotification userInfo: [:]
[14:19:13] [PUSH] No message_id in userInfo
[14:19:13] [PUSH] No operation_type in userInfo
[14:19:13] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:19:13] [FAST_REFRESH] Already have 68 messages - skipping local DB load
[14:19:13] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:19:13] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:19:13] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:19:13] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=68
[14:19:13] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18840
[14:19:13] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:13] HELLO → sent (cached token, role=query)
[14:19:13] [CLIENT_SIG] WebSocket opened
[14:19:13] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:19:13] [CLIENT_SIG] Connected! clientId=2MTLjpCIQBlAwz8C
[14:19:13] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:13] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:13] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:13] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:13] [CLEANUP] ========================================
[14:19:13] [CLEANUP] Cleaning up all agent connections and views
[14:19:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:13] [CLEANUP] Stopped and removed 0 video connections
[14:19:13] [CLEANUP] Removed 0 video views
[14:19:13] [CLEANUP] Removed 0 feed scroll views
[14:19:13] [CLEANUP] Removed 0 status labels
[14:19:13] [CLEANUP] Reset agent query state
[14:19:13] [CLEANUP] Updated page indicator
[14:19:13] [CLEANUP] Rebuilt video layout
[14:19:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:13] [CLEANUP] ========================================
[14:19:13] [SERVER] Starting reconnect polling (5s interval)
[14:19:13] [CLEANUP] ========================================
[14:19:13] [CLEANUP] Cleaning up all agent connections and views
[14:19:13] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:13] [CLEANUP] Stopped and removed 0 video connections
[14:19:13] [CLEANUP] Removed 0 video views
[14:19:13] [CLEANUP] Removed 0 feed scroll views
[14:19:13] [CLEANUP] Removed 0 status labels
[14:19:13] [CLEANUP] Reset agent query state
[14:19:13] [CLEANUP] Updated page indicator
[14:19:13] [CLEANUP] Rebuilt video layout
[14:19:13] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:13] [CLEANUP] ========================================
[14:19:13] [SERVER] Starting reconnect polling (5s interval)
[14:19:13] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:19:13] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:13] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:19:13] [INCREMENTAL_SYNC] ✅ No new messages
[14:19:13] [FAST_REFRESH] Incremental sync complete - 68 messages
[14:19:14] [COMBINED_FETCH] Loaded 7606 read receipts, 916 messages with reactions
[14:19:14] [FOREGROUND] Enriched 0 messages with readBy data from server
[14:19:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:19:14] [COMBINED_FETCH] Loaded 7606 read receipts, 916 messages with reactions
[14:19:14] [FAST_REFRESH] Enriched 68 messages with readBy data
[14:19:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[18773, 18774, 18775, 18776, 18777]
[14:19:14] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:14] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:15] HELLO → sent (cached token, role=query)
[14:19:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:15] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:15] [CLEANUP] ========================================
[14:19:15] [CLEANUP] Cleaning up all agent connections and views
[14:19:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:15] [CLEANUP] Stopped and removed 0 video connections
[14:19:15] [CLEANUP] Removed 0 video views
[14:19:15] [CLEANUP] Removed 0 feed scroll views
[14:19:15] [CLEANUP] Removed 0 status labels
[14:19:15] [CLEANUP] Reset agent query state
[14:19:15] [CLEANUP] Updated page indicator
[14:19:15] [CLEANUP] Rebuilt video layout
[14:19:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:15] [CLEANUP] ========================================
[14:19:15] [SERVER] Starting reconnect polling (5s interval)
[14:19:15] [CLEANUP] ========================================
[14:19:15] [CLEANUP] Cleaning up all agent connections and views
[14:19:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:15] [CLEANUP] Stopped and removed 0 video connections
[14:19:15] [CLEANUP] Removed 0 video views
[14:19:15] [CLEANUP] Removed 0 feed scroll views
[14:19:15] [CLEANUP] Removed 0 status labels
[14:19:15] [CLEANUP] Reset agent query state
[14:19:15] [CLEANUP] Updated page indicator
[14:19:15] [CLEANUP] Rebuilt video layout
[14:19:15] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:15] [CLEANUP] ========================================
[14:19:15] [SERVER] Starting reconnect polling (5s interval)
[14:19:16] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:16] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:17] HELLO → sent (cached token, role=query)
[14:19:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:17] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:17] [CLEANUP] ========================================
[14:19:17] [CLEANUP] Cleaning up all agent connections and views
[14:19:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:17] [CLEANUP] Stopped and removed 0 video connections
[14:19:17] [CLEANUP] Removed 0 video views
[14:19:17] [CLEANUP] Removed 0 feed scroll views
[14:19:17] [CLEANUP] Removed 0 status labels
[14:19:17] [CLEANUP] Reset agent query state
[14:19:17] [CLEANUP] Updated page indicator
[14:19:17] [CLEANUP] Rebuilt video layout
[14:19:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:17] [CLEANUP] ========================================
[14:19:17] [SERVER] Starting reconnect polling (5s interval)
[14:19:17] [CLEANUP] ========================================
[14:19:17] [CLEANUP] Cleaning up all agent connections and views
[14:19:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:17] [CLEANUP] Stopped and removed 0 video connections
[14:19:17] [CLEANUP] Removed 0 video views
[14:19:17] [CLEANUP] Removed 0 feed scroll views
[14:19:17] [CLEANUP] Removed 0 status labels
[14:19:17] [CLEANUP] Reset agent query state
[14:19:17] [CLEANUP] Updated page indicator
[14:19:17] [CLEANUP] Rebuilt video layout
[14:19:17] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:17] [CLEANUP] ========================================
[14:19:17] [SERVER] Starting reconnect polling (5s interval)
[14:19:18] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:18] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:18] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:18] HELLO → sent (cached token, role=query)
[14:19:18] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:18] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:18] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:18] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:18] [CLEANUP] ========================================
[14:19:18] [CLEANUP] Cleaning up all agent connections and views
[14:19:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:18] [CLEANUP] Stopped and removed 0 video connections
[14:19:18] [CLEANUP] Removed 0 video views
[14:19:18] [CLEANUP] Removed 0 feed scroll views
[14:19:18] [CLEANUP] Removed 0 status labels
[14:19:18] [CLEANUP] Reset agent query state
[14:19:18] [CLEANUP] Updated page indicator
[14:19:18] [CLEANUP] Rebuilt video layout
[14:19:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:18] [CLEANUP] ========================================
[14:19:18] [SERVER] Starting reconnect polling (5s interval)
[14:19:18] [CLEANUP] ========================================
[14:19:18] [CLEANUP] Cleaning up all agent connections and views
[14:19:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:18] [CLEANUP] Stopped and removed 0 video connections
[14:19:18] [CLEANUP] Removed 0 video views
[14:19:18] [CLEANUP] Removed 0 feed scroll views
[14:19:18] [CLEANUP] Removed 0 status labels
[14:19:18] [CLEANUP] Reset agent query state
[14:19:18] [CLEANUP] Updated page indicator
[14:19:18] [CLEANUP] Rebuilt video layout
[14:19:18] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:18] [CLEANUP] ========================================
[14:19:18] [SERVER] Starting reconnect polling (5s interval)
[14:19:20] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:20] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:20] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:20] HELLO → sent (cached token, role=query)
[14:19:20] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:20] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:20] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:20] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:20] [CLEANUP] ========================================
[14:19:20] [CLEANUP] Cleaning up all agent connections and views
[14:19:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:20] [CLEANUP] Stopped and removed 0 video connections
[14:19:20] [CLEANUP] Removed 0 video views
[14:19:20] [CLEANUP] Removed 0 feed scroll views
[14:19:20] [CLEANUP] Removed 0 status labels
[14:19:20] [CLEANUP] Reset agent query state
[14:19:20] [CLEANUP] Updated page indicator
[14:19:20] [CLEANUP] Rebuilt video layout
[14:19:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:20] [CLEANUP] ========================================
[14:19:20] [SERVER] Starting reconnect polling (5s interval)
[14:19:20] [CLEANUP] ========================================
[14:19:20] [CLEANUP] Cleaning up all agent connections and views
[14:19:20] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:20] [CLEANUP] Stopped and removed 0 video connections
[14:19:20] [CLEANUP] Removed 0 video views
[14:19:20] [CLEANUP] Removed 0 feed scroll views
[14:19:20] [CLEANUP] Removed 0 status labels
[14:19:20] [CLEANUP] Reset agent query state
[14:19:20] [CLEANUP] Updated page indicator
[14:19:20] [CLEANUP] Rebuilt video layout
[14:19:20] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:20] [CLEANUP] ========================================
[14:19:20] [SERVER] Starting reconnect polling (5s interval)
[14:19:22] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:22] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:22] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:22] HELLO → sent (cached token, role=query)
[14:19:22] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:22] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:22] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:22] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:22] [CLEANUP] ========================================
[14:19:22] [CLEANUP] Cleaning up all agent connections and views
[14:19:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:22] [CLEANUP] Stopped and removed 0 video connections
[14:19:22] [CLEANUP] Removed 0 video views
[14:19:22] [CLEANUP] Removed 0 feed scroll views
[14:19:22] [CLEANUP] Removed 0 status labels
[14:19:22] [CLEANUP] Reset agent query state
[14:19:22] [CLEANUP] Updated page indicator
[14:19:22] [CLEANUP] Rebuilt video layout
[14:19:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:22] [CLEANUP] ========================================
[14:19:22] [SERVER] Starting reconnect polling (5s interval)
[14:19:22] [CLEANUP] ========================================
[14:19:22] [CLEANUP] Cleaning up all agent connections and views
[14:19:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:22] [CLEANUP] Stopped and removed 0 video connections
[14:19:22] [CLEANUP] Removed 0 video views
[14:19:22] [CLEANUP] Removed 0 feed scroll views
[14:19:22] [CLEANUP] Removed 0 status labels
[14:19:22] [CLEANUP] Reset agent query state
[14:19:22] [CLEANUP] Updated page indicator
[14:19:22] [CLEANUP] Rebuilt video layout
[14:19:22] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:22] [CLEANUP] ========================================
[14:19:22] [SERVER] Starting reconnect polling (5s interval)
[14:19:23] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[14:19:23] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=68, isReloading=false
[14:19:23] [SEND_MESSAGE] ✅ Added optimistic message id=-12 to arrays, newMsgCount=69
[14:19:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[-12, 18840, 18839, 18838, 18837]
[14:19:23] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[14:19:23] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[14:19:24] [LIFECYCLE] App resigning active - cleared crash flag
[14:19:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:24] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:24] HELLO → sent (cached token, role=query)
[14:19:24] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:24] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:24] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:24] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:24] [CLEANUP] ========================================
[14:19:24] [CLEANUP] Cleaning up all agent connections and views
[14:19:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:24] [CLEANUP] Stopped and removed 0 video connections
[14:19:24] [CLEANUP] Removed 0 video views
[14:19:24] [CLEANUP] Removed 0 feed scroll views
[14:19:24] [CLEANUP] Removed 0 status labels
[14:19:24] [CLEANUP] Reset agent query state
[14:19:24] [CLEANUP] Updated page indicator
[14:19:24] [CLEANUP] Rebuilt video layout
[14:19:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:24] [CLEANUP] ========================================
[14:19:24] [SERVER] Starting reconnect polling (5s interval)
[14:19:24] [CLEANUP] ========================================
[14:19:24] [CLEANUP] Cleaning up all agent connections and views
[14:19:24] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:24] [CLEANUP] Stopped and removed 0 video connections
[14:19:24] [CLEANUP] Removed 0 video views
[14:19:24] [CLEANUP] Removed 0 feed scroll views
[14:19:24] [CLEANUP] Removed 0 status labels
[14:19:24] [CLEANUP] Reset agent query state
[14:19:24] [CLEANUP] Updated page indicator
[14:19:24] [CLEANUP] Rebuilt video layout
[14:19:24] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:24] [CLEANUP] ========================================
[14:19:24] [SERVER] Starting reconnect polling (5s interval)
[14:19:24] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:19:24] [SECURITY] Saved background timestamp
[14:19:24] [LIFECYCLE] App entering background - cleared crash flag
[14:19:24] [CLIENT_SIG] Disconnecting
[14:19:24] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:19:24] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[14:19:24] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:19:24] In cleanupPeer
[14:19:24] In cleanupPeer
[14:19:24] [LIFECYCLE] WebRTC audio disabled
[14:19:24] [LIFECYCLE] AVAudioSession deactivated
[14:19:24] [LIFECYCLE] All connections stopped
[14:19:25] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18841,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 13:19:23"}
[14:19:25] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 13:19:23, "message_id": 18841, "message_type": 0, "ok": 1, "file_name": , "session_id": ILUIWU]
[14:19:25] [DB_UPGRADE] Upgrading message ID: -12 → 18841, preserveOriginalDate=false
[14:19:25] [DB_UPGRADE] ✅ Upgraded -12 → 18841 with send_status=0, 1 row(s) affected
[14:19:25] [CLIENT_SIG] WebSocket closed with code 1001
[14:19:25] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[14:19:25] [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/}
[14:19:25] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[14:19:25] [SERVER] Stopped reconnect polling
[14:19:25] [WS] URLSession invalidated successfully
[14:19:25] Will request stop of video 0
[14:19:25] Will request stop of video 0
[14:19:25] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -12 → 18841
[14:19:25] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -12 → 18841
[14:19:25] ReloadData 9
[14:19:25] [PIP] Removing 0 tracks from PiP for connection 0
[14:19:25] [PIP] ✅ All tracks removed for connection 0
[14:19:25] [PIP] Removing 0 tracks from PiP for connection 0
[14:19:25] [PIP] ✅ All tracks removed for connection 0
[14:19:25] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:25] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:45] [SECURITY] Timeout check: elapsed=20.778232097625732s, timeout=300.0s
[14:19:45] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:19:45] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:45] [LIFECYCLE] App entering foreground - restoring connections
[14:19:45] [UPLOAD_RETRY] No pending uploads to retry
[14:19:45] [LIFECYCLE] Merged 910 reactions from local DB
[14:19:45] [LIFECYCLE] WebRTC audio re-enabled
[14:19:45] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:19:45] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:19:45] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:19:45] [VIEWER] Reconnecting after background - querying agents
[14:19:45] [UNSENT_RETRY] Checking for unsent messages...
[14:19:45] [PENDING_UPLOAD] Total pending upload messages: 0
[14:19:45] [UNSENT_RETRY] No unsent messages found
[14:19:45] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:19:45] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[14:19:45] [WS] Query connection error - cleaning up all agent connections and views
[14:19:45] [WS] Connection failed: The request timed out.
[14:19:45] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:45] [CLEANUP] ========================================
[14:19:45] [CLEANUP] Cleaning up all agent connections and views
[14:19:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:45] [CLEANUP] Stopped and removed 0 video connections
[14:19:45] [CLEANUP] Removed 0 video views
[14:19:45] [CLEANUP] Removed 0 feed scroll views
[14:19:45] [CLEANUP] Removed 0 status labels
[14:19:45] [CLEANUP] Reset agent query state
[14:19:45] [CLEANUP] Updated page indicator
[14:19:45] [CLEANUP] Rebuilt video layout
[14:19:45] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:45] [CLEANUP] ========================================
[14:19:45] [SERVER] Starting reconnect polling (5s interval)
[14:19:45] [CLEANUP] ========================================
[14:19:45] [CLEANUP] Cleaning up all agent connections and views
[14:19:45] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:45] [CLEANUP] Stopped and removed 0 video connections
[14:19:45] [CLEANUP] Removed 0 video views
[14:19:45] [CLEANUP] Removed 0 feed scroll views
[14:19:45] [CLEANUP] Removed 0 status labels
[14:19:45] [CLEANUP] Reset agent query state
[14:19:45] [CLEANUP] Updated page indicator
[14:19:45] [CLEANUP] Rebuilt video layout
[14:19:45] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:45] [CLEANUP] ========================================
[14:19:45] [SERVER] Starting reconnect polling (5s interval)
[14:19:45] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[18841, 18840, 18839, 18838, 18837]
[14:19:45] [CLIENT_SIG] WebSocket opened
[14:19:45] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:19:45] [CLIENT_SIG] Connected! clientId=NQUJbMjp7pjEwZF5
[14:19:45] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:19:45] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:46] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[14:19:46] [SECURITY] Within timeout - cleared background flag
[14:19:46] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:19:46] [PUSH] handlePollEventsNotification userInfo: [:]
[14:19:46] [PUSH] No message_id in userInfo
[14:19:46] [PUSH] No operation_type in userInfo
[14:19:46] [FAST_REFRESH] Evolution disabled - performing incremental sync
[14:19:46] [FAST_REFRESH] Already have 69 messages - skipping local DB load
[14:19:46] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[14:19:46] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[14:19:46] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=69
[14:19:46] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18841
[14:19:46] [INCREMENTAL_SYNC] ✅ No new messages
[14:19:46] [FAST_REFRESH] Incremental sync complete - 69 messages
[14:19:46] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[18841, 18840, 18839, 18838, 18837]
[14:19:46] [COMBINED_FETCH] Loaded 7607 read receipts, 916 messages with reactions
[14:19:46] [FOREGROUND] Enriched 0 messages with readBy data from server
[14:19:46] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[18841, 18840, 18839, 18838, 18837]
[14:19:46] [COMBINED_FETCH] Loaded 7607 read receipts, 916 messages with reactions
[14:19:46] [FAST_REFRESH] Enriched 69 messages with readBy data
[14:19:46] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[18841, 18840, 18839, 18838, 18837]
[14:19:47] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:47] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:47] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:47] HELLO → sent (cached token, role=query)
[14:19:47] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:47] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:47] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:47] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:47] [CLEANUP] ========================================
[14:19:47] [CLEANUP] Cleaning up all agent connections and views
[14:19:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:47] [CLEANUP] Stopped and removed 0 video connections
[14:19:47] [CLEANUP] Removed 0 video views
[14:19:47] [CLEANUP] Removed 0 feed scroll views
[14:19:47] [CLEANUP] Removed 0 status labels
[14:19:47] [CLEANUP] Reset agent query state
[14:19:47] [CLEANUP] Updated page indicator
[14:19:47] [CLEANUP] Rebuilt video layout
[14:19:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:47] [CLEANUP] ========================================
[14:19:47] [SERVER] Starting reconnect polling (5s interval)
[14:19:47] [CLEANUP] ========================================
[14:19:47] [CLEANUP] Cleaning up all agent connections and views
[14:19:47] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:47] [CLEANUP] Stopped and removed 0 video connections
[14:19:47] [CLEANUP] Removed 0 video views
[14:19:47] [CLEANUP] Removed 0 feed scroll views
[14:19:47] [CLEANUP] Removed 0 status labels
[14:19:47] [CLEANUP] Reset agent query state
[14:19:47] [CLEANUP] Updated page indicator
[14:19:47] [CLEANUP] Rebuilt video layout
[14:19:47] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:47] [CLEANUP] ========================================
[14:19:47] [SERVER] Starting reconnect polling (5s interval)
[14:19:49] [LOG] Long press on chat icon detected! Triggering log upload...
[14:19:49] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:49] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:49] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:49] HELLO → sent (cached token, role=query)
[14:19:49] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:49] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:49] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:49] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:49] [CLEANUP] ========================================
[14:19:49] [CLEANUP] Cleaning up all agent connections and views
[14:19:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:49] [CLEANUP] Stopped and removed 0 video connections
[14:19:49] [CLEANUP] Removed 0 video views
[14:19:49] [CLEANUP] Removed 0 feed scroll views
[14:19:49] [CLEANUP] Removed 0 status labels
[14:19:49] [CLEANUP] Reset agent query state
[14:19:49] [CLEANUP] Updated page indicator
[14:19:49] [CLEANUP] Rebuilt video layout
[14:19:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:49] [CLEANUP] ========================================
[14:19:49] [SERVER] Starting reconnect polling (5s interval)
[14:19:49] [CLEANUP] ========================================
[14:19:49] [CLEANUP] Cleaning up all agent connections and views
[14:19:49] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:49] [CLEANUP] Stopped and removed 0 video connections
[14:19:49] [CLEANUP] Removed 0 video views
[14:19:49] [CLEANUP] Removed 0 feed scroll views
[14:19:49] [CLEANUP] Removed 0 status labels
[14:19:49] [CLEANUP] Reset agent query state
[14:19:49] [CLEANUP] Updated page indicator
[14:19:49] [CLEANUP] Rebuilt video layout
[14:19:49] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:49] [CLEANUP] ========================================
[14:19:49] [SERVER] Starting reconnect polling (5s interval)
[14:19:50] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:50] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:51] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:51] HELLO → sent (cached token, role=query)
[14:19:51] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[14:19:51] [WS] Query connection failed - cleaning up all agent connections and views
[14:19:51] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[14:19:51] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[14:19:51] [CLEANUP] ========================================
[14:19:51] [CLEANUP] Cleaning up all agent connections and views
[14:19:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:51] [CLEANUP] Stopped and removed 0 video connections
[14:19:51] [CLEANUP] Removed 0 video views
[14:19:51] [CLEANUP] Removed 0 feed scroll views
[14:19:51] [CLEANUP] Removed 0 status labels
[14:19:51] [CLEANUP] Reset agent query state
[14:19:51] [CLEANUP] Updated page indicator
[14:19:51] [CLEANUP] Rebuilt video layout
[14:19:51] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:51] [CLEANUP] ========================================
[14:19:51] [SERVER] Starting reconnect polling (5s interval)
[14:19:51] [CLEANUP] ========================================
[14:19:51] [CLEANUP] Cleaning up all agent connections and views
[14:19:51] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[14:19:51] [CLEANUP] Stopped and removed 0 video connections
[14:19:51] [CLEANUP] Removed 0 video views
[14:19:51] [CLEANUP] Removed 0 feed scroll views
[14:19:51] [CLEANUP] Removed 0 status labels
[14:19:51] [CLEANUP] Reset agent query state
[14:19:51] [CLEANUP] Updated page indicator
[14:19:51] [CLEANUP] Rebuilt video layout
[14:19:51] [CLEANUP] ✅ All agent connections and views cleaned up
[14:19:51] [CLEANUP] ========================================
[14:19:51] [SERVER] Starting reconnect polling (5s interval)
[14:19:52] [LIFECYCLE] App resigning active - cleared crash flag
[14:19:52] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:52] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:53] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[14:19:53] [SECURITY] Saved background timestamp
[14:19:53] [LIFECYCLE] App entering background - cleared crash flag
[14:19:53] [CLIENT_SIG] Disconnecting
[14:19:53] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[14:19:53] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[14:19:53] [WS] Canceling WebSocket for query connection to iosILUIWU
[14:19:53] In cleanupPeer
[14:19:53] In cleanupPeer
[14:19:53] [LIFECYCLE] WebRTC audio disabled
[14:19:54] [CRASH] No crash detected
[14:19:54] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[14:19:54] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[14:19:54] [GIPHY] SDK not available - using REST API fallback
[14:19:54] [BACKGROUND] Background fetch enabled
[14:19:54] [CLEANUP] No old timer messages to delete
[14:19:54] [SECURITY] Initial launch - within timeout (1.3814618587493896s < 300.0s)
[14:19:54] [AUTH] Starting PIN authentication
[14:19:54] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[14:19:54] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:54] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[14:19:54] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[14:19:54] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[14:19:54] [USER] ✅ User registered successfully
[14:19:54] [PUSH] User registration after token update: success
[14:19:54] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[14:19:54] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[14:19:54] [CLIENT_SIG] WebSocket opened
[14:19:54] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[14:19:54] [CLIENT_SIG] Connected! clientId=tW7tsknGRP3ahYRL
[14:19:54] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[14:19:54] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[14:19:54] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18841)...
[14:19:54] [PRELOAD] No messages or parse error
[14:19:55] [PIN_AUTH] Correct PIN
[14:19:55] [SECURITY] Restored real session: ILUIWU
[14:19:55] [SECURITY] Restored real session: ILUIWU
[14:19:56] [SECURITY] Saved real session: ILUIWU
[14:19:56] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[14:19:56] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[14:19:56] Documents Directory: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents
[14:19:56] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[14:19:56] [THEME] Applying current theme
[14:19:56] [CHAT] Applied day theme (mode: day)
[14:19:56] [SECURITY] Saved real session: ILUIWU
[14:19:56] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[14:19:56] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[14:19:56] [NETWORK] Network monitor started
[14:19:56] [NETWORK] Status changed: connected
[14:19:56] Did transition
[14:19:56] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[14:19:56] [VIEWER] Screen lock enabled - normal idle behavior
[14:19:56] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[14:19:56] [VCC] ========== VideoConnectionClass INIT ==========
[14:19:56] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[14:19:56] [DATA AUDIO] ========== setupWebRTC() START ==========
[14:19:56] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[14:19:56] [DATA AUDIO] Creating encoder/decoder factories...
[14:19:56] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[14:19:56] [CODEC] Viewer selected encoder: AV1 (best quality)
[14:19:56] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[14:19:56] [DATA AUDIO] ✅ Factory created
[14:19:56] [DATA AUDIO] RTCAudioSession locked
[14:19:56] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[14:19:56] [DATA AUDIO] RTCAudioSession unlocked
[14:19:56] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[14:19: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"]
[14:19:56] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[14:19:56] [WS] Opening session at ws://crivello.dyndns.org:8081/
[14:19:56] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[14:19:56] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[14:19:56] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[14:19:56] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[14:19:56] Did transition
[14:19:56] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[14:19:56] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[14:19:56] [CHUNK] Merged 910 reactions synchronously
[14:19:56] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[14:19:56] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[14:19:56] [MIGRATION] No messages need sender_name backfill
[14:19:56] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[14:19:56] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[14:19:56] [GALLERY_DB] Raw datesent for msg 18822: '2026-01-23 12:56:23'
[14:19:56] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35'
[14:19:56] [USER] ✅ User registered successfully
[14:19:56] [USER] User registration successful
[14:19:56] [GALLERY_DB] ✅ Loaded 490 media messages
[14:19:56] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18841
[14:19:56] [INCREMENTAL_SYNC] ✅ No new messages
[14:19:56] [GALLERY] Filtered 490 -> 450 (only with local thumbnails)
[14:19:56] [GALLERY] First 5 after sort (newest first):
[14:19:56] [GALLERY] 0: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[14:19:56] [GALLERY] 1: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[14:19:56] [GALLERY] 2: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[14:19:56] [GALLERY] 3: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg
[14:19:56] [GALLERY] 4: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg
[14:19:56] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[14:19:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18792, 18793, 18794, 18795, 18796]
[14:19:56] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[14:19:56] [SERVER] Starting reconnect polling (5s interval)
[14:19:56] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[14:19:56] [ICONS] Offset applied: -14.6
[14:19:56] [ICONS] New left margin: 11.2, New right margin: 11.3
[14:19:56] [ICONS] Chat center: (31.2, 87.0)
[14:19:56] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[14:19:56] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[14:19:56] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[14:19:56] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[14:19:56] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[14:19:56] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[14:19:56] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[14:19:56] [ICONS] Screen width: 440.0
[14:19:56] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[14:19:56] [UNSENT_RETRY] Checking for unsent messages...
[14:19:56] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[14:19:56] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[14:19:56] [UPLOAD_RECOVERY] Session: ILUIWU
[14:19:56] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[14:19:56] [UPLOAD_RECOVERY] Checking recent media messages on server...
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18824, file=0d08f6fe6141897c.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18822, file=aa11fb87a250b06a.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18774, file=04b759bdc230eb2c.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18747, file=17758c02b0ac471a.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18661, file=fca62dfbaa62895a.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18622, file=87d86493734492b6.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18578, file=6987f51080ccbfa1.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18569, file=61efa5413baa75e8.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18547, file=bb6aaa84326f734e.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18510, file=b3cad86fff0afa3d.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18507, file=e8d737bd34c51935.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18501, file=74c06e97f0a4db49.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18489, file=747d4f2026039fc3.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18428, file=f36a462089f1685a.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18409, file=f733dc0a9f704916.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18407, file=7494d317859e38fb.jpg, upload_status=complete
[14:19:56] [UPLOAD_RECOVERY] Verifying 16 media files exist on server...
[14:19:56] [PENDING_UPLOAD] Total pending upload messages: 0
[14:19:56] [UNSENT_RETRY] No unsent messages found
[14:19:56] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[14:19:56] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[14:19:56] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[14:19:56] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[14:19:56] [UPLOAD_RECOVERY] ✅ All media files verified on server
[14:19:56] new_session POST ok: token len=157
[14:19:56] HELLO → sent (fetched token, role=query)
[14:19:56] [SIG] hello_ok received for query connection - ready to query agents
[14:19:56] [SIG] get_agents request sent for sessionId=ILUIWU
[14:19:56] [SIG] get_agents request sent for sessionId=iosILUIWU
[14:19:56] [SERVER] Stopped reconnect polling
[14:19:56] [SIG] agents_list received: []
[14:19:56] [SIG] agents_list received: []
[14:19:56] [COMBINED_FETCH] Loaded 7607 read receipts, 916 messages with reactions
[14:19:56] [READBY_ENRICH] Enriched 50 messages with readBy data
[14:19:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18792, 18793, 18794, 18795, 18796]
[14:19:58] [LOG] Long press on chat icon detected! Triggering log upload...