← Back to list | Download | 2026-01-23-23-25-send-last-Laurent.log (652,033 bytes)
=== 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;
}]
    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]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    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;
}]
    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;
}]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18806]
    "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}
    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]
    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]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18809, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18810, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}]
    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;
}]
    "LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>}
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18812, 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 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;
}]
    "LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>}
    "content-available" = 1;
}]
    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;
}]
    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]
    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]
    "content-available" = 1;
}, AnyHashable("message_id"): 18815, AnyHashable("session_id"): ILUIWU]
    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;
}]
    "content-available" = 1;
}, AnyHashable("message_id"): 18817, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}]
    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]
    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]
    "content-available" = 1;
}, AnyHashable("message_id"): 18818]
    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]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    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;
}]
    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;
}]
    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;
}]
    "content-available" = 1;
}]
    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]
    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]
    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;
}]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18824]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18825, 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 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]
    "content-available" = 1;
}]
    alert =     {
        body = "";
        title = StreamCam;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 18828, AnyHashable("session_id"): ILUIWU]
    alert =     {
        body = "";
        title = StreamCam;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 2, AnyHashable("message_id"): 18828, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18828, AnyHashable("operation_type"): 3]
    alert =     {
        body = "";
        title = StreamCam;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18828, AnyHashable("operation_type"): 2, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18829]
    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]
    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]
    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]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18830]
    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;
}]
    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;
}]
    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;
}]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18831, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}, AnyHashable("message_id"): 18832, 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("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;
}]
    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]
    "content-available" = 1;
}, AnyHashable("message_id"): 18833]
    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;
}]
    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;
}]
    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;
}]
    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]
    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]
    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;
}]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18836]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18834]
    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]
    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]
    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]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18838]
    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;
}]
    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]
    "content-available" = 1;
}, AnyHashable("message_id"): 18839]
    datesent = "2026-01-23 13:22:02";
    "file_name" = "";
    message = "What\U2019s yours?";
    "message_id" = 18843;
    "message_type" = 0;
    "prev_session_message_id" = 18842;
    "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("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 2;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18843, AnyHashable("message_data"): {
    datesent = "2026-01-23 13:22:02";
    "file_name" = "";
    message = "What\U2019s yours?";
    "message_id" = 18843;
    "message_type" = 0;
    "prev_session_message_id" = 18842;
    "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;
}]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:02:31";
    "file_name" = "";
    message = "Wow, 10 years???! Really \Ud83d\Ude33\Ud83d\Ude33\Ud83d\Ude33\Ud83d\Ude33";
    "message_id" = 18845;
    "message_type" = 0;
    "prev_session_message_id" = 18844;
    "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("message_data"): {
    datesent = "2026-01-23 14:02:31";
    "file_name" = "";
    message = "Wow, 10 years???! Really \Ud83d\Ude33\Ud83d\Ude33\Ud83d\Ude33\Ud83d\Ude33";
    "message_id" = 18845;
    "message_type" = 0;
    "prev_session_message_id" = 18844;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18845]
    "content-available" = 1;
}, AnyHashable("message_id"): 18845]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18842]
    datesent = "2026-01-23 14:02:40";
    "file_name" = "";
    message = "You deserve more!";
    "message_id" = 18846;
    "message_type" = 0;
    "prev_session_message_id" = 18845;
    "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-23 14:02:40";
    "file_name" = "";
    message = "You deserve more!";
    "message_id" = 18846;
    "message_type" = 0;
    "prev_session_message_id" = 18845;
    "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-23 14:02:40";
    "file_name" = "";
    message = "You deserve more!";
    "message_id" = 18846;
    "message_type" = 0;
    "prev_session_message_id" = 18845;
    "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"): 18846]
    "content-available" = 1;
}, AnyHashable("message_id"): 18846, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 14:02:53";
    "file_name" = "";
    message = Baby;
    "message_id" = 18847;
    "message_type" = 0;
    "prev_session_message_id" = 18846;
    "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"): 18847]
    datesent = "2026-01-23 14:02:53";
    "file_name" = "";
    message = Baby;
    "message_id" = 18847;
    "message_type" = 0;
    "prev_session_message_id" = 18846;
    "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"): 18847]
    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 14:02:53";
    "file_name" = "";
    message = Baby;
    "message_id" = 18847;
    "message_type" = 0;
    "prev_session_message_id" = 18846;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18847, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18847, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 14:02:59";
    "file_name" = "";
    message = "An order for you";
    "message_id" = 18849;
    "message_type" = 0;
    "prev_session_message_id" = 18848;
    "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 = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18849]
    datesent = "2026-01-23 14:02:59";
    "file_name" = "";
    message = "An order for you";
    "message_id" = 18849;
    "message_type" = 0;
    "prev_session_message_id" = 18848;
    "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 = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18849]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18849, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:02:59";
    "file_name" = "";
    message = "An order for you";
    "message_id" = 18849;
    "message_type" = 0;
    "prev_session_message_id" = 18848;
    "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"): 18849]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18848]
    datesent = "2026-01-23 14:03:15";
    "file_name" = "";
    message = "I want you to come tonight!";
    "message_id" = 18850;
    "message_type" = 0;
    "prev_session_message_id" = 18849;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18850, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    datesent = "2026-01-23 14:03:15";
    "file_name" = "";
    message = "I want you to come tonight!";
    "message_id" = 18850;
    "message_type" = 0;
    "prev_session_message_id" = 18849;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18850, 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("operation_type"): 0, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:03:15";
    "file_name" = "";
    message = "I want you to come tonight!";
    "message_id" = 18850;
    "message_type" = 0;
    "prev_session_message_id" = 18849;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18850, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("message_id"): 18850, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 14:03:25";
    "file_name" = "";
    message = "\Ud83e\Udd7a\Ud83e\Udd7a\Ud83e\Udd7a";
    "message_id" = 18851;
    "message_type" = 0;
    "prev_session_message_id" = 18850;
    "replied_message" = "Yeah baby. But blocked 8 years by Amar and Natascia.";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18848;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18851, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0]
    datesent = "2026-01-23 14:03:25";
    "file_name" = "";
    message = "\Ud83e\Udd7a\Ud83e\Udd7a\Ud83e\Udd7a";
    "message_id" = 18851;
    "message_type" = 0;
    "prev_session_message_id" = 18850;
    "replied_message" = "Yeah baby. But blocked 8 years by Amar and Natascia.";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18848;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18851, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0]
    datesent = "2026-01-23 14:03:25";
    "file_name" = "";
    message = "\Ud83e\Udd7a\Ud83e\Udd7a\Ud83e\Udd7a";
    "message_id" = 18851;
    "message_type" = 0;
    "prev_session_message_id" = 18850;
    "replied_message" = "Yeah baby. But blocked 8 years by Amar and Natascia.";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18848;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18851, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18853, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18854, AnyHashable("session_id"): ILUIWU]
    "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-23 14:04:18";
    "file_name" = "";
    message = "I want you to come! There is no but !";
    "message_id" = 18856;
    "message_type" = 0;
    "prev_session_message_id" = 18855;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18856, AnyHashable("operation_type"): 0]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18856, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:04:18";
    "file_name" = "";
    message = "I want you to come! There is no but !";
    "message_id" = 18856;
    "message_type" = 0;
    "prev_session_message_id" = 18855;
    "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"): 18856, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:04:26";
    "file_name" = "";
    message = "I will";
    "message_id" = 18857;
    "message_type" = 0;
    "prev_session_message_id" = 18856;
    "replied_message" = "You can me suffer much more";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18854;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18857, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:04:26";
    "file_name" = "";
    message = "I will";
    "message_id" = 18857;
    "message_type" = 0;
    "prev_session_message_id" = 18856;
    "replied_message" = "You can me suffer much more";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18854;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18857, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:04:26";
    "file_name" = "";
    message = "I will";
    "message_id" = 18857;
    "message_type" = 0;
    "prev_session_message_id" = 18856;
    "replied_message" = "You can me suffer much more";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18854;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18857, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, 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"): 18858, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:04:47";
    "file_name" = "";
    message = "But this is what I want right now";
    "message_id" = 18858;
    "message_type" = 0;
    "prev_session_message_id" = 18857;
    "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("message_id"): 18858, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:04:47";
    "file_name" = "";
    message = "But this is what I want right now";
    "message_id" = 18858;
    "message_type" = 0;
    "prev_session_message_id" = 18857;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}]
    datesent = "2026-01-23 14:04:47";
    "file_name" = "";
    message = "But this is what I want right now";
    "message_id" = 18858;
    "message_type" = 0;
    "prev_session_message_id" = 18857;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18858, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18858]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:12:56";
    "file_name" = "";
    message = "You have to think about me for sure \Ud83d\Ude0f\Ud83d\Ude09";
    "message_id" = 18860;
    "message_type" = 0;
    "prev_session_message_id" = 18859;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18860]
    "content-available" = 1;
}, AnyHashable("message_id"): 18860]
    datesent = "2026-01-23 14:13:23";
    "file_name" = "";
    message = "But it doesn\U2019t matter with her or alone. You decide !";
    "message_id" = 18861;
    "message_type" = 0;
    "prev_session_message_id" = 18860;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18861, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    datesent = "2026-01-23 14:13:23";
    "file_name" = "";
    message = "But it doesn\U2019t matter with her or alone. You decide !";
    "message_id" = 18861;
    "message_type" = 0;
    "prev_session_message_id" = 18860;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18861, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, 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_data"): {
    datesent = "2026-01-23 14:13:23";
    "file_name" = "";
    message = "But it doesn\U2019t matter with her or alone. You decide !";
    "message_id" = 18861;
    "message_type" = 0;
    "prev_session_message_id" = 18860;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18861]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18861]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("message_id"): 18859, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18863]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18865]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18865,"event_type":2}
    "content-available" = 1;
}]
    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"): 18866, 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"): 18866, AnyHashable("operation_type"): 0]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18866]
    datesent = "2026-01-23 14:43:44";
    "file_name" = "";
    message = "IWU2 my looooove\U2665\Ufe0f";
    "message_id" = 18867;
    "message_type" = 0;
    "prev_session_message_id" = 18866;
    "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"): 18867, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:43:44";
    "file_name" = "";
    message = "IWU2 my looooove\U2665\Ufe0f";
    "message_id" = 18867;
    "message_type" = 0;
    "prev_session_message_id" = 18866;
    "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"): 18867, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18867, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:43:44";
    "file_name" = "";
    message = "IWU2 my looooove\U2665\Ufe0f";
    "message_id" = 18867;
    "message_type" = 0;
    "prev_session_message_id" = 18866;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}]
    "content-available" = 1;
}]
    datesent = "2026-01-23 14:44:19";
    "file_name" = "";
    message = "Dinner at swiss with melis\Ud83d\Ude43";
    "message_id" = 18869;
    "message_type" = 0;
    "prev_session_message_id" = 18868;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18869, AnyHashable("operation_type"): 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("operation_type"): 3]
    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-23 14:44:28";
    "file_name" = "";
    message = "You saw on my agenda \Ud83e\Udd2d";
    "message_id" = 18870;
    "message_type" = 0;
    "prev_session_message_id" = 18869;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18870]
    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-23 14:44:28";
    "file_name" = "";
    message = "You saw on my agenda \Ud83e\Udd2d";
    "message_id" = 18870;
    "message_type" = 0;
    "prev_session_message_id" = 18869;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18870]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18870, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:44:28";
    "file_name" = "";
    message = "You saw on my agenda \Ud83e\Udd2d";
    "message_id" = 18870;
    "message_type" = 0;
    "prev_session_message_id" = 18869;
    "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"): 18870, AnyHashable("operation_type"): 3]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("message_id"): 18872]
    "content-available" = 1;
}, AnyHashable("message_id"): 18873, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18873, AnyHashable("session_id"): ILUIWU]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18873, AnyHashable("session_id"): ILUIWU]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18873, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
    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 14:46:03";
    "file_name" = "";
    message = "\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
    "message_id" = 18877;
    "message_type" = 0;
    "prev_session_message_id" = 18876;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18877]
    datesent = "2026-01-23 14:46:03";
    "file_name" = "";
    message = "\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
    "message_id" = 18877;
    "message_type" = 0;
    "prev_session_message_id" = 18876;
    "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]
    "content-available" = 1;
}, AnyHashable("message_id"): 18877, 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_id"): 18878, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:46:29";
    "file_name" = "";
    message = "Have you ever tried anything different with your wife during sex?";
    "message_id" = 18878;
    "message_type" = 0;
    "prev_session_message_id" = 18877;
    "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"): 18878]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18878]
    datesent = "2026-01-23 14:46:43";
    "file_name" = "";
    message = "Or what was the different one\Ud83e\Udd2d";
    "message_id" = 18879;
    "message_type" = 0;
    "prev_session_message_id" = 18878;
    "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-23 14:46:43";
    "file_name" = "";
    message = "Or what was the different one\Ud83e\Udd2d";
    "message_id" = 18879;
    "message_type" = 0;
    "prev_session_message_id" = 18878;
    "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-23 14:46:43";
    "file_name" = "";
    message = "Or what was the different one\Ud83e\Udd2d";
    "message_id" = 18879;
    "message_type" = 0;
    "prev_session_message_id" = 18878;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18879]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18879]
    datesent = "2026-01-23 14:46:55";
    "file_name" = "";
    message = "I want you to try something different today";
    "message_id" = 18880;
    "message_type" = 0;
    "prev_session_message_id" = 18879;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18880, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    datesent = "2026-01-23 14:46:55";
    "file_name" = "";
    message = "I want you to try something different today";
    "message_id" = 18880;
    "message_type" = 0;
    "prev_session_message_id" = 18879;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18880, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    datesent = "2026-01-23 14:46:55";
    "file_name" = "";
    message = "I want you to try something different today";
    "message_id" = 18880;
    "message_type" = 0;
    "prev_session_message_id" = 18879;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18880, 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;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18880]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18881, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:47:02";
    "file_name" = "";
    message = "Different position maybe";
    "message_id" = 18881;
    "message_type" = 0;
    "prev_session_message_id" = 18880;
    "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("operation_type"): 0, AnyHashable("message_id"): 18881, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:47:02";
    "file_name" = "";
    message = "Different position maybe";
    "message_id" = 18881;
    "message_type" = 0;
    "prev_session_message_id" = 18880;
    "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-23 14:47:02";
    "file_name" = "";
    message = "Different position maybe";
    "message_id" = 18881;
    "message_type" = 0;
    "prev_session_message_id" = 18880;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}]
    "content-available" = 1;
}, AnyHashable("message_id"): 18881, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18875]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18875]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18882]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:47:47";
    "file_name" = "";
    message = "What about oral sex?";
    "message_id" = 18883;
    "message_type" = 0;
    "prev_session_message_id" = 18882;
    "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-23 14:47:47";
    "file_name" = "";
    message = "What about oral sex?";
    "message_id" = 18883;
    "message_type" = 0;
    "prev_session_message_id" = 18882;
    "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-23 14:47:47";
    "file_name" = "";
    message = "What about oral sex?";
    "message_id" = 18883;
    "message_type" = 0;
    "prev_session_message_id" = 18882;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18883, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("message_id"): 18883, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:47:53";
    "file_name" = "";
    message = "Does she like?";
    "message_id" = 18884;
    "message_type" = 0;
    "prev_session_message_id" = 18883;
    "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]
    datesent = "2026-01-23 14:47:53";
    "file_name" = "";
    message = "Does she like?";
    "message_id" = 18884;
    "message_type" = 0;
    "prev_session_message_id" = 18883;
    "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]
    datesent = "2026-01-23 14:47:53";
    "file_name" = "";
    message = "Does she like?";
    "message_id" = 18884;
    "message_type" = 0;
    "prev_session_message_id" = 18883;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18884, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 14:48:11";
    "file_name" = "";
    message = "Or do you like to do with her?";
    "message_id" = 18885;
    "message_type" = 0;
    "prev_session_message_id" = 18884;
    "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]
    datesent = "2026-01-23 14:48:11";
    "file_name" = "";
    message = "Or do you like to do with her?";
    "message_id" = 18885;
    "message_type" = 0;
    "prev_session_message_id" = 18884;
    "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]
    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-23 14:48:11";
    "file_name" = "";
    message = "Or do you like to do with her?";
    "message_id" = 18885;
    "message_type" = 0;
    "prev_session_message_id" = 18884;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18885]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("message_id"): 18886, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 14:49:51";
    "file_name" = "";
    message = "Can you watch it?";
    "message_id" = 18888;
    "message_type" = 0;
    "prev_session_message_id" = 18887;
    "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"): 18888, 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_data"): {
    datesent = "2026-01-23 14:49:51";
    "file_name" = "";
    message = "Can you watch it?";
    "message_id" = 18888;
    "message_type" = 0;
    "prev_session_message_id" = 18887;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18888, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18888]
    datesent = "2026-01-23 14:50:45";
    "file_name" = "";
    message = "I guess I dont want to see it";
    "message_id" = 18891;
    "message_type" = 0;
    "prev_session_message_id" = 18890;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18891, AnyHashable("aps"): {
    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("message_id"): 18891, AnyHashable("message_data"): {
    datesent = "2026-01-23 14:50:45";
    "file_name" = "";
    message = "I guess I dont want to see it";
    "message_id" = 18891;
    "message_type" = 0;
    "prev_session_message_id" = 18890;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}]
    "content-available" = 1;
}]
    alert =     {
        body = "";
        title = StreamCam;
    };
    badge = 0;
    "content-available" = 1;
    sound = default;
}]
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18894]
    "content-available" = 1;
}, AnyHashable("message_id"): 18895, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18895]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18899, AnyHashable("message_data"): {
    datesent = "2026-01-23 15:02:27";
    "file_name" = "";
    message = "Ha ha \Ud83e\Udd23";
    "message_id" = 18899;
    "message_type" = 0;
    "prev_session_message_id" = 18898;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, 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("message_id"): 18899, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
    datesent = "2026-01-23 15:02:27";
    "file_name" = "";
    message = "Ha ha \Ud83e\Udd23";
    "message_id" = 18899;
    "message_type" = 0;
    "prev_session_message_id" = 18898;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}]
    "content-available" = 1;
}]
    datesent = "2026-01-23 15:02:47";
    "file_name" = "";
    message = "Make sense";
    "message_id" = 18900;
    "message_type" = 0;
    "prev_session_message_id" = 18899;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18900]
    datesent = "2026-01-23 15:02:47";
    "file_name" = "";
    message = "Make sense";
    "message_id" = 18900;
    "message_type" = 0;
    "prev_session_message_id" = 18899;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18900]
    datesent = "2026-01-23 15:02:47";
    "file_name" = "";
    message = "Make sense";
    "message_id" = 18900;
    "message_type" = 0;
    "prev_session_message_id" = 18899;
    "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;
}]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 2;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_data"): {
    datesent = "2026-01-23 15:02:49";
    "file_name" = "";
    message = "\Ud83e\Udd2a\Ud83e\Udd2a";
    "message_id" = 18901;
    "message_type" = 0;
    "prev_session_message_id" = 18900;
    "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_data"): {
    datesent = "2026-01-23 15:02:49";
    "file_name" = "";
    message = "\Ud83e\Udd2a\Ud83e\Udd2a";
    "message_id" = 18901;
    "message_type" = 0;
    "prev_session_message_id" = 18900;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0]
    datesent = "2026-01-23 15:02:49";
    "file_name" = "";
    message = "\Ud83e\Udd2a\Ud83e\Udd2a";
    "message_id" = 18901;
    "message_type" = 0;
    "prev_session_message_id" = 18900;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 2;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18901]
    datesent = "2026-01-23 15:02:49";
    "file_name" = "";
    message = "\Ud83e\Udd2a\Ud83e\Udd2a";
    "message_id" = 18901;
    "message_type" = 0;
    "prev_session_message_id" = 18900;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 2;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18901]
    "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"): 18901]
    "LocalWebSocketTask <C7341630-21A6-43F5-ADDD-B831DD42DA3E>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <C7341630-21A6-43F5-ADDD-B831DD42DA3E>.<1>}
    "LocalWebSocketTask <20E4B1E2-2B79-4864-8F48-151078BDDC1B>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <20E4B1E2-2B79-4864-8F48-151078BDDC1B>.<1>}
    "LocalWebSocketTask <654965D2-C196-4240-990A-C232CC223F7A>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <654965D2-C196-4240-990A-C232CC223F7A>.<1>}
    "content-available" = 1;
}, AnyHashable("message_id"): 18904, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 16:50:35";
    "file_name" = "";
    message = "Thank you babyy\U2665\Ufe0f";
    "message_id" = 18905;
    "message_type" = 0;
    "prev_session_message_id" = 18904;
    "replied_message" = "Enjoy Melis !!";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18903;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18905, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}]
    datesent = "2026-01-23 16:50:35";
    "file_name" = "";
    message = "Thank you babyy\U2665\Ufe0f";
    "message_id" = 18905;
    "message_type" = 0;
    "prev_session_message_id" = 18904;
    "replied_message" = "Enjoy Melis !!";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18903;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18905, 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"): 18905, AnyHashable("message_data"): {
    datesent = "2026-01-23 16:50:35";
    "file_name" = "";
    message = "Thank you babyy\U2665\Ufe0f";
    "message_id" = 18905;
    "message_type" = 0;
    "prev_session_message_id" = 18904;
    "replied_message" = "Enjoy Melis !!";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18903;
    "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 = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18907, AnyHashable("message_data"): {
    datesent = "2026-01-23 16:50:57";
    "file_name" = "";
    message = "Time to time, Im seeing you in my dreams";
    "message_id" = 18907;
    "message_type" = 0;
    "prev_session_message_id" = 18906;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18907, AnyHashable("message_data"): {
    datesent = "2026-01-23 16:50:57";
    "file_name" = "";
    message = "Time to time, Im seeing you in my dreams";
    "message_id" = 18907;
    "message_type" = 0;
    "prev_session_message_id" = 18906;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
    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 16:50:57";
    "file_name" = "";
    message = "Time to time, Im seeing you in my dreams";
    "message_id" = 18907;
    "message_type" = 0;
    "prev_session_message_id" = 18906;
    "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"): 18906, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18907, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, 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-23 16:51:38";
    "file_name" = "";
    message = "And every time, Im feeling same way \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18909;
    "message_type" = 0;
    "prev_session_message_id" = 18908;
    "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("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
    datesent = "2026-01-23 16:51:38";
    "file_name" = "";
    message = "And every time, Im feeling same way \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18909;
    "message_type" = 0;
    "prev_session_message_id" = 18908;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}]
    datesent = "2026-01-23 16:51:38";
    "file_name" = "";
    message = "And every time, Im feeling same way \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18909;
    "message_type" = 0;
    "prev_session_message_id" = 18908;
    "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"): 18909]
    "content-available" = 1;
}, AnyHashable("message_id"): 18909, AnyHashable("operation_type"): 3]
    datesent = "2026-01-23 16:51:51";
    "file_name" = "";
    message = "Still with her baby\U2665\Ufe0f";
    "message_id" = 18910;
    "message_type" = 0;
    "prev_session_message_id" = 18909;
    "replied_message" = "Still with her or leaving already ?";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18906;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18910, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 16:51:51";
    "file_name" = "";
    message = "Still with her baby\U2665\Ufe0f";
    "message_id" = 18910;
    "message_type" = 0;
    "prev_session_message_id" = 18909;
    "replied_message" = "Still with her or leaving already ?";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18906;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
    alert =     {
        body = "New message received";
        title = Eye;
    };
    badge = 1;
    "content-available" = 1;
    sound = default;
}, AnyHashable("message_id"): 18910, AnyHashable("session_id"): ILUIWU]
    datesent = "2026-01-23 16:51:51";
    "file_name" = "";
    message = "Still with her baby\U2665\Ufe0f";
    "message_id" = 18910;
    "message_type" = 0;
    "prev_session_message_id" = 18909;
    "replied_message" = "Still with her or leaving already ?";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18906;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18910, 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"): 18910, AnyHashable("session_id"): ILUIWU]
    "content-available" = 1;
}, AnyHashable("message_id"): 18910]
    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 16:51:58";
    "file_name" = "";
    message = "More than sweet \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18911;
    "message_type" = 0;
    "prev_session_message_id" = 18910;
    "replied_message" = "Mmmm. Very sweet dreams then \Ud83d\Ude0b";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18908;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18911, 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-23 16:51:58";
    "file_name" = "";
    message = "More than sweet \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18911;
    "message_type" = 0;
    "prev_session_message_id" = 18910;
    "replied_message" = "Mmmm. Very sweet dreams then \Ud83d\Ude0b";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18908;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("message_id"): 18911, 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-23 16:51:58";
    "file_name" = "";
    message = "More than sweet \Ud83e\Udee6\Ud83e\Udee6\Ud83e\Udee6";
    "message_id" = 18911;
    "message_type" = 0;
    "prev_session_message_id" = 18910;
    "replied_message" = "Mmmm. Very sweet dreams then \Ud83d\Ude0b";
    "replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
    "replied_sender_name" = Laurent;
    "reply_to_id" = 18908;
    "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
    "sender_name" = Esra;
    "session_id" = ILUIWU;
    timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18911]
    "content-available" = 1;
}]
    "content-available" = 1;
}, AnyHashable("operation_type"): 1]
-- Response Headers --
Server: Apache/2.4.65 (Debian)
Date: Fri, 23 Jan 2026 17:23:25 GMT
Content-Length: 67
Keep-Alive: timeout=5, max=97
Content-Type: application/json; charset=utf-8
Connection: Keep-Alive
-- Body --
{"ok":true,"event_type":1,"message_id":18912,"session_id":"ILUIWU"}
[21:29:09] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[21:29:09] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[21:29:09] [GIPHY] SDK not available - using REST API fallback
[21:29:09] [BACKGROUND] Background fetch enabled
[21:29:09] [AUTH] Starting PIN authentication
[21:29:09] [PUSH] Silent push received
[21:29:09] [CLEANUP] No old timer messages to delete
[21:29:09] [PUSH_EMBED] No embedded message_data in notification
[21:29:09] [PUSH] No embedded data, pre-loading messages from server
[21:29:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[21:29:09] [PUSH] Silent push received
[21:29:09] [PUSH_EMBED] No embedded message_data in notification
[21:29:09] [PUSH] No embedded data, pre-loading messages from server
[21:29:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[21:29:09] [PUSH] Silent push received
[21:29:09] [PUSH_EMBED] No embedded message_data in notification
[21:29:09] [PUSH] No embedded data, pre-loading messages from server
[21:29:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[21:29:09] [PUSH] Silent push received
[21:29:09] [PUSH_EMBED] No embedded message_data in notification
[21:29:09] [PUSH] No embedded data, pre-loading messages from server
[21:29:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[21:29:09] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[21:29:09] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18915)...
[21:29:09] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[21:29:09] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[21:29:09] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[21:29:09] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[21:29:09] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[21:29:09] [PRELOAD] No messages or parse error
[21:29:09] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[21:29:09] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[21:29:09] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[21:29:09] [USER] ✅ User registered successfully
[21:29:09] [PUSH] User registration after token update: success
[21:29:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[21:29:10] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[21:29:10] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[21:29:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[21:29:10] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[21:29:10] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[21:29:49] [PUSH] Silent push received
[21:29:49] [PUSH_EMBED] 📩 Received embedded message: id=18916, type=0, sender=Esra
[21:29:49] [PUSH_EMBED] ✅ Saved message 18916 to local DB (sync)
[21:29:49] [PUSH_EMBED] Inserted message 18916 into existing cache (now 51 messages)
[21:29:49] [PUSH_EMBED] Fetching evolution data for message 18916 in background
[21:29:49] [PUSH_EMBED] ✅ Fully processed message 18916
[21:29:49] [PUSH] Embedded message handled instantly from silent push
[21:29:49] [PUSH_EMBED] Got evolution data for message 18916, saving to local DB
[21:29:49] [PUSH_EMBED] Saved evolution data for message 18916
[21:30:01] [PUSH] Silent push received
[21:30:01] [PUSH_EMBED] 📩 Received embedded message: id=18917, type=0, sender=Esra
[21:30:01] [PUSH_EMBED] ✅ Saved message 18917 to local DB (sync)
[21:30:01] [PUSH_EMBED] Inserted message 18917 into existing cache (now 52 messages)
[21:30:01] [PUSH_EMBED] Fetching evolution data for message 18917 in background
[21:30:01] [PUSH_EMBED] ✅ Fully processed message 18917
[21:30:01] [PUSH] Embedded message handled instantly from silent push
[21:30:01] [PUSH_EMBED] Got evolution data for message 18917, saving to local DB
[21:30:01] [PUSH_EMBED] Saved evolution data for message 18917
[21:30:20] [PUSH] Silent push received
[21:30:20] [PUSH_EMBED] 📩 Received embedded message: id=18918, type=0, sender=Esra
[21:30:20] [PUSH_EMBED] ✅ Saved message 18918 to local DB (sync)
[21:30:20] [PUSH_EMBED] Inserted message 18918 into existing cache (now 53 messages)
[21:30:20] [PUSH_EMBED] Fetching evolution data for message 18918 in background
[21:30:20] [PUSH_EMBED] ✅ Fully processed message 18918
[21:30:20] [PUSH] Embedded message handled instantly from silent push
[21:30:21] [PUSH_EMBED] Got evolution data for message 18918, saving to local DB
[21:30:21] [PUSH_EMBED] Saved evolution data for message 18918
[21:30:36] [PUSH] Silent push received
[21:30:36] [PUSH_EMBED] 📩 Received embedded message: id=18919, type=0, sender=Esra
[21:30:36] [PUSH_EMBED] ✅ Saved message 18919 to local DB (sync)
[21:30:36] [PUSH_EMBED] Inserted message 18919 into existing cache (now 54 messages)
[21:30:36] [PUSH_EMBED] Fetching evolution data for message 18919 in background
[21:30:36] [PUSH_EMBED] ✅ Fully processed message 18919
[21:30:36] [PUSH] Embedded message handled instantly from silent push
[21:30:37] [PUSH_EMBED] Got evolution data for message 18919, saving to local DB
[21:30:37] [PUSH_EMBED] Saved evolution data for message 18919
[21:34:54] [PUSH] Silent push received
[21:34:54] [PUSH_EMBED] No embedded message_data in notification
[21:34:54] [PUSH] No embedded data, pre-loading messages from server
[21:34:54] [PUSH_PRELOAD] Fetching messages for instant display cache
[21:34:56] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[21:34:56] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18868, 18867, 18866, 18865]
[21:34:56] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push)
[21:34:56] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[21:56:47] [PUSH] Silent push received
[21:56:47] [PUSH_EMBED] 📩 Received embedded message: id=18920, type=0, sender=Esra
[21:56:47] [PUSH_EMBED] ✅ Saved message 18920 to local DB (sync)
[21:56:47] [PUSH_EMBED] Created new cache with embedded message 18920
[21:56:47] [PUSH_EMBED] Fetching evolution data for message 18920 in background
[21:56:47] [PUSH_EMBED] ✅ Fully processed message 18920
[21:56:47] [PUSH] Embedded message handled instantly from silent push
[21:56:47] [PUSH_EMBED] Got evolution data for message 18920, saving to local DB
[21:56:47] [PUSH_EMBED] Saved evolution data for message 18920
[21:57:00] [PUSH] Silent push received
[21:57:00] [PUSH_EMBED] 📩 Received embedded message: id=18921, type=0, sender=Esra
[21:57:00] [PUSH_EMBED] ✅ Saved message 18921 to local DB (sync)
[21:57:00] [PUSH_EMBED] Created new cache with embedded message 18921
[21:57:00] [PUSH_EMBED] Fetching evolution data for message 18921 in background
[21:57:00] [PUSH_EMBED] ✅ Fully processed message 18921
[21:57:00] [PUSH] Embedded message handled instantly from silent push
[21:57:00] [PUSH_EMBED] Got evolution data for message 18921, saving to local DB
[21:57:00] [PUSH_EMBED] Saved evolution data for message 18921
[22:11:55] [PUSH] Silent push received
[22:11:55] [PUSH_EMBED] 📩 Received embedded message: id=18922, type=0, sender=Esra
[22:11:55] [PUSH_EMBED] ✅ Saved message 18922 to local DB (sync)
[22:11:55] [PUSH_EMBED] Created new cache with embedded message 18922
[22:11:55] [PUSH_EMBED] Fetching evolution data for message 18922 in background
[22:11:55] [PUSH_EMBED] ✅ Fully processed message 18922
[22:11:55] [PUSH] Embedded message handled instantly from silent push
[22:11:56] [PUSH_EMBED] Got evolution data for message 18922, saving to local DB
[22:11:56] [PUSH_EMBED] Saved evolution data for message 18922
[22:12:01] [PUSH] Silent push received
[22:12:01] [PUSH_EMBED] 📩 Received embedded message: id=18923, type=0, sender=Esra
[22:12:01] [PUSH_EMBED] ✅ Saved message 18923 to local DB (sync)
[22:12:01] [PUSH_EMBED] Created new cache with embedded message 18923
[22:12:01] [PUSH_EMBED] Fetching evolution data for message 18923 in background
[22:12:01] [PUSH_EMBED] ✅ Fully processed message 18923
[22:12:01] [PUSH] Embedded message handled instantly from silent push
[22:12:02] [PUSH_EMBED] Got evolution data for message 18923, saving to local DB
[22:12:02] [PUSH_EMBED] Saved evolution data for message 18923
[22:14:00] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:14:00] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:00] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:14:00] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:14:01] [CLIENT_SIG] WebSocket opened
[22:14:01] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:14:01] [CLIENT_SIG] Connected! clientId=I4x29gaMVZo8qvcT
[22:14:01] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:14:01] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:01] [PUSH] Silent push received
[22:14:01] [PUSH_EMBED] 📩 Received embedded message: id=18924, type=0, sender=Esra
[22:14:01] [PUSH_EMBED] ✅ Saved message 18924 to local DB (sync)
[22:14:01] [PUSH_EMBED] Created new cache with embedded message 18924
[22:14:01] [PUSH_EMBED] Fetching evolution data for message 18924 in background
[22:14:01] [PUSH_EMBED] ✅ Fully processed message 18924
[22:14:01] [PUSH] Embedded message handled instantly from silent push
[22:14:01] [PUSH_EMBED] Got evolution data for message 18924, saving to local DB
[22:14:01] [PUSH_EMBED] Saved evolution data for message 18924
[22:14:02] [LIFECYCLE] App resigning active - cleared crash flag
[22:14:03] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[22:14:03] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[22:14:03] [LIFECYCLE] App entering background - cleared crash flag
[22:14:03] [CLIENT_SIG] Disconnecting
[22:14:03] [CLIENT_SIG] WebSocket closed with code 1001
[22:14:03] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:14:03] [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/}
[22:14:03] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:14:05] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:14:05] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:05] [CLIENT_SIG] WebSocket opened
[22:14:05] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:14:05] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:14:05] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:14:05] [CLIENT_SIG] Connected! clientId=JU5-eC9O90FL2Q-F
[22:14:05] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:14:05] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:06] [PIN_AUTH] Correct PIN
[22:14:06] [SECURITY] Restored real session: ILUIWU
[22:14:06] [SECURITY] Restored real session: ILUIWU
[22:14:06] [SECURITY] Saved real session: ILUIWU
[22:14:06] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[22:14:06] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:14:06] Documents Directory: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents
[22:14:06] [THEME] Applying current theme
[22:14:06] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[22:14:06] [CHAT] Applied day theme (mode: day)
[22:14:06] [SECURITY] Saved real session: ILUIWU
[22:14:06] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:14:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:14:06] [NETWORK] Network monitor started
[22:14:06] [NETWORK] Status changed: connected
[22:14:06] Did transition
[22:14:06] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[22:14:06] [VIEWER] Screen lock enabled - normal idle behavior
[22:14:06] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[22:14:06] [VCC] ========== VideoConnectionClass INIT ==========
[22:14:06] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[22:14:06] [DATA AUDIO] ========== setupWebRTC() START ==========
[22:14:06] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[22:14:06] [DATA AUDIO] Creating encoder/decoder factories...
[22:14:06] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[22:14:06] [CODEC] Viewer selected encoder: AV1 (best quality)
[22:14:06] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[22:14:06] [DATA AUDIO] ✅ Factory created
[22:14:06] [DATA AUDIO] RTCAudioSession locked
[22:14:06] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[22:14:06] [DATA AUDIO] RTCAudioSession unlocked
[22:14:06] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[22:14: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"]
[22:14:06] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[22:14:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:14:06] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[22:14:06] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[22:14:06] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[22:14:06] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[22:14:06] Did transition
[22:14:06] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[22:14:07] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[22:14:07] [CHUNK] Merged 923 reactions synchronously
[22:14:07] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[22:14:07] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[22:14:07] [MIGRATION] No messages need sender_name backfill
[22:14:07] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[22:14:07] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[22:14:07] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[22:14:07] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[22:14:07] [GALLERY_DB] ✅ Loaded 492 media messages
[22:14:07] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18924
[22:14:07] [INCREMENTAL_SYNC] ✅ No new messages
[22:14:07] [USER] ✅ User registered successfully
[22:14:07] [USER] User registration successful
[22:14:07] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[22:14:07] [GALLERY] First 5 after sort (newest first):
[22:14:07] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[22:14:07] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[22:14:07] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[22:14:07] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[22:14:07] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[22:14:07] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[22:14:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:07] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18915 → 18916
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18916 → 18917
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18917 → 18918
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18918 → 18919
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18919 → 18920
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18920 → 18921
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18921 → 18922
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18922 → 18923
[22:14:07] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18923 → 18924
[22:14:07] [SERVER] Starting reconnect polling (5s interval)
[22:14:07] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[22:14:07] [ICONS] Offset applied: -14.6
[22:14:07] [ICONS] New left margin: 11.2, New right margin: 11.3
[22:14:07] [ICONS] Chat center: (31.2, 87.0)
[22:14:07] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[22:14:07] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[22:14:07] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[22:14:07] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[22:14:07] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[22:14:07] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[22:14:07] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[22:14:07] [ICONS] Screen width: 440.0
[22:14:07] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[22:14:07] [UNSENT_RETRY] Checking for unsent messages...
[22:14:07] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[22:14:07] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[22:14:07] [UPLOAD_RECOVERY] Session: ILUIWU
[22:14:07] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[22:14:07] [UPLOAD_RECOVERY] Checking recent media messages on server...
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18824, file=0d08f6fe6141897c.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18822, file=aa11fb87a250b06a.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18774, file=04b759bdc230eb2c.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18747, file=17758c02b0ac471a.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18661, file=fca62dfbaa62895a.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18622, file=87d86493734492b6.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18578, file=6987f51080ccbfa1.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18569, file=61efa5413baa75e8.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18547, file=bb6aaa84326f734e.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18510, file=b3cad86fff0afa3d.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18507, file=e8d737bd34c51935.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18501, file=74c06e97f0a4db49.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18489, file=747d4f2026039fc3.jpg, upload_status=complete
[22:14:07] [UPLOAD_RECOVERY] Verifying 13 media files exist on server...
[22:14:07] [PENDING_UPLOAD] Total pending upload messages: 0
[22:14:07] [UNSENT_RETRY] No unsent messages found
[22:14:07] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:14:07] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:14:07] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[22:14:07] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[22:14:08] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:14:08] [PUSH] Silent push received
[22:14:08] [PUSH_EMBED] No embedded message_data in notification
[22:14:08] [PUSH] No embedded data, pre-loading messages from server
[22:14:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:08] [PUSH] Silent push received
[22:14:08] [PUSH_EMBED] No embedded message_data in notification
[22:14:08] [PUSH] No embedded data, pre-loading messages from server
[22:14:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:08] [PUSH] Silent push received
[22:14:08] [PUSH_EMBED] No embedded message_data in notification
[22:14:08] [PUSH] No embedded data, pre-loading messages from server
[22:14:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:09] [PUSH] Silent push received
[22:14:09] [PUSH_EMBED] No embedded message_data in notification
[22:14:09] [PUSH] No embedded data, pre-loading messages from server
[22:14:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:09] [PUSH] Silent push received
[22:14:09] [PUSH_EMBED] No embedded message_data in notification
[22:14:09] [PUSH] No embedded data, pre-loading messages from server
[22:14:09] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:09] [CLIENT_SIG] Event received: type=3 messageId=18917
[22:14:09] [WS_EVENT] Received event: type=3, messageId=18917
[22:14:09] [WS_EVENT] Read receipt for message 18917 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:09] [CLIENT_SIG] Event received: type=3 messageId=18916
[22:14:09] [WS_EVENT] Received event: type=3, messageId=18916
[22:14:09] [WS_EVENT] Read receipt for message 18916 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:09] [CLIENT_SIG] Event received: type=3 messageId=18918
[22:14:09] [WS_EVENT] Received event: type=3, messageId=18918
[22:14:09] [WS_EVENT] Read receipt for message 18918 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:09] [CLIENT_SIG] Event received: type=3 messageId=18919
[22:14:09] [WS_EVENT] Received event: type=3, messageId=18919
[22:14:09] [WS_EVENT] Read receipt for message 18919 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:09] [CLIENT_SIG] Event received: type=3 messageId=18920
[22:14:09] [WS_EVENT] Received event: type=3, messageId=18920
[22:14:09] [WS_EVENT] Read receipt for message 18920 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:10] [UPLOAD_RECOVERY] ✅ All media files verified on server
[22:14:10] new_session POST ok: token len=157
[22:14:10] HELLO → sent (fetched token, role=query)
[22:14:10] [SIG] hello_ok received for query connection - ready to query agents
[22:14:10] [SIG] get_agents request sent for sessionId=ILUIWU
[22:14:10] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:14:10] [SERVER] Stopped reconnect polling
[22:14:10] [PUSH] Silent push received
[22:14:10] [PUSH_EMBED] No embedded message_data in notification
[22:14:10] [PUSH] No embedded data, pre-loading messages from server
[22:14:10] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:10] [PUSH] Silent push received
[22:14:10] [PUSH_EMBED] No embedded message_data in notification
[22:14:10] [PUSH] No embedded data, pre-loading messages from server
[22:14:10] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:10] [PUSH] Silent push received
[22:14:10] [PUSH_EMBED] No embedded message_data in notification
[22:14:10] [PUSH] No embedded data, pre-loading messages from server
[22:14:10] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:10] [SIG] agents_list received: []
[22:14:10] [SIG] agents_list received: []
[22:14:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:10] [PUSH] Silent push received
[22:14:10] [PUSH_EMBED] No embedded message_data in notification
[22:14:10] [PUSH] No embedded data, pre-loading messages from server
[22:14:10] [PUSH_PRELOAD] Fetching messages for instant display cache
[22:14:10] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:10] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("message_id"): 18917, AnyHashable("session_id"): ILUIWU]
[22:14:10] [PUSH] Parsed message_id: 18917
[22:14:10] [PUSH] Parsed operation_type: 3
[22:14:10] [PUSH] Taking direct action: opType=3, messageId=18917
[22:14:10] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18917
[22:14:10] [CLIENT_SIG] Event received: type=3 messageId=18921
[22:14:10] [WS_EVENT] Received event: type=3, messageId=18921
[22:14:10] [WS_EVENT] Read receipt for message 18921 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:10] [CLIENT_SIG] Event received: type=3 messageId=18922
[22:14:10] [WS_EVENT] Received event: type=3, messageId=18922
[22:14:10] [WS_EVENT] Read receipt for message 18922 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:10] [CLIENT_SIG] Event received: type=3 messageId=18923
[22:14:10] [WS_EVENT] Received event: type=3, messageId=18923
[22:14:10] [WS_EVENT] Read receipt for message 18923 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:10] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:10] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18916, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[22:14:10] [PUSH] Parsed message_id: 18916
[22:14:10] [PUSH] Parsed operation_type: 3
[22:14:10] [PUSH] Taking direct action: opType=3, messageId=18916
[22:14:10] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18916
[22:14:10] [CLIENT_SIG] Event received: type=3 messageId=18924
[22:14:10] [WS_EVENT] Received event: type=3, messageId=18924
[22:14:10] [WS_EVENT] Read receipt for message 18924 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:10] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18918, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[22:14:11] [PUSH] Parsed message_id: 18918
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18918
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18918
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18920, AnyHashable("session_id"): ILUIWU]
[22:14:11] [PUSH] Parsed message_id: 18920
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18920
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18920
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18919, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("operation_type"): 3]
[22:14:11] [PUSH] Parsed message_id: 18919
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18919
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18919
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18921]
[22:14:11] [PUSH] Parsed message_id: 18921
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18921
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18921
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18924]
[22:14:11] [PUSH] Parsed message_id: 18924
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18924
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18924
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18923]
[22:14:11] [PUSH] Parsed message_id: 18923
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18923
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18923
[22:14:11] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[22:14:11] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[22:14:11] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[22:14:11] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
    "content-available" = 1;
}, AnyHashable("message_id"): 18922, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[22:14:11] [PUSH] Parsed message_id: 18922
[22:14:11] [PUSH] Parsed operation_type: 3
[22:14:11] [PUSH] Taking direct action: opType=3, messageId=18922
[22:14:11] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18922
[22:14:12] [COMBINED_FETCH] Loaded 7689 read receipts, 926 messages with reactions
[22:14:12] [READBY_ENRICH] Enriched 50 messages with readBy data
[22:14:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:17] [LIFECYCLE] App resigning active - cleared crash flag
[22:14:18] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:14:18] [SECURITY] Saved background timestamp
[22:14:18] [LIFECYCLE] App entering background - cleared crash flag
[22:14:18] [CLIENT_SIG] Disconnecting
[22:14:18] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:14:18] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[22:14:18] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:14:18] In cleanupPeer
[22:14:18] In cleanupPeer
[22:14:18] [LIFECYCLE] WebRTC audio disabled
[22:14:18] [LIFECYCLE] AVAudioSession deactivated
[22:14:18] [LIFECYCLE] All connections stopped
[22:14:18] [CLIENT_SIG] WebSocket closed with code 1001
[22:14:18] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:14: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/}
[22:14:18] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:14:18] [SERVER] Stopped reconnect polling
[22:14:18] Will request stop of video 0
[22:14:18] Will request stop of video 0
[22:14:18] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[22:14:18] [WS] Query connection error - cleaning up all agent connections and views
[22:14:18] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[22:14:18] [WS] Query connection failed - cleaning up all agent connections and views
[22:14:18] [PIP] Removing 0 tracks from PiP for connection 0
[22:14:18] [PIP] ✅ All tracks removed for connection 0
[22:14:18] [PIP] Removing 0 tracks from PiP for connection 0
[22:14:18] [PIP] ✅ All tracks removed for connection 0
[22:14:18] [CLEANUP] ========================================
[22:14:18] [CLEANUP] Cleaning up all agent connections and views
[22:14:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:14:18] [CLEANUP] Stopped and removed 0 video connections
[22:14:18] [CLEANUP] Removed 0 video views
[22:14:18] [CLEANUP] Removed 0 feed scroll views
[22:14:18] [CLEANUP] Removed 0 status labels
[22:14:18] [CLEANUP] Reset agent query state
[22:14:18] [CLEANUP] Updated page indicator
[22:14:18] [CLEANUP] Rebuilt video layout
[22:14:18] [CLEANUP] ✅ All agent connections and views cleaned up
[22:14:18] [CLEANUP] ========================================
[22:14:18] [SERVER] Skipping reconnect polling - app is in background
[22:14:18] [WS] URLSession invalidated successfully
[22:14:18] [CLEANUP] ========================================
[22:14:18] [CLEANUP] Cleaning up all agent connections and views
[22:14:18] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:14:18] [CLEANUP] Stopped and removed 0 video connections
[22:14:18] [CLEANUP] Removed 0 video views
[22:14:18] [CLEANUP] Removed 0 feed scroll views
[22:14:18] [CLEANUP] Removed 0 status labels
[22:14:18] [CLEANUP] Reset agent query state
[22:14:18] [CLEANUP] Updated page indicator
[22:14:18] [CLEANUP] Rebuilt video layout
[22:14:18] [CLEANUP] ✅ All agent connections and views cleaned up
[22:14:18] [CLEANUP] ========================================
[22:14:18] [SERVER] Skipping reconnect polling - app is in background
[22:14:48] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[22:14:48] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:14:48] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:48] [SECURITY] Timeout check: elapsed=30.141577005386353s, timeout=300.0s
[22:14:48] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:14:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:14:48] [LIFECYCLE] App entering foreground - restoring connections
[22:14:48] [UPLOAD_RETRY] No pending uploads to retry
[22:14:48] [LIFECYCLE] Merged 923 reactions from local DB
[22:14:48] [LIFECYCLE] WebRTC audio re-enabled
[22:14:48] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:14:48] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:14:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:14:48] [VIEWER] Reconnecting after background - querying agents
[22:14:48] [UNSENT_RETRY] Checking for unsent messages...
[22:14:48] [PENDING_UPLOAD] Total pending upload messages: 0
[22:14:48] [UNSENT_RETRY] No unsent messages found
[22:14:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:49] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:14:49] [SECURITY] Within timeout - cleared background flag
[22:14:49] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:14:49] [PUSH] handlePollEventsNotification userInfo: [:]
[22:14:49] [PUSH] No message_id in userInfo
[22:14:49] [PUSH] No operation_type in userInfo
[22:14:49] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:14:49] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[22:14:49] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:14:49] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:14:49] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[22:14:49] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18924
[22:14:49] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:14:49] HELLO → sent (cached token, role=query)
[22:14:49] [CLIENT_SIG] WebSocket opened
[22:14:49] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:14:49] [SIG] hello_ok received for query connection - ready to query agents
[22:14:49] [SIG] get_agents request sent for sessionId=ILUIWU
[22:14:49] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:14:49] [SERVER] Stopped reconnect polling
[22:14:49] [CLIENT_SIG] Connected! clientId=K-W6JiygmdG3v0zD
[22:14:49] [SIG] agents_list received: []
[22:14:49] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:14:49] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:14:49] [SIG] agents_list received: []
[22:14:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:49] [INCREMENTAL_SYNC] ✅ No new messages
[22:14:49] [FAST_REFRESH] Incremental sync complete - 50 messages
[22:14:55] [TAP_REPLAY] 🔄 replayEvolutionAnimation called for messageId=18919
[22:14:55] [TAP_REPLAY] 📦 Found message: text.count=30, evolutionData.isEmpty=true
[22:14:55] [TAP_REPLAY] 📡 No local evolution data - fetching from server
[22:14:55] [TAP_REPLAY] 🔍 Server response keys: ["created_at", "evolution", "has_evolution", "message_id", "ok"]
[22:14:55] [TAP_REPLAY] ✅ Successfully fetched 28 events from server - calling playEvolutionInline
[22:14:55] [EVOLUTION] 🎬 playEvolutionInline called for message 18919 with 28 events
[22:14:55] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:55] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:55] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:55] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText=' ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:55] [UPDATE_CELL] ✅ Updating ChatCell label to: ' '
[22:14:55] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:55] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:55] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:55] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='E', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:55] [UPDATE_CELL] ✅ Updating ChatCell label to: 'E'
[22:14:55] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:14:55] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[22:14:55] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[22:14:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18924, 18923, 18922, 18921]
[22:14:56] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:14:56] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:14:56] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:56] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:56] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:56] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='En', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:56] [UPDATE_CELL] ✅ Updating ChatCell label to: 'En'
[22:14:56] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:56] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:56] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:56] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enj', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:56] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enj'
[22:14:56] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:56] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:56] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:56] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjo', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:56] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjo'
[22:14:56] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:56] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:56] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:56] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoy', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:56] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoy'
[22:14:56] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[22:14:56] [COMBINED_FETCH] Loaded 7689 read receipts, 926 messages with reactions
[22:14:56] [FOREGROUND] Enriched 9 messages with readBy data from server
[22:14:56] [CLIENT_SIG] Event received: type=0 messageId=18925
[22:14:56] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18925,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:14:56"}
[22:14:56] [WS_EVENT] Received event: type=0, messageId=18925
[22:14:56] [WS_EVENT] 📨 New message notification (msgId=18925) - triggering incremental refresh, currentMsgCount=51
[22:14:56] [CHAT] receive_message.php JSON: ["message_id": 18925, "session_id": ILUIWU, "file_name": , "datesent_utc": 2026-01-23 21:14:56, "message_type": 0, "ok": 1]
[22:14:56] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[22:14:56] [DB_UPGRADE] Upgrading message ID: -1 → 18925, preserveOriginalDate=false
[22:14:56] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18924
[22:14:56] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:56] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:56] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:56] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:56] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy'
[22:14:56] [DB_UPGRADE] ✅ Upgraded -1 → 18925 with send_status=0, 1 row(s) affected
[22:14:56] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18925
[22:14:56] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18925
[22:14:56] ReloadData 9
[22:14:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18925, 18924, 18923, 18922, 18921]
[22:14:56] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:14:56] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:14:56] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy '
[22:14:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy b', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy b'
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy ba', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy ba'
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy bab', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy bab'
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy baby', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy baby'
[22:14:57] [COMBINED_FETCH] Loaded 7689 read receipts, 926 messages with reactions
[22:14:57] [FAST_REFRESH] Enriched 50 messages with readBy data
[22:14:57] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:57] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:57] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:57] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyy', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:57] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyy'
[22:14:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:14:58] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:58] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:58] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:58] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:58] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy'
[22:14:58] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[22:14:58] [WS] Query connection error - cleaning up all agent connections and views
[22:14:58] [CLEANUP] ========================================
[22:14:58] [CLEANUP] Cleaning up all agent connections and views
[22:14:58] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:14:58] [CLEANUP] Stopped and removed 0 video connections
[22:14:58] [CLEANUP] Removed 0 video views
[22:14:58] [CLEANUP] Removed 0 feed scroll views
[22:14:58] [CLEANUP] Removed 0 status labels
[22:14:58] [CLEANUP] Reset agent query state
[22:14:58] [CLEANUP] Updated page indicator
[22:14:58] [CLEANUP] Rebuilt video layout
[22:14:58] [CLEANUP] ✅ All agent connections and views cleaned up
[22:14:58] [CLEANUP] ========================================
[22:14:58] [SERVER] Starting reconnect polling (5s interval)
[22:14:59] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:59] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:59] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:59] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:59] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️'
[22:14:59] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:14:59] [UPDATE_CELL] Initial targetRowIndex=45
[22:14:59] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:14:59] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:14:59] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ '
[22:15:00] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:00] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:00] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:00] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ y', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:00] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ y'
[22:15:00] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:00] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:00] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:00] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ yo', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:00] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ yo'
[22:15:00] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:00] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:00] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:00] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:00] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you'
[22:15:00] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:00] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:00] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:00] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:00] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you '
[22:15:01] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:01] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:01] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:01] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you s', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:01] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you s'
[22:15:01] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:01] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:01] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:01] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:01] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you '
[22:15:01] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:15:01] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[22:15:01] [SEND_MESSAGE] ✅ Added optimistic message id=-2 to arrays, newMsgCount=52
[22:15:01] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-2, 18925, 18924, 18923, 18922]
[22:15:01] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:15:01] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:15:01] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:01] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:01] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:01] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you d', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:01] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you d'
[22:15:01] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:01] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:01] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:01] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you de', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:01] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you de'
[22:15:02] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:02] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:02] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:02] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you ded', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:02] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you ded'
[22:15:02] [CLIENT_SIG] Event received: type=0 messageId=18926
[22:15:02] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18926,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:15:01"}
[22:15:02] [WS_EVENT] Received event: type=0, messageId=18926
[22:15:02] [WS_EVENT] 📨 New message notification (msgId=18926) - triggering incremental refresh, currentMsgCount=52
[22:15:02] [CHAT] receive_message.php JSON: ["message_type": 0, "message_id": 18926, "file_name": , "ok": 1, "datesent_utc": 2026-01-23 21:15:01, "session_id": ILUIWU]
[22:15:02] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[22:15:02] [DB_UPGRADE] Upgrading message ID: -2 → 18926, preserveOriginalDate=false
[22:15:02] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18925
[22:15:02] [DB_UPGRADE] ✅ Upgraded -2 → 18926 with send_status=0, 1 row(s) affected
[22:15:02] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -2 → 18926
[22:15:02] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -2 → 18926
[22:15:02] ReloadData 9
[22:15:02] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:15:02] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:15:02] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[22:15:03] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:03] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:03] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:03] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:03] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you deserved', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:03] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you deserved'
[22:15:03] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:03] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:03] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:03] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you deserved ', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:03] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you deserved '
[22:15:03] [SERVER] Polling - attempting to reconnect...
[22:15:04] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:04] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:04] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:04] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you deserved 😏', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:04] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you deserved 😏'
[22:15:04] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:04] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:04] [UPDATE_CELL] ⚡ Updated chatRows in place (evolution mode)
[22:15:04] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=true, evolutionText='Enjoyy babyyy♥️ you deserved 😏😏', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:04] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:04] [UPDATE_CELL] 🔍 updateMessageCell called for message 18919
[22:15:04] [UPDATE_CELL] Initial targetRowIndex=45
[22:15:04] [UPDATE_CELL] Rebuilt chatRows, count=53
[22:15:04] [UPDATE_CELL] After rebuild targetRowIndex=45
[22:15:04] [UPDATE_CELL] 📝 Message state: isPlayingEvolution=false, evolutionText='Enjoyy babyyy♥️ you deserved 😏😏', text='Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:04] [UPDATE_CELL] ✅ Updating ChatCell label to: 'Enjoyy babyyy♥️ you deserved 😏😏'
[22:15:04] [EVOLUTION] ✅ Animation complete for message 18919 - marking as read now
[22:15:08] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:15:08] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=52, isReloading=false
[22:15:08] [SEND_MESSAGE] ✅ Added optimistic message id=-3 to arrays, newMsgCount=53
[22:15:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-3, 18926, 18925, 18924, 18923]
[22:15:08] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:15:08] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:15:08] [SERVER] Polling - attempting to reconnect...
[22:15:09] [CLIENT_SIG] Event received: type=0 messageId=18927
[22:15:09] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18927,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:15:08"}
[22:15:09] [WS_EVENT] Received event: type=0, messageId=18927
[22:15:09] [WS_EVENT] 📨 New message notification (msgId=18927) - triggering incremental refresh, currentMsgCount=53
[22:15:09] [CHAT] receive_message.php JSON: ["message_id": 18927, "file_name": , "message_type": 0, "datesent_utc": 2026-01-23 21:15:08, "ok": 1, "session_id": ILUIWU]
[22:15:09] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53
[22:15:09] [DB_UPGRADE] Upgrading message ID: -3 → 18927, preserveOriginalDate=false
[22:15:09] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18926
[22:15:09] [DB_UPGRADE] ✅ Upgraded -3 → 18927 with send_status=0, 1 row(s) affected
[22:15:09] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -3 → 18927
[22:15:09] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -3 → 18927
[22:15:09] ReloadData 9
[22:15:09] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:15:09] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:15:09] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[22:15:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:13] [SERVER] Polling - attempting to reconnect...
[22:15:18] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:15:18] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=53, isReloading=false
[22:15:18] [SEND_MESSAGE] ✅ Added optimistic message id=-4 to arrays, newMsgCount=54
[22:15:18] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-4, 18927, 18926, 18925, 18924]
[22:15:18] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:15:18] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:15:18] [SERVER] Polling - attempting to reconnect...
[22:15:18] [MENU] dismissAnyExistingMenu called
[22:15:18] [MENU] dismissAnyExistingMenu completed
[22:15:19] [SCROLL_BTN] Showing button - 196pt from bottom > half 196pt
[22:15:19] [CLIENT_SIG] Event received: type=0 messageId=18928
[22:15:19] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18928,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:15:19"}
[22:15:19] [WS_EVENT] Received event: type=0, messageId=18928
[22:15:19] [WS_EVENT] 📨 New message notification (msgId=18928) - triggering incremental refresh, currentMsgCount=54
[22:15:19] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[22:15:19] [CHAT] receive_message.php JSON: ["message_id": 18928, "message_type": 0, "file_name": , "session_id": ILUIWU, "datesent_utc": 2026-01-23 21:15:19, "ok": 1]
[22:15:19] [DB_UPGRADE] Upgrading message ID: -4 → 18928, preserveOriginalDate=false
[22:15:19] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18927
[22:15:19] [DB_UPGRADE] ✅ Upgraded -4 → 18928 with send_status=0, 1 row(s) affected
[22:15:19] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -4 → 18928
[22:15:19] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -4 → 18928
[22:15:19] ReloadData 9
[22:15:20] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:15:20] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:15:20] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54
[22:15:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:23] [SERVER] Polling - attempting to reconnect...
[22:15:28] [SERVER] Polling - attempting to reconnect...
[22:15:30] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:15:30] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false
[22:15:30] [SEND_MESSAGE] ✅ Added optimistic message id=-5 to arrays, newMsgCount=55
[22:15:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-5, 18928, 18927, 18926, 18925]
[22:15:30] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:15:30] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:15:32] [CLIENT_SIG] Event received: type=0 messageId=18929
[22:15:32] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18929,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:15:31"}
[22:15:32] [WS_EVENT] Received event: type=0, messageId=18929
[22:15:32] [WS_EVENT] 📨 New message notification (msgId=18929) - triggering incremental refresh, currentMsgCount=55
[22:15:32] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 21:15:31, "session_id": ILUIWU, "ok": 1, "file_name": , "message_type": 0, "message_id": 18929]
[22:15:32] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[22:15:32] [DB_UPGRADE] Upgrading message ID: -5 → 18929, preserveOriginalDate=false
[22:15:32] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18928
[22:15:32] [DB_UPGRADE] ✅ Upgraded -5 → 18929 with send_status=0, 1 row(s) affected
[22:15:32] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -5 → 18929
[22:15:32] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -5 → 18929
[22:15:32] ReloadData 9
[22:15:32] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:15:32] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:15:32] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[22:15:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:33] [LIFECYCLE] App resigning active - cleared crash flag
[22:15:33] [SERVER] Polling - attempting to reconnect...
[22:15:34] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:15:34] [SECURITY] Saved background timestamp
[22:15:34] [LIFECYCLE] App entering background - cleared crash flag
[22:15:34] [CLIENT_SIG] Disconnecting
[22:15:34] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:15:34] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[22:15:34] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:15:34] In cleanupPeer
[22:15:34] In cleanupPeer
[22:15:34] [LIFECYCLE] WebRTC audio disabled
[22:15:34] [LIFECYCLE] AVAudioSession deactivated
[22:15:34] [LIFECYCLE] All connections stopped
[22:15:34] [CLIENT_SIG] WebSocket closed with code 1001
[22:15:34] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:15: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/}
[22:15:34] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:15:34] [SERVER] Stopped reconnect polling
[22:15:34] Will request stop of video 0
[22:15:34] [WS] URLSession invalidated successfully
[22:15:34] Will request stop of video 0
[22:15:34] [PIP] Removing 0 tracks from PiP for connection 0
[22:15:34] [PIP] ✅ All tracks removed for connection 0
[22:15:34] [PIP] Removing 0 tracks from PiP for connection 0
[22:15:34] [PIP] ✅ All tracks removed for connection 0
[22:15:35] [SECURITY] Timeout check: elapsed=0.9027600288391113s, timeout=300.0s
[22:15:35] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:15:35] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:15:35] [LIFECYCLE] App entering foreground - restoring connections
[22:15:35] [UPLOAD_RETRY] No pending uploads to retry
[22:15:35] [LIFECYCLE] Merged 923 reactions from local DB
[22:15:35] [LIFECYCLE] WebRTC audio re-enabled
[22:15:35] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:15:35] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:15:35] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:15:35] [VIEWER] Reconnecting after background - querying agents
[22:15:35] [UNSENT_RETRY] Checking for unsent messages...
[22:15:35] [PENDING_UPLOAD] Total pending upload messages: 0
[22:15:35] [UNSENT_RETRY] No unsent messages found
[22:15:35] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[22:15:35] [WS] Query connection failed - cleaning up all agent connections and views
[22:15:35] [CLEANUP] ========================================
[22:15:35] [CLEANUP] Cleaning up all agent connections and views
[22:15:35] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:15:35] [CLEANUP] Stopped and removed 0 video connections
[22:15:35] [CLEANUP] Removed 0 video views
[22:15:35] [CLEANUP] Removed 0 feed scroll views
[22:15:35] [CLEANUP] Removed 0 status labels
[22:15:35] [CLEANUP] Reset agent query state
[22:15:35] [CLEANUP] Updated page indicator
[22:15:35] [CLEANUP] Rebuilt video layout
[22:15:35] [CLEANUP] ✅ All agent connections and views cleaned up
[22:15:35] [CLEANUP] ========================================
[22:15:35] [SERVER] Starting reconnect polling (5s interval)
[22:15:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:35] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:15:35] [SECURITY] Within timeout - cleared background flag
[22:15:35] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:15:35] [PUSH] handlePollEventsNotification userInfo: [:]
[22:15:35] [PUSH] No message_id in userInfo
[22:15:35] [PUSH] No operation_type in userInfo
[22:15:35] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:15:35] [FAST_REFRESH] Already have 55 messages - skipping local DB load
[22:15:35] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:15:35] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:15:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[22:15:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18929
[22:15:35] [CLIENT_SIG] WebSocket opened
[22:15:35] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:15:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:15:35] [CLIENT_SIG] Connected! clientId=D7-vMPzc8Xqk_HNR
[22:15:35] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:15:35] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:15:35] [INCREMENTAL_SYNC] ✅ No new messages
[22:15:35] [FAST_REFRESH] Incremental sync complete - 55 messages
[22:15:36] [LOCK] Lock button tapped - locking app immediately
[22:15:36] [LOCK] Received lock app notification
[22:15:36] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[22:15:36] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:15:37] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:15:37] HELLO → sent (cached token, role=query)
[22:15:37] [SIG] hello_ok received for query connection - ready to query agents
[22:15:37] [SIG] get_agents request sent for sessionId=ILUIWU
[22:15:37] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:15:37] [SERVER] Stopped reconnect polling
[22:15:37] [SIG] agents_list received: []
[22:15:37] [SIG] agents_list received: []
[22:15:37] [LIFECYCLE] App resigning active - cleared crash flag
[22:15:37] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[22:15:37] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[22:15:37] [LIFECYCLE] App entering background - cleared crash flag
[22:15:37] [CLIENT_SIG] Disconnecting
[22:15:37] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:15:37] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[22:15:37] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:15:37] In cleanupPeer
[22:15:37] In cleanupPeer
[22:15:37] [LIFECYCLE] WebRTC audio disabled
[22:15:37] [LIFECYCLE] AVAudioSession deactivated
[22:15:37] [LIFECYCLE] All connections stopped
[22:15:37] [CLIENT_SIG] WebSocket closed with code 1001
[22:15:37] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:15:37] [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/}
[22:15:37] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:15:37] [SERVER] Stopped reconnect polling
[22:15:37] Will request stop of video 0
[22:15:37] Will request stop of video 0
[22:15:37] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[22:15:37] [WS] Query connection error - cleaning up all agent connections and views
[22:15:37] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[22:15:37] [WS] Query connection failed - cleaning up all agent connections and views
[22:15:37] [PIP] Removing 0 tracks from PiP for connection 0
[22:15:37] [PIP] ✅ All tracks removed for connection 0
[22:15:37] [PIP] Removing 0 tracks from PiP for connection 0
[22:15:37] [PIP] ✅ All tracks removed for connection 0
[22:15:37] [CLEANUP] ========================================
[22:15:37] [CLEANUP] Cleaning up all agent connections and views
[22:15:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:15:37] [CLEANUP] Stopped and removed 0 video connections
[22:15:37] [CLEANUP] Removed 0 video views
[22:15:37] [CLEANUP] Removed 0 feed scroll views
[22:15:37] [CLEANUP] Removed 0 status labels
[22:15:37] [CLEANUP] Reset agent query state
[22:15:37] [CLEANUP] Updated page indicator
[22:15:37] [CLEANUP] Rebuilt video layout
[22:15:37] [CLEANUP] ✅ All agent connections and views cleaned up
[22:15:37] [CLEANUP] ========================================
[22:15:37] [SERVER] Skipping reconnect polling - app is in background
[22:15:37] [WS] URLSession invalidated successfully
[22:15:37] [CLEANUP] ========================================
[22:15:37] [CLEANUP] Cleaning up all agent connections and views
[22:15:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:15:37] [CLEANUP] Stopped and removed 0 video connections
[22:15:37] [CLEANUP] Removed 0 video views
[22:15:37] [CLEANUP] Removed 0 feed scroll views
[22:15:37] [CLEANUP] Removed 0 status labels
[22:15:37] [CLEANUP] Reset agent query state
[22:15:37] [CLEANUP] Updated page indicator
[22:15:37] [CLEANUP] Rebuilt video layout
[22:15:37] [CLEANUP] ✅ All agent connections and views cleaned up
[22:15:37] [CLEANUP] ========================================
[22:15:37] [SERVER] Skipping reconnect polling - app is in background
[22:16:27] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:16:27] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:16:27] [LIFECYCLE] App entering foreground - restoring connections
[22:16:27] [UPLOAD_RETRY] No pending uploads to retry
[22:16:27] [LIFECYCLE] Merged 923 reactions from local DB
[22:16:27] [LIFECYCLE] WebRTC audio re-enabled
[22:16:27] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:16:27] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:16:27] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:16:27] [VIEWER] Reconnecting after background - querying agents
[22:16:27] [UNSENT_RETRY] Checking for unsent messages...
[22:16:27] [PENDING_UPLOAD] Total pending upload messages: 0
[22:16:27] [UNSENT_RETRY] No unsent messages found
[22:16:27] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[22:16:27] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:16:27] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:16:27] [FOREGROUND] ⚠️ readBy fetch returned empty but we have 23 sent messages - triggering full refresh
[22:16:27] [FAST_REFRESH] Enriched 0 messages with readBy data
[22:16:27] [REFRESH_ALL] 🔄 refreshAllFromServer called from: foregroundReadByFallback, currentMsgCount=55
[22:16:27] [REFRESH_ALL] 📸 Captured 55 message IDs before request
[22:16:27] [REFRESH_ALL] 📡 Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[22:16:27] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[22:16:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:16:28] [CLIENT_SIG] WebSocket opened
[22:16:28] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:16:28] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:16:28] HELLO → sent (cached token, role=query)
[22:16:28] [CLIENT_SIG] Connected! clientId=7CmILzWEkW0EiGd-
[22:16:28] [SIG] hello_ok received for query connection - ready to query agents
[22:16:28] [SIG] get_agents request sent for sessionId=ILUIWU
[22:16:28] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:16:28] [SERVER] Stopped reconnect polling
[22:16:28] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:16:28] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:16:28] [SIG] agents_list received: []
[22:16:28] [SIG] agents_list received: []
[22:16:28] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:16:28] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:16:28] [PUSH] handlePollEventsNotification userInfo: [:]
[22:16:28] [PUSH] No message_id in userInfo
[22:16:28] [PUSH] No operation_type in userInfo
[22:16:28] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:16:28] [FAST_REFRESH] Already have 55 messages - skipping local DB load
[22:16:28] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:16:28] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:16:28] [INCREMENTAL_SYNC] ⚠️ Already reloading - skipping incremental refresh
[22:16:28] [FAST_REFRESH] Incremental sync complete - 55 messages
[22:16:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18874, 18875, 18876, 18877, 18878]
[22:16:31] [PIN_AUTH] Incorrect PIN[22:16:32] [LOG] Pruned 156 entries older than 3 hours
[22:16:32] [SECURITY] Restored real session: ILUIWU
[22:16:32] [SECURITY] Restored real session: ILUIWU
[22:16:33] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[22:16:33] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[22:16:33] [AUTH] Cache had 50 messages, maxExistingId=18929, inserted 0 truly new
[22:16:33] [AUTH] UI update complete
[22:16:33] [FAKE MODE] Exiting fake mode, restoring real session
[22:16:33] [SECURITY] Restored real session: ILUIWU
[22:16:33] [SECURITY] Saved real session: ILUIWU
[22:16:33] [FAKE MODE] ✅ Restored real session: ILUIWU
[22:16:33] [FAKE MODE] Loaded 50 messages (limited to page size)
[22:16:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18879, 18880, 18881, 18882, 18883]
[22:16:33] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[22:16:33] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[22:16:33] [USER] ✅ User registered successfully
[22:16:33] [PUSH] User registration after token update: success
[22:16:33] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[22:16:37] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[22:16:37] [WS] Query connection error - cleaning up all agent connections and views
[22:16:37] [CLEANUP] ========================================
[22:16:37] [CLEANUP] Cleaning up all agent connections and views
[22:16:37] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:16:37] [CLEANUP] Stopped and removed 0 video connections
[22:16:37] [CLEANUP] Removed 0 video views
[22:16:37] [CLEANUP] Removed 0 feed scroll views
[22:16:37] [CLEANUP] Removed 0 status labels
[22:16:37] [CLEANUP] Reset agent query state
[22:16:37] [CLEANUP] Updated page indicator
[22:16:37] [CLEANUP] Rebuilt video layout
[22:16:37] [CLEANUP] ✅ All agent connections and views cleaned up
[22:16:37] [CLEANUP] ========================================
[22:16:37] [SERVER] Starting reconnect polling (5s interval)
[22:16:42] [SERVER] Polling - attempting to reconnect...
[22:16:43] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:16:43] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=true
[22:16:43] [SEND_MESSAGE] ✅ Added optimistic message id=-6 to arrays, newMsgCount=51
[22:16:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-6, 18929, 18928, 18927, 18926]
[22:16:43] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:16:43] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:16:43] [PENDING_UPLOAD] Found pending message: id=-6, file=, uploadStatus=0, sendStatus=1
[22:16:43] [PENDING_UPLOAD] Total pending upload messages: 1
[22:16:43] [PENDING_UPLOAD] Preserved 1 pending messages before server refresh
[22:16:43] [TIMER] Preserving 4 played timer IDs before DB refresh
[22:16:43] [TIMER] Restored 4 played timer flags after DB refresh
[22:16:43] [PENDING_UPLOAD] Reinserting 1 pending messages
[22:16:43] [PENDING_UPLOAD] ✅ Reinserted message -6 with sendStatus=1
[22:16:44] DOWNLOADIIING t_A838C8A7-6ACB-4EC0-8A9C-B457DDC4006E.jpg
[22:16:44] DOWNLOADIIING t_203DADEC-DEED-4A33-908B-8F8E344461B1.jpg
[22:16:44] DOWNLOADIIING t_1b1a78050ebe099b.jpg
[22:16:44] DOWNLOADIIING t_bae538c2a3076c11.jpg
[22:16:44] DOWNLOADIIING t_ee42d57ffd8ab767.jpg
[22:16:44] DOWNLOADIIING t_5cfd84d52271d308.jpg
[22:16:44] DOWNLOADIIING t_919f4df51be24b2c.jpg
[22:16:44] DOWNLOADIIING t_0f2dda66cccdeadf.jpg
[22:16:44] DOWNLOADIIING t_32675c319a37fee7.jpg
[22:16:44] DOWNLOADIIING t_a45f085b5a2c50aa.jpg
[22:16:44] DOWNLOADIIING t_7cd3ce3d7797eb3c.jpg
[22:16:44] DOWNLOADIIING t_abb65f630e55dc61.jpg
[22:16:44] DOWNLOADIIING t_2a4c7380908d6595.jpg
[22:16:44] DOWNLOADIIING t_1ee77a72ee5013e0.jpg
[22:16:44] DOWNLOADIIING t_02f48c94671cc64e.jpg
[22:16:44] DOWNLOADIIING t_d0fd8cabebf807d5.jpg
[22:16:44] DOWNLOADIIING t_364b0669ed2f3378.jpg
[22:16:44] DOWNLOADIIING t_7f3c34ff05eb7c95.jpg
[22:16:44] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[22:16:44] DOWNLOADIIING t_f4d9bbe2fc21d5ae.jpg
[22:16:44] DOWNLOADIIING t_e1d06c52c18e20ce.jpg
[22:16:44] DOWNLOADIIING t_722d39e0d91dd954.jpg
[22:16:44] DOWNLOADIIING t_97828ef5de49a612.jpg
[22:16:44] DOWNLOADIIING t_98986cbb2cd2ae48.jpg
[22:16:44] [CHANNEL_SWITCH] 📊 About to set loaded messages. Count=7694
[22:16:44] [REFRESH_ALL] 📊 Server returned 7694 messages
[22:16:44] [REFRESH_ALL] 🔒 RACE CONDITION DETECTED: 1 messages added during request: [-6]
[22:16:44] [REFRESH_ALL] ✅ Preserved in-flight message id=-6, sender=Laurent, text='I think I will start in 15 min...'
[22:16:44] [REFRESH_ALL] 📊 Final merge: server=7694, preserved=1, total=7695
[22:16:44] [REFRESH_ALL] 📊 Displaying 50 of 7695 messages, hasMore=true
[22:16:44] [IMAGE] refreshAllFromServer: set hasMoreMessages=true, offset=50
[22:16:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:44] [CLIENT_SIG] Event received: type=0 messageId=18930
[22:16:44] [WS_EVENT] Received event: type=0, messageId=18930
[22:16:44] [WS_EVENT] 📨 New message notification (msgId=18930) - triggering incremental refresh, currentMsgCount=50
[22:16:44] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[22:16:44] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18929
[22:16:44] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18930,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:16:43"}
[22:16:44] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 21:16:43, "ok": 1, "file_name": , "message_id": 18930, "message_type": 0, "session_id": ILUIWU]
[22:16:44] [DB_UPGRADE] Upgrading message ID: -6 → 18930, preserveOriginalDate=false
[22:16:44] [DB_UPGRADE] ✅ Upgraded -6 → 18930 with send_status=0, 1 row(s) affected
[22:16:44] [SEND_UPGRADE] ✅ Updated chatMessages[49].id: -6 → 18930
[22:16:44] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[49].id: -6 → 18930
[22:16:44] ReloadData 9
[22:16:45] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:16:45] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:16:45] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=50
[22:16:45] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:47] [COMBINED_FETCH] Loaded 7694 read receipts, 926 messages with reactions
[22:16:47] [FOREGROUND] Enriched 0 messages with readBy data from server
[22:16:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:47] [COMBINED_FETCH] Loaded 7694 read receipts, 926 messages with reactions
[22:16:47] [FAST_REFRESH] Enriched 49 messages with readBy data
[22:16:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:47] [SERVER] Polling - attempting to reconnect...
[22:16:48] [COMBINED_FETCH] Loaded 7694 read receipts, 926 messages with reactions
[22:16:48] [FAKE MODE] Enriched 49 messages with readBy data
[22:16:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:50] ReloadData 14 (all 42 media thumbnails loaded) - applying tab 0 filtering
[22:16:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:16:52] [SERVER] Polling - attempting to reconnect...
[22:16:57] [SERVER] Polling - attempting to reconnect...
[22:17:02] [SERVER] Polling - attempting to reconnect...
[22:17:03] [MENU] dismissAnyExistingMenu called
[22:17:03] [MENU] dismissAnyExistingMenu completed
[22:17:05] [LOCK] Lock button tapped - locking app immediately
[22:17:05] [LOCK] Received lock app notification
[22:17:05] [LIFECYCLE] App resigning active - cleared crash flag
[22:17:06] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[22:17:06] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[22:17:06] [LIFECYCLE] App entering background - cleared crash flag
[22:17:06] [CLIENT_SIG] Disconnecting
[22:17:06] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:17:06] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[22:17:06] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:17:06] In cleanupPeer
[22:17:06] In cleanupPeer
[22:17:06] [LIFECYCLE] WebRTC audio disabled
[22:17:06] [LIFECYCLE] AVAudioSession deactivated
[22:17:06] [LIFECYCLE] All connections stopped
[22:17:06] [CLIENT_SIG] WebSocket closed with code 1001
[22:17:06] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:17:06] [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/}
[22:17:06] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:17:06] [SERVER] Stopped reconnect polling
[22:17:06] [WS] URLSession invalidated successfully
[22:17:06] Will request stop of video 0
[22:17:06] Will request stop of video 0
[22:17:06] [PIP] Removing 0 tracks from PiP for connection 0
[22:17:06] [PIP] ✅ All tracks removed for connection 0
[22:17:06] [PIP] Removing 0 tracks from PiP for connection 0
[22:17:06] [PIP] ✅ All tracks removed for connection 0
[22:19:23] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:19:23] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:19:23] [LIFECYCLE] App entering foreground - restoring connections
[22:19:23] [LIFECYCLE] Away > 2 minutes (136s) - will scroll to bottom
[22:19:23] [UPLOAD_RETRY] No pending uploads to retry
[22:19:23] [LIFECYCLE] Merged 926 reactions from local DB
[22:19:23] [LIFECYCLE] WebRTC audio re-enabled
[22:19:23] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:19:23] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:19:23] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:19:23] [VIEWER] Reconnecting after background - querying agents
[22:19:23] [UNSENT_RETRY] Checking for unsent messages...
[22:19:23] [PENDING_UPLOAD] Total pending upload messages: 0
[22:19:23] [UNSENT_RETRY] No unsent messages found
[22:19:23] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:19:23] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[22:19:23] [WS] Query connection failed - cleaning up all agent connections and views
[22:19:23] [CLEANUP] ========================================
[22:19:23] [CLEANUP] Cleaning up all agent connections and views
[22:19:23] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:19:23] [CLEANUP] Stopped and removed 0 video connections
[22:19:23] [CLEANUP] Removed 0 video views
[22:19:23] [CLEANUP] Removed 0 feed scroll views
[22:19:23] [CLEANUP] Removed 0 status labels
[22:19:23] [CLEANUP] Reset agent query state
[22:19:23] [CLEANUP] Updated page indicator
[22:19:23] [CLEANUP] Rebuilt video layout
[22:19:23] [CLEANUP] ✅ All agent connections and views cleaned up
[22:19:23] [CLEANUP] ========================================
[22:19:23] [SERVER] Starting reconnect polling (5s interval)
[22:19:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:23] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:19:23] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:19:23] [PUSH] handlePollEventsNotification userInfo: [:]
[22:19:23] [PUSH] No message_id in userInfo
[22:19:23] [PUSH] No operation_type in userInfo
[22:19:23] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:19:23] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[22:19:23] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:19:23] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:19:23] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[22:19:23] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18930
[22:19:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:23] [CLIENT_SIG] WebSocket opened
[22:19:23] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:19:23] [CLIENT_SIG] Connected! clientId=nltkvp8Rc6ISnLPJ
[22:19:23] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:19:23] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:19:24] [INCREMENTAL_SYNC] ✅ No new messages
[22:19:24] [FAST_REFRESH] Incremental sync complete - 50 messages
[22:19:24] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[22:19:24] [WS] Opening session at ws://crivello.dyndns.org:8081/
[22:19:25] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[22:19:25] HELLO → sent (cached token, role=query)
[22:19:25] [SIG] hello_ok received for query connection - ready to query agents
[22:19:25] [SIG] get_agents request sent for sessionId=ILUIWU
[22:19:25] [SIG] get_agents request sent for sessionId=iosILUIWU
[22:19:25] [SERVER] Stopped reconnect polling
[22:19:25] [PIN_AUTH] Correct PIN
[22:19:25] [SECURITY] Restored real session: ILUIWU
[22:19:25] [SECURITY] Restored real session: ILUIWU
[22:19:25] [SIG] agents_list received: []
[22:19:25] [SIG] agents_list received: []
[22:19:25] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[22:19:25] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[22:19:25] [AUTH] Away > 2 minutes (138s) - will scroll to bottom
[22:19:25] [AUTH] UI update complete
[22:19:25] [FAKE MODE] Exiting fake mode, restoring real session
[22:19:25] [SECURITY] Restored real session: ILUIWU
[22:19:25] [SECURITY] Saved real session: ILUIWU
[22:19:25] [FAKE MODE] ✅ Restored real session: ILUIWU
[22:19:25] [FAKE MODE] Loaded 50 messages (limited to page size)
[22:19:25] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:25] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[22:19:25] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[22:19:26] [USER] ✅ User registered successfully
[22:19:26] [PUSH] User registration after token update: success
[22:19:34] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[22:19:34] [WS] Query connection error - cleaning up all agent connections and views
[22:19:34] [CLEANUP] ========================================
[22:19:34] [CLEANUP] Cleaning up all agent connections and views
[22:19:34] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[22:19:34] [CLEANUP] Stopped and removed 0 video connections
[22:19:34] [CLEANUP] Removed 0 video views
[22:19:34] [CLEANUP] Removed 0 feed scroll views
[22:19:34] [CLEANUP] Removed 0 status labels
[22:19:34] [CLEANUP] Reset agent query state
[22:19:34] [CLEANUP] Updated page indicator
[22:19:34] [CLEANUP] Rebuilt video layout
[22:19:34] [CLEANUP] ✅ All agent connections and views cleaned up
[22:19:34] [CLEANUP] ========================================
[22:19:34] [SERVER] Starting reconnect polling (5s interval)
[22:19:37] [COMBINED_FETCH] Loaded 7695 read receipts, 926 messages with reactions
[22:19:37] [FOREGROUND] Enriched 44 messages with readBy data from server
[22:19:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:39] [SERVER] Polling - attempting to reconnect...
[22:19:40] [COMBINED_FETCH] Loaded 7695 read receipts, 926 messages with reactions
[22:19:40] [FAST_REFRESH] Enriched 50 messages with readBy data
[22:19:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:41] [COMBINED_FETCH] Loaded 7695 read receipts, 926 messages with reactions
[22:19:41] [FAKE MODE] Enriched 50 messages with readBy data
[22:19:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:19:44] [SERVER] Polling - attempting to reconnect...
[22:19:47] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:19:47] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[22:19:47] [SEND_MESSAGE] ✅ Added optimistic message id=-7 to arrays, newMsgCount=51
[22:19:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-7, 18930, 18929, 18928, 18927]
[22:19:47] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:19:47] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:19:49] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18931,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:19:48"}
[22:19:49] [CHAT] receive_message.php JSON: ["message_type": 0, "datesent_utc": 2026-01-23 21:19:48, "ok": 1, "session_id": ILUIWU, "message_id": 18931, "file_name": ]
[22:19:49] [DB_UPGRADE] Upgrading message ID: -7 → 18931, preserveOriginalDate=false
[22:19:49] [DB_UPGRADE] ✅ Upgraded -7 → 18931 with send_status=0, 1 row(s) affected
[22:19:49] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -7 → 18931
[22:19:49] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -7 → 18931
[22:19:49] ReloadData 9
[22:19:49] [CLIENT_SIG] Event received: type=0 messageId=18931
[22:19:49] [WS_EVENT] Received event: type=0, messageId=18931
[22:19:49] [WS_EVENT] 📨 New message notification (msgId=18931) - triggering incremental refresh, currentMsgCount=51
[22:19:49] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[22:19:49] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18931
[22:19:49] [INCREMENTAL_SYNC] ✅ No new messages
[22:19:49] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[22:19:49] [SERVER] Polling - attempting to reconnect...
[22:19:54] [SERVER] Polling - attempting to reconnect...
[22:19:59] [SERVER] Polling - attempting to reconnect...
[22:20:00] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[22:20:00] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[22:20:00] [SEND_MESSAGE] ✅ Added optimistic message id=-8 to arrays, newMsgCount=52
[22:20:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-8, 18931, 18930, 18929, 18928]
[22:20:00] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[22:20:00] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[22:20:02] [CLIENT_SIG] Event received: type=0 messageId=18932
[22:20:02] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18932,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 21:20:01"}
[22:20:02] [WS_EVENT] Received event: type=0, messageId=18932
[22:20:02] [WS_EVENT] 📨 New message notification (msgId=18932) - triggering incremental refresh, currentMsgCount=52
[22:20:02] [CHAT] receive_message.php JSON: ["file_name": , "ok": 1, "message_id": 18932, "session_id": ILUIWU, "message_type": 0, "datesent_utc": 2026-01-23 21:20:01]
[22:20:02] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[22:20:02] [DB_UPGRADE] Upgrading message ID: -8 → 18932, preserveOriginalDate=false
[22:20:02] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18931
[22:20:02] [DB_UPGRADE] ✅ Upgraded -8 → 18932 with send_status=0, 1 row(s) affected
[22:20:02] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -8 → 18932
[22:20:02] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -8 → 18932
[22:20:02] ReloadData 9
[22:20:02] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[22:20:02] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[22:20:02] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[22:20:02] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:20:04] [MUTE] Status sent to server: muted=0, response code=200
[22:20:04] [MUTE] Status sent to server: muted=0, response code=200
[22:20:04] [LIFECYCLE] App resigning active - cleared crash flag
[22:20:04] [SERVER] Polling - attempting to reconnect...
[22:20:05] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:20:05] [SECURITY] Saved background timestamp
[22:20:05] [LIFECYCLE] App entering background - cleared crash flag
[22:20:05] [CLIENT_SIG] Disconnecting
[22:20:05] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:20:05] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[22:20:05] [WS] Canceling WebSocket for query connection to iosILUIWU
[22:20:05] In cleanupPeer
[22:20:05] In cleanupPeer
[22:20:05] [LIFECYCLE] WebRTC audio disabled
[22:20:05] [LIFECYCLE] AVAudioSession deactivated
[22:20:05] [LIFECYCLE] All connections stopped
[22:20:05] [CLIENT_SIG] WebSocket closed with code 1001
[22:20:05] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:20:05] [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/}
[22:20:05] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:20:05] [SERVER] Stopped reconnect polling
[22:20:05] Will request stop of video 0
[22:20:05] [WS] URLSession invalidated successfully
[22:20:05] Will request stop of video 0
[22:20:05] [PIP] Removing 0 tracks from PiP for connection 0
[22:20:05] [PIP] ✅ All tracks removed for connection 0
[22:20:05] [PIP] Removing 0 tracks from PiP for connection 0
[22:20:05] [PIP] ✅ All tracks removed for connection 0
[22:24:33] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:24:33] [SECURITY] Timeout check: elapsed=268.1254072189331s, timeout=300.0s
[22:24:33] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:24:33] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:24:33] [LIFECYCLE] App entering foreground - restoring connections
[22:24:33] [LIFECYCLE] Away > 2 minutes (268s) - will scroll to bottom
[22:24:33] [UPLOAD_RETRY] No pending uploads to retry
[22:24:33] [LIFECYCLE] Merged 926 reactions from local DB
[22:24:33] [LIFECYCLE] WebRTC audio re-enabled
[22:24:33] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:24:33] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:24:33] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:24:33] [VIEWER] Reconnecting after background - querying agents
[22:24:33] [UNSENT_RETRY] Checking for unsent messages...
[22:24:33] [PENDING_UPLOAD] Total pending upload messages: 0
[22:24:33] [UNSENT_RETRY] No unsent messages found
[22:24:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:24:33] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[22:24:33] [SECURITY] Within timeout - cleared background flag
[22:24:33] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:24:33] [PUSH] handlePollEventsNotification userInfo: [:]
[22:24:33] [PUSH] No message_id in userInfo
[22:24:33] [PUSH] No operation_type in userInfo
[22:24:33] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:24:33] [FAST_REFRESH] Already have 52 messages - skipping local DB load
[22:24:33] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:24:33] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:24:33] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[22:24:33] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18932
[22:24:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:24:33] [CLIENT_SIG] WebSocket opened
[22:24:33] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:24:33] [CLIENT_SIG] Connected! clientId=UyXJNo4iJw5eCEig
[22:24:34] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:24:34] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:24:34] [INCREMENTAL_SYNC] ✅ No new messages
[22:24:34] [FAST_REFRESH] Incremental sync complete - 52 messages
[22:24:38] [MENU] dismissAnyExistingMenu called
[22:24:38] [MENU] dismissAnyExistingMenu completed
[22:24:38] [EMOJI_PICKER] Starting emoji picker for message 18922
[22:24:38] [MENU] Created button 'Reply' at index 0
[22:24:38] [MENU] Created button 'Copy' at index 1
[22:24:38] [MENU] Created button 'Delete' at index 2
[22:24:38] [MENU] Menu added at y=504.5
[22:24:38] [EMOJI_PICKER] ✅ Fetched 6 recent emojis
[22:24:38] [EMOJI_PICKER] ✅ Creating picker with 6 recent emojis
[22:24:38] [EMOJI_PICKER] ✅ Picker shown at y=371.5
[22:24:40] [REACTION] add 👄 to message 18922 (alreadyReacted: false)
[22:24:40] [MENU] dismissAnyExistingMenu called
[22:24:40] [MENU] Found menu with tag 9999, removing
[22:24:40] [MENU] Removing blur effect
[22:24:40] [MENU] Removing floating message snapshot
[22:24:40] [MENU] Dismissing emoji picker
[22:24:40] [MENU] Recorded dismissal time for debounce
[22:24:40] [MENU] dismissAnyExistingMenu completed
[22:24:40] [REACTION] Added 👄 reaction to message 18922
[22:24:41] [COMBINED_FETCH] Loaded 7697 read receipts, 926 messages with reactions
[22:24:41] [FOREGROUND] Enriched 0 messages with readBy data from server
[22:24:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:24:51] [MENU] dismissAnyExistingMenu called
[22:24:51] [MENU] dismissAnyExistingMenu completed
[22:24:52] [COMBINED_FETCH] Loaded 7697 read receipts, 926 messages with reactions
[22:24:52] [FAST_REFRESH] Enriched 52 messages with readBy data
[22:24:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:24:54] [LOCK] Lock button tapped - locking app immediately
[22:24:54] [LOCK] Received lock app notification
[22:24:55] [LIFECYCLE] App resigning active - cleared crash flag
[22:24:56] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[22:24:56] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[22:24:56] [LIFECYCLE] App entering background - cleared crash flag
[22:24:56] [CLIENT_SIG] Disconnecting
[22:24:56] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:24:56] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[22:24:56] In cleanupPeer
[22:24:56] In cleanupPeer
[22:24:56] [LIFECYCLE] WebRTC audio disabled
[22:24:56] [LIFECYCLE] AVAudioSession deactivated
[22:24:56] [LIFECYCLE] All connections stopped
[22:24:56] [CLIENT_SIG] WebSocket closed with code 1001
[22:24:56] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:24: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/}
[22:24:56] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:24:56] [SERVER] Stopped reconnect polling
[22:24:56] Will request stop of video 0
[22:24:56] Will request stop of video 0
[22:24:56] [PIP] Removing 0 tracks from PiP for connection 0
[22:24:56] [PIP] ✅ All tracks removed for connection 0
[22:24:56] [PIP] Removing 0 tracks from PiP for connection 0
[22:24:56] [PIP] ✅ All tracks removed for connection 0
[22:51:12] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[22:51:12] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[22:51:12] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:51:12] [LIFECYCLE] App entering foreground - restoring connections
[22:51:12] [LIFECYCLE] Away > 2 minutes (1576s) - will scroll to bottom
[22:51:12] [UPLOAD_RETRY] No pending uploads to retry
[22:51:12] [LIFECYCLE] Merged 927 reactions from local DB
[22:51:12] [LIFECYCLE] WebRTC audio re-enabled
[22:51:12] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[22:51:12] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[22:51:12] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[22:51:12] [VIEWER] Reconnecting after background - querying agents
[22:51:12] [UNSENT_RETRY] Checking for unsent messages...
[22:51:12] [PENDING_UPLOAD] Total pending upload messages: 0
[22:51:12] [UNSENT_RETRY] No unsent messages found
[22:51:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:51:12] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[22:51:12] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[22:51:12] [PUSH] handlePollEventsNotification userInfo: [:]
[22:51:12] [PUSH] No message_id in userInfo
[22:51:12] [PUSH] No operation_type in userInfo
[22:51:12] [FAST_REFRESH] Evolution disabled - performing incremental sync
[22:51:12] [FAST_REFRESH] Already have 52 messages - skipping local DB load
[22:51:12] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[22:51:12] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[22:51:12] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[22:51:12] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18932
[22:51:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18880, 18881, 18882, 18883, 18884]
[22:51:13] [CLIENT_SIG] WebSocket opened
[22:51:13] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[22:51:13] [INCREMENTAL_SYNC] ✅ No new messages
[22:51:13] [FAST_REFRESH] Incremental sync complete - 52 messages
[22:51:13] [CLIENT_SIG] Connected! clientId=b9c1HKQOs4bx_v3j
[22:51:13] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[22:51:13] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)[22:51:13] [LOG] Pruned 549 entries older than 3 hours
[22:51:13] [SECURITY] Restored real session: ILUIWU
[22:51:13] [SECURITY] Restored real session: ILUIWU
[22:51:13] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[22:51:13] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[22:51:13] [AUTH] Away > 2 minutes (1577s) - will scroll to bottom
[22:51:13] [AUTH] UI update complete
[22:51:13] [FAKE MODE] Exiting fake mode, restoring real session
[22:51:13] [SECURITY] Restored real session: ILUIWU
[22:51:13] [SECURITY] Saved real session: ILUIWU
[22:51:13] [FAKE MODE] ✅ Restored real session: ILUIWU
[22:51:13] [FAKE MODE] Loaded 50 messages (limited to page size)
[22:51:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18882, 18883, 18884, 18885, 18886]
[22:51:14] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[22:51:14] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[22:51:14] [USER] ✅ User registered successfully
[22:51:14] [PUSH] User registration after token update: success
[22:51:18] [MENU] dismissAnyExistingMenu called
[22:51:18] [MENU] dismissAnyExistingMenu completed
[22:51:20] [MENU] dismissAnyExistingMenu called
[22:51:20] [MENU] dismissAnyExistingMenu completed
[22:51:20] [SCROLL_BTN] Showing button - 379pt from bottom > half 379pt
[22:51:20] [MENU] dismissAnyExistingMenu called
[22:51:20] [MENU] dismissAnyExistingMenu completed
[22:51:22] [MENU] dismissAnyExistingMenu called
[22:51:22] [MENU] dismissAnyExistingMenu completed
[22:51:25] [MENU] dismissAnyExistingMenu called
[22:51:25] [MENU] dismissAnyExistingMenu completed
[22:51:25] [EMOJI_PICKER] Starting emoji picker for message 18922
[22:51:25] [MENU] Created button 'Reply' at index 0
[22:51:25] [MENU] Created button 'Copy' at index 1
[22:51:25] [MENU] Created button 'Delete' at index 2
[22:51:25] [MENU] Menu added at y=504.5
[22:51:25] [EMOJI_PICKER] ✅ Fetched 6 recent emojis
[22:51:25] [EMOJI_PICKER] ✅ Creating picker with 6 recent emojis
[22:51:25] [EMOJI_PICKER] ✅ Picker shown at y=371.5
[22:51:26] [REACTION] add 👄 to message 18922 (alreadyReacted: false)
[22:51:26] [MENU] dismissAnyExistingMenu called
[22:51:26] [MENU] Found menu with tag 9999, removing
[22:51:26] [MENU] Removing blur effect
[22:51:26] [MENU] Removing floating message snapshot
[22:51:26] [MENU] Dismissing emoji picker
[22:51:26] [MENU] Recorded dismissal time for debounce
[22:51:26] [MENU] dismissAnyExistingMenu completed
[22:51:26] [REACTION] Added 👄 reaction to message 18922
[22:51:31] [MENU] dismissAnyExistingMenu called
[22:51:31] [MENU] dismissAnyExistingMenu completed
[22:51:31] [SCROLL_BTN] Showing button - 385pt from bottom > half 379pt
[22:51:33] [MENU] dismissAnyExistingMenu called
[22:51:33] [MENU] dismissAnyExistingMenu completed
[22:51:34] [COMBINED_FETCH] Loaded 7697 read receipts, 927 messages with reactions
[22:51:34] [FAKE MODE] Enriched 50 messages with readBy data
[22:51:35] [MENU] dismissAnyExistingMenu called
[22:51:35] [MENU] dismissAnyExistingMenu completed
[22:51:35] [MENU] dismissAnyExistingMenu called
[22:51:35] [MENU] dismissAnyExistingMenu completed
[22:51:36] [COMBINED_FETCH] Loaded 7697 read receipts, 927 messages with reactions
[22:51:36] [FOREGROUND] Enriched 0 messages with readBy data from server
[22:51:36] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[22:51:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18882, 18883, 18884, 18885, 18886]
[22:51:39] [LIFECYCLE] App resigning active - cleared crash flag
[22:51:39] [MUTE] Status sent to server: muted=1, response code=200
[22:51:39] [MUTE] Status sent to server: muted=1, response code=200
[22:51:40] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[22:51:40] [SECURITY] Saved background timestamp
[22:51:40] [LIFECYCLE] App entering background - cleared crash flag
[22:51:40] [CLIENT_SIG] Disconnecting
[22:51:40] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[22:51:40] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[22:51:40] In cleanupPeer
[22:51:40] In cleanupPeer
[22:51:40] [LIFECYCLE] WebRTC audio disabled
[22:51:40] [LIFECYCLE] AVAudioSession deactivated
[22:51:40] [LIFECYCLE] All connections stopped
[22:51:40] [CLIENT_SIG] WebSocket closed with code 1001
[22:51:40] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[22:51:40] [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/}
[22:51:40] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[22:51:40] [SERVER] Stopped reconnect polling
[22:51:40] Will request stop of video 0
[22:51:40] Will request stop of video 0
[22:51:40] [PIP] Removing 0 tracks from PiP for connection 0
[22:51:40] [PIP] ✅ All tracks removed for connection 0
[22:51:40] [PIP] Removing 0 tracks from PiP for connection 0
[22:51:40] [PIP] ✅ All tracks removed for connection 0
[23:01:08] [SECURITY] Timeout check: elapsed=568.437273979187s, timeout=300.0s
[23:01:08] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[23:01:08] [AUTH] ✅ All guards passed, showing privacy cover
[23:01:08] [LIFECYCLE] App entering foreground - restoring connections
[23:01:08] [LIFECYCLE] Away > 2 minutes (568s) - will scroll to bottom
[23:01:08] [UPLOAD_RETRY] No pending uploads to retry
[23:01:08] [LIFECYCLE] Merged 927 reactions from local DB
[23:01:08] [LIFECYCLE] WebRTC audio re-enabled
[23:01:08] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:01:08] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:01:08] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:01:08] [VIEWER] Reconnecting after background - querying agents
[23:01:08] [UNSENT_RETRY] Checking for unsent messages...
[23:01:08] [PENDING_UPLOAD] Total pending upload messages: 0
[23:01:08] [UNSENT_RETRY] No unsent messages found
[23:01:08] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:01:08] [COMBINED_FETCH] Loaded 7697 read receipts, 927 messages with reactions
[23:01:08] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:01:08] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:01:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18882, 18883, 18884, 18885, 18886]
[23:01:08] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:01:08] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:01:08] [PUSH] handlePollEventsNotification userInfo: [:]
[23:01:08] [PUSH] No message_id in userInfo
[23:01:08] [PUSH] No operation_type in userInfo
[23:01:08] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:01:08] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:01:08] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:01:08] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:01:08] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:01:08] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18932
[23:01:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18882, 18883, 18884, 18885, 18886]
[23:01:09] [CLIENT_SIG] WebSocket opened
[23:01:09] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:01:09] [CLIENT_SIG] Connected! clientId=H0-UobnEzp7z_1aD
[23:01:09] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:01:09] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:01:09] [INCREMENTAL_SYNC] ✅ No new messages
[23:01:09] [FAST_REFRESH] Incremental sync complete - 50 messages[23:01:10] [LOG] Pruned 114 entries older than 3 hours
[23:01:10] [SECURITY] Restored real session: ILUIWU
[23:01:10] [SECURITY] Restored real session: ILUIWU
[23:01:10] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:01:10] [AUTH] Away > 2 minutes (570s) - will scroll to bottom
[23:01:10] [AUTH] UI update complete
[23:01:10] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:01:10] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:01:10] [FAKE MODE] Exiting fake mode, restoring real session
[23:01:10] [SECURITY] Restored real session: ILUIWU
[23:01:10] [SECURITY] Saved real session: ILUIWU
[23:01:10] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:01:10] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:01:10] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:01:10] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:01:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18882, 18883, 18884, 18885, 18886]
[23:01:10] [USER] ✅ User registered successfully
[23:01:10] [PUSH] User registration after token update: success
[23:01:17] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:01:17] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[23:01:17] [SEND_MESSAGE] ✅ Added optimistic message id=-9 to arrays, newMsgCount=51
[23:01:17] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-9, 18932, 18931, 18930, 18929]
[23:01:17] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:01:17] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:01:18] [CLIENT_SIG] Event received: type=0 messageId=18933
[23:01:18] [WS_EVENT] Received event: type=0, messageId=18933
[23:01:18] [WS_EVENT] 📨 New message notification (msgId=18933) - triggering incremental refresh, currentMsgCount=51
[23:01:18] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[23:01:18] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18932
[23:01:18] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18933,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:01:17"}
[23:01:18] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:01:17, "file_name": , "message_id": 18933, "ok": 1, "message_type": 0, "session_id": ILUIWU]
[23:01:18] [DB_UPGRADE] Upgrading message ID: -9 → 18933, preserveOriginalDate=false
[23:01:18] [DB_UPGRADE] ✅ Upgraded -9 → 18933 with send_status=0, 1 row(s) affected
[23:01:18] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -9 → 18933
[23:01:18] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -9 → 18933
[23:01:18] ReloadData 9
[23:01:19] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:01:19] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:01:19] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[23:01:19] [LOCK] Lock button tapped - locking app immediately
[23:01:19] [LOCK] Received lock app notification
[23:01:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18882, 18883, 18884, 18885, 18886]
[23:01:20] [LIFECYCLE] App resigning active - cleared crash flag
[23:01:21] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:01:21] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:01:21] [LIFECYCLE] App entering background - cleared crash flag
[23:01:21] [CLIENT_SIG] Disconnecting
[23:01:21] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:01:21] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:01:21] In cleanupPeer
[23:01:21] In cleanupPeer
[23:01:21] [LIFECYCLE] WebRTC audio disabled
[23:01:21] [LIFECYCLE] AVAudioSession deactivated
[23:01:21] [LIFECYCLE] All connections stopped
[23:01:21] [CLIENT_SIG] WebSocket closed with code 1001
[23:01:21] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:01:21] [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/}
[23:01:21] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:01:21] [SERVER] Stopped reconnect polling
[23:01:21] Will request stop of video 0
[23:01:21] Will request stop of video 0
[23:01:21] [PIP] Removing 0 tracks from PiP for connection 0
[23:01:21] [PIP] ✅ All tracks removed for connection 0
[23:01:21] [PIP] Removing 0 tracks from PiP for connection 0
[23:01:21] [PIP] ✅ All tracks removed for connection 0
[23:03:13] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:03:13] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:03:13] [LIFECYCLE] App entering foreground - restoring connections
[23:03:13] [UPLOAD_RETRY] No pending uploads to retry
[23:03:13] [NETWORK] Status changed: connected
[23:03:13] [LIFECYCLE] Merged 927 reactions from local DB
[23:03:13] [LIFECYCLE] WebRTC audio re-enabled
[23:03:13] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:03:13] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:03:13] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:03:13] [VIEWER] Reconnecting after background - querying agents
[23:03:13] [UNSENT_RETRY] Checking for unsent messages...
[23:03:13] [PENDING_UPLOAD] Total pending upload messages: 0
[23:03:13] [UNSENT_RETRY] No unsent messages found
[23:03:13] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:03:13] [COMBINED_FETCH] Loaded 7697 read receipts, 927 messages with reactions
[23:03:13] [FOREGROUND] Enriched 42 messages with readBy data from server
[23:03:13] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:03:13] [FAST_REFRESH] Enriched 0 messages with readBy data
[23:03:13] [FAKE MODE] Enriched 0 messages with readBy data
[23:03:13] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:03:13] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:03:13] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:03:13] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:03:13] [PUSH] handlePollEventsNotification userInfo: [:]
[23:03:13] [PUSH] No message_id in userInfo
[23:03:13] [PUSH] No operation_type in userInfo
[23:03:13] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:03:13] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[23:03:13] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:03:13] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:03:13] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:03:13] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[23:03:13] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18933
[23:03:13] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18882, 18883, 18884, 18885, 18886]
[23:03:13] [CLIENT_SIG] WebSocket opened
[23:03:13] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:03:13] [CLIENT_SIG] Connected! clientId=2j-LNlBTp-tkSJ1Y
[23:03:13] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:03:13] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:03:14] [INCREMENTAL_SYNC] ✅ No new messages
[23:03:14] [FAST_REFRESH] Incremental sync complete - 51 messages
[23:03:15] [PIN_AUTH] Correct PIN
[23:03:15] [SECURITY] Restored real session: ILUIWU
[23:03:15] [SECURITY] Restored real session: ILUIWU
[23:03:15] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:03:15] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:03:15] [AUTH] UI update complete
[23:03:15] [FAKE MODE] Exiting fake mode, restoring real session
[23:03:15] [SECURITY] Restored real session: ILUIWU
[23:03:15] [SECURITY] Saved real session: ILUIWU
[23:03:15] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:03:15] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:03:15] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:03:15] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:03:15] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:03:15] [USER] ✅ User registered successfully
[23:03:15] [PUSH] User registration after token update: success
[23:03:21] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:03:21] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[23:03:21] [SEND_MESSAGE] ✅ Added optimistic message id=-10 to arrays, newMsgCount=51
[23:03:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-10, 18933, 18932, 18931, 18930]
[23:03:21] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:03:21] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:03:23] [CLIENT_SIG] Event received: type=0 messageId=18934
[23:03:23] [WS_EVENT] Received event: type=0, messageId=18934
[23:03:23] [WS_EVENT] 📨 New message notification (msgId=18934) - triggering incremental refresh, currentMsgCount=51
[23:03:23] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[23:03:23] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18933
[23:03:23] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18934,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:03:21"}
[23:03:23] [CHAT] receive_message.php JSON: ["message_type": 0, "file_name": , "message_id": 18934, "session_id": ILUIWU, "datesent_utc": 2026-01-23 22:03:21, "ok": 1]
[23:03:23] [DB_UPGRADE] Upgrading message ID: -10 → 18934, preserveOriginalDate=false
[23:03:23] [DB_UPGRADE] ✅ Upgraded -10 → 18934 with send_status=0, 1 row(s) affected
[23:03:23] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -10 → 18934
[23:03:23] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -10 → 18934
[23:03:23] ReloadData 9
[23:03:24] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:03:24] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:03:24] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[23:03:24] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:03:26] [COMBINED_FETCH] Loaded 7698 read receipts, 927 messages with reactions
[23:03:26] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:03:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:03:26] [COMBINED_FETCH] Loaded 7698 read receipts, 927 messages with reactions
[23:03:26] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:03:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:03:27] [COMBINED_FETCH] Loaded 7698 read receipts, 927 messages with reactions
[23:03:27] [FAKE MODE] Enriched 50 messages with readBy data
[23:03:27] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:03:36] [MENU] dismissAnyExistingMenu called
[23:03:36] [MENU] dismissAnyExistingMenu completed
[23:03:44] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:03:44] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[23:03:44] [SEND_MESSAGE] ✅ Added optimistic message id=-11 to arrays, newMsgCount=52
[23:03:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-11, 18934, 18933, 18932, 18931]
[23:03:44] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:03:44] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:03:46] [CLIENT_SIG] Event received: type=0 messageId=18935
[23:03:46] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18935,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:03:44"}
[23:03:46] [WS_EVENT] Received event: type=0, messageId=18935
[23:03:46] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:03:44, "session_id": ILUIWU, "message_type": 0, "file_name": , "ok": 1, "message_id": 18935]
[23:03:46] [WS_EVENT] 📨 New message notification (msgId=18935) - triggering incremental refresh, currentMsgCount=52
[23:03:46] [DB_UPGRADE] Upgrading message ID: -11 → 18935, preserveOriginalDate=false
[23:03:46] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[23:03:46] [DB_UPGRADE] ✅ Upgraded -11 → 18935 with send_status=0, 1 row(s) affected
[23:03:46] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18935
[23:03:46] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -11 → 18935
[23:03:46] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -11 → 18935
[23:03:46] ReloadData 9
[23:03:47] [INCREMENTAL_SYNC] ✅ No new messages
[23:03:47] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[23:03:52] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:03:52] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=52, isReloading=false
[23:03:52] [SEND_MESSAGE] ✅ Added optimistic message id=-12 to arrays, newMsgCount=53
[23:03:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-12, 18935, 18934, 18933, 18932]
[23:03:52] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:03:52] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:03:53] [CLIENT_SIG] Event received: type=0 messageId=18936
[23:03:53] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18936,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:03:52"}
[23:03:53] [WS_EVENT] Received event: type=0, messageId=18936
[23:03:53] [WS_EVENT] 📨 New message notification (msgId=18936) - triggering incremental refresh, currentMsgCount=53
[23:03:53] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "file_name": , "message_id": 18936, "datesent_utc": 2026-01-23 22:03:52, "ok": 1, "message_type": 0]
[23:03:53] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53
[23:03:53] [DB_UPGRADE] Upgrading message ID: -12 → 18936, preserveOriginalDate=false
[23:03:53] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18935
[23:03:53] [DB_UPGRADE] ✅ Upgraded -12 → 18936 with send_status=0, 1 row(s) affected
[23:03:53] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -12 → 18936
[23:03:53] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -12 → 18936
[23:03:53] ReloadData 9
[23:03:53] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:03:53] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:03:53] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[23:03:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:04:12] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:04:12] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=53, isReloading=false
[23:04:12] [SEND_MESSAGE] ✅ Added optimistic message id=-13 to arrays, newMsgCount=54
[23:04:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-13, 18936, 18935, 18934, 18933]
[23:04:12] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:04:12] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:04:14] [CLIENT_SIG] Event received: type=0 messageId=18937
[23:04:14] [WS_EVENT] Received event: type=0, messageId=18937
[23:04:14] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18937,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:04:13"}
[23:04:14] [WS_EVENT] 📨 New message notification (msgId=18937) - triggering incremental refresh, currentMsgCount=54
[23:04:14] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[23:04:14] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "datesent_utc": 2026-01-23 22:04:13, "message_id": 18937, "ok": 1, "message_type": 0, "file_name": ]
[23:04:14] [DB_UPGRADE] Upgrading message ID: -13 → 18937, preserveOriginalDate=false
[23:04:14] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18936
[23:04:14] [DB_UPGRADE] ✅ Upgraded -13 → 18937 with send_status=0, 1 row(s) affected
[23:04:14] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -13 → 18937
[23:04:14] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -13 → 18937
[23:04:14] ReloadData 9
[23:04:14] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:04:14] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:04:14] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54
[23:04:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:04:19] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:04:19] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false
[23:04:19] [SEND_MESSAGE] ✅ Added optimistic message id=-14 to arrays, newMsgCount=55
[23:04:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-14, 18937, 18936, 18935, 18934]
[23:04:19] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:04:19] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:04:20] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18938,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:04:19"}
[23:04:20] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "datesent_utc": 2026-01-23 22:04:19, "message_id": 18938, "ok": 1, "message_type": 0, "file_name": ]
[23:04:20] [DB_UPGRADE] Upgrading message ID: -14 → 18938, preserveOriginalDate=false
[23:04:20] [CLIENT_SIG] Event received: type=0 messageId=18938
[23:04:20] [WS_EVENT] Received event: type=0, messageId=18938
[23:04:20] [WS_EVENT] 📨 New message notification (msgId=18938) - triggering incremental refresh, currentMsgCount=55
[23:04:20] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[23:04:20] [DB_UPGRADE] ✅ Upgraded -14 → 18938 with send_status=0, 1 row(s) affected
[23:04:20] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18938
[23:04:20] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -14 → 18938
[23:04:20] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -14 → 18938
[23:04:20] ReloadData 9
[23:04:20] [INCREMENTAL_SYNC] ✅ No new messages
[23:04:20] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[23:04:26] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:04:26] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=55, isReloading=false
[23:04:26] [SEND_MESSAGE] ✅ Added optimistic message id=-15 to arrays, newMsgCount=56
[23:04:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[-15, 18938, 18937, 18936, 18935]
[23:04:26] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:04:26] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:04:29] [CLIENT_SIG] Event received: type=0 messageId=18939
[23:04:29] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18939,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:04:27"}
[23:04:29] [WS_EVENT] Received event: type=0, messageId=18939
[23:04:29] [WS_EVENT] 📨 New message notification (msgId=18939) - triggering incremental refresh, currentMsgCount=56
[23:04:29] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "file_name": , "message_type": 0, "ok": 1, "datesent_utc": 2026-01-23 22:04:27, "message_id": 18939]
[23:04:29] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56
[23:04:29] [DB_UPGRADE] Upgrading message ID: -15 → 18939, preserveOriginalDate=false
[23:04:29] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18938
[23:04:29] [DB_UPGRADE] ✅ Upgraded -15 → 18939 with send_status=0, 1 row(s) affected
[23:04:29] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -15 → 18939
[23:04:29] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -15 → 18939
[23:04:29] ReloadData 9
[23:04:29] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:04:29] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:04:29] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=56
[23:04:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:04:35] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:04:35] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=56, isReloading=false
[23:04:35] [SEND_MESSAGE] ✅ Added optimistic message id=-16 to arrays, newMsgCount=57
[23:04:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[-16, 18939, 18938, 18937, 18936]
[23:04:35] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:04:35] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:04:37] [CLIENT_SIG] Event received: type=0 messageId=18940
[23:04:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18940,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:04:35"}
[23:04:37] [WS_EVENT] Received event: type=0, messageId=18940
[23:04:37] [WS_EVENT] 📨 New message notification (msgId=18940) - triggering incremental refresh, currentMsgCount=57
[23:04:37] [CHAT] receive_message.php JSON: ["message_type": 0, "datesent_utc": 2026-01-23 22:04:35, "message_id": 18940, "session_id": ILUIWU, "file_name": , "ok": 1]
[23:04:37] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=57
[23:04:37] [DB_UPGRADE] Upgrading message ID: -16 → 18940, preserveOriginalDate=false
[23:04:37] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18939
[23:04:37] [DB_UPGRADE] ✅ Upgraded -16 → 18940 with send_status=0, 1 row(s) affected
[23:04:37] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -16 → 18940
[23:04:37] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -16 → 18940
[23:04:37] ReloadData 9
[23:04:38] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:04:38] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:04:38] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=57
[23:04:38] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:04:45] [CAMERA] Switch-over factors: [2, 8]
[23:04:45] [CAMERA] Virtual device max zoom: 123.75
[23:04:45] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[23:04:45] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[23:04:45] [CAMERA] 2x: virtual device at zoom 4.0
[23:04:45] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[23:04:45] [CAMERA] 8x: virtual device at zoom 16.0
[23:04:45] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[23:04:45] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[23:04:45] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:04:45] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:04:45] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:04:45] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:04:45] [VOLUME] Starting volume button monitoring
[23:04:45] [VOLUME] Hidden MPVolumeView installed
[23:04:45] [VOLUME] Observing volume (no audio session activation), initial volume: 0.2
[23:04:45] [VOLUME] Volume observation started
[23:04:45] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:04:45] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:04:45] [CAMERA] Configuring focus for Front Camera
[23:04:45] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:04:46] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[23:04:46] [CAMERA] Switched to continuous autofocus, lens position: 0.3215686
[23:04:46] [CAMERA] flipTapped - switching to: BACK
[23:04:47] [CAMERA] flipTapped - device: Back Triple Camera, activeFormat: 4032x3024
[23:04:47] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetPhoto
[23:04:47] [CAMERA] flipTapped - set initial zoom to 2.0
[23:04:47] [CAMERA] Configuring focus for Back Triple Camera
[23:04:47] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:04:47] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[23:04:48] [CAMERA] Switched to continuous autofocus, lens position: 0.27058822
[23:04:55] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[23:04:55] [HAPTIC] Triggering peek haptic for photo
[23:04:55] [VOLUME] Stopping volume button monitoring
[23:04:55] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:04:55] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:04:55] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:04:55] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:04:56] [GALLERY_DB] ✅ Loaded 492 media messages
[23:04:56] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:04:56] [GALLERY] First 5 after sort (newest first):
[23:04:56] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:04:56] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:04:56] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:04:56] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:04:56] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:04:56] [SCROLL_BTN] Showing button - 309pt from bottom > half 223pt
[23:05:00] Chosen timer = -2
[23:05:00] [MEDIA_SEND] ========== NEW UPLOAD ==========
[23:05:00] [MEDIA_SEND] onSend called
[23:05:00] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/F02C1044-C3B5-4884-80EB-75057DEC09D8.jpg
[23:05:00] [MEDIA_SEND] Source file exists: true
[23:05:00] [MEDIA_SEND] Original filename: F02C1044-C3B5-4884-80EB-75057DEC09D8.jpg
[23:05:00] [MEDIA_SEND] Random filename: 09af99d4941567c9.jpg
[23:05:00] [MEDIA_SEND] File extension: jpg
[23:05:00] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/09af99d4941567c9.jpg
[23:05:00] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_09af99d4941567c9.jpg
[23:05:00] [MEDIA_SEND] Source file size: 1746755 bytes (1.67 MB)
[23:05:00] [MEDIA_SEND] Copying file (<100MB)
[23:05:00] [MEDIA_SEND] File copied successfully
[23:05:00] [MEDIA_SEND] Destination file exists: true
[23:05:00] [MEDIA_SEND] Destination file size: 1746755 bytes
[23:05:00] [MEDIA_SEND] Creating thumbnail...
[23:05:00] [MEDIA_SEND] Thumbnail created in 0.03s
[23:05:00] [MEDIA_SEND] Thumbnail dimensions: (300.0, 400.0)
[23:05:00] [MEDIA_SEND] Thumbnail exists: true
[23:05:00] [MEDIA_SEND] Thumbnail file size: 29012 bytes
[23:05:00] [MEDIA_SEND] Sending message to server...
[23:05:00] [MEDIA_SEND] Caption: ''
[23:05:00] [MEDIA_SEND] Timer: -2
[23:05:00] [MEDIA_SEND] Filename: 09af99d4941567c9.jpg
[23:05:00] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[23:05:00] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=57, isReloading=false
[23:05:00] [MEDIA_SEND] 📤 Creating media message: id=-17, file=09af99d4941567c9.jpg, isGiphy=false, upload_status=1 (pending)
[23:05:00] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[23:05:00] [SEND_MESSAGE] ✅ Added optimistic message id=-17 to arrays, newMsgCount=58
[23:05:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[-17, 18940, 18939, 18938, 18937]
[23:05:00] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:05:00] [CELL_UPLOAD] configure: msgId=-17, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:05:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:05:00] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:00] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:05:00] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:05:00] [MEDIA_SEND] sendMessage API call completed
[23:05:00] [MEDIA_SEND] Starting THUMBNAIL upload: t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:05:00] [UPLOAD_ENQUEUE] 📥 File: t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:05:00] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[23:05:00] [UPLOAD_QUEUE] Enqueued upload id=649 for t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:05:00] [UPLOAD_DEBUG] Item ID: 649
[23:05:00] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_DEBUG] Random filename: t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:05:00] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:05:00] [UPLOAD_DEBUG] Retry count: 0
[23:05:00] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_09af99d4941567c9.jpg, status=uploading (2), progress=0.0%
[23:05:00] [UPLOAD_DEBUG] File exists: true
[23:05:00] [UPLOAD_DEBUG] File size: 29012 bytes (0.0 MB)
[23:05:00] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:05:00] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:05:00] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:05:00] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:05:00] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[23:05:00] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/C6EF0F50-72B4-453E-85A0-DFF007AEAE7E.upload
[23:05:00] [UPLOAD_DEBUG] File size: 29012 bytes, in-memory threshold: 10485760 bytes
[23:05:00] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[23:05:00] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (29494 bytes)
[23:05:00] [UPLOAD_DEBUG] Creating background upload task...
[23:05:00] [UPLOAD_DEBUG] Task created with identifier: 1
[23:05:00] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:05:00] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:05:00] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:05:00] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=1 | file=t_09af99d4941567c9.jpg | size=0.0MB | retries=0
[23:05:00] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:05:00] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:05:00] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:05:00] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:05:00] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:05:00] [GALLERY_DB] ✅ Loaded 492 media messages
[23:05:00] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:05:00] [GALLERY] First 5 after sort (newest first):
[23:05:00] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:05:00] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:05:00] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:05:00] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:05:00] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:05:00] [UPLOAD_STATUS] 📬 Received notification: file=t_09af99d4941567c9.jpg, status=2 (uploading)
[23:05:00] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_STATUS] 💾 Updating DB: file=t_09af99d4941567c9.jpg, status=2 (uploading)
[23:05:00] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_09af99d4941567c9.jpg not found in local_messages
[23:05:00] [UPLOAD_PROGRESS] t_09af99d4941567c9.jpg: 100% (0.0/0.0 MB) task=1
[23:05:00] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_09af99d4941567c9.jpg, status=uploading (2), progress=100.0%
[23:05:00] [UPLOAD_STATUS] 📬 Received notification: file=t_09af99d4941567c9.jpg, status=2 (uploading)
[23:05:00] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_09af99d4941567c9.jpg
[23:05:00] [UPLOAD_STATUS] 💾 Updating DB: file=t_09af99d4941567c9.jpg, status=2 (uploading)
[23:05:00] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_09af99d4941567c9.jpg not found in local_messages
[23:05:00] [CLIENT_SIG] Event received: type=0 messageId=18941
[23:05:00] [WS_EVENT] Received event: type=0, messageId=18941
[23:05:00] [WS_EVENT] 📨 New message notification (msgId=18941) - triggering incremental refresh, currentMsgCount=58
[23:05:00] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=58
[23:05:00] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18941,"session_id":"ILUIWU","message_type":1,"file_name":"09af99d4941567c9.jpg","datesent_utc":"2026-01-23 22:05:00"}
[23:05:00] [CHAT] receive_message.php JSON: ["message_id": 18941, "session_id": ILUIWU, "datesent_utc": 2026-01-23 22:05:00, "message_type": 1, "file_name": 09af99d4941567c9.jpg, "ok": 1]
[23:05:00] [DB_UPGRADE] Upgrading message ID: -17 → 18941, preserveOriginalDate=false
[23:05:00] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18940
[23:05:00] [DB_UPGRADE] ✅ Upgraded -17 → 18941 with send_status=0, 1 row(s) affected
[23:05:00] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -17 → 18941
[23:05:00] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -17 → 18941
[23:05:00] ReloadData 9
[23:05:01] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:05:01] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:05:01] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:01] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:05:01] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:05:01] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:05:01] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=58
[23:05:01] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:05:01] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:05:01] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:05:01] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:01] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:05:01] [UPLOAD_RESPONSE] Started receiving response for task 1
[23:05:01] [UPLOAD_METRICS] Task 1 metrics:
[23:05:01] [UPLOAD_METRICS]   Total time: 0.93s
[23:05:01] [UPLOAD_METRICS]   Upload time: 0.00s
[23:05:01] [UPLOAD_METRICS]   Response time: 0.00s
[23:05:01] [UPLOAD_METRICS]   Network protocol: http/1.1
[23:05:01] [UPLOAD_METRICS]   Proxy: no
[23:05:01] [UPLOAD_METRICS]   Reused connection: no
[23:05:01] [UPLOAD_COMPLETE] ========== Task Completed ==========
[23:05:01] [UPLOAD_COMPLETE] Task ID: 1
[23:05:01] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[23:05:01] [UPLOAD_COMPLETE] Filename: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_COMPLETE] Retry count: 0
[23:05:01] [UPLOAD_COMPLETE] HTTP Status: 200
[23:05:01] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Type"): application/json, AnyHashable("Connection"): Keep-Alive, AnyHashable("Date"): Fri, 23 Jan 2026 22:05:00 GMT, AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Content-Length"): 217]
[23:05:01] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_09af99d4941567c9.jpg","orig_name":"t_09af99d4941567c9.jpg","size":29012,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":29494}}
[23:05:01] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[23:05:01] [UPLOAD_COMPLETE] Server filename: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_VERIFY] Verifying file exists: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_VERIFY] ✅ File verified: t_09af99d4941567c9.jpg (size: 29012)
[23:05:01] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_09af99d4941567c9.jpg | id=649 | retries=0
[23:05:01] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[23:05:01] [UPLOAD_COMPLETE] ✅ File: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_COMPLETE] ✅ Queue ID: 649
[23:05:01] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[23:05:01] [UPLOAD_COMPLETE] ✅ Server filename: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[23:05:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_09af99d4941567c9.jpg, status=complete (0), progress=0.0%
[23:05:01] [UPLOAD_STATUS] 📬 Received notification: file=t_09af99d4941567c9.jpg, status=0 (complete)
[23:05:01] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_09af99d4941567c9.jpg
[23:05:01] [UPLOAD_STATUS] 💾 Updating DB: file=t_09af99d4941567c9.jpg, status=0 (complete)
[23:05:01] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_09af99d4941567c9.jpg not found in local_messages
[23:05:01] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=649
[23:05:01] [MEDIA_SEND] Thumbnail uploaded successfully in 1.29s
[23:05:01] [MEDIA_SEND] Thumbnail server filename: t_09af99d4941567c9.jpg
[23:05:01] [MEDIA_SEND] Starting MAIN FILE upload: 09af99d4941567c9.jpg
[23:05:01] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:05:01] [UPLOAD_ENQUEUE] 📥 File: 09af99d4941567c9.jpg
[23:05:01] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/09af99d4941567c9.jpg
[23:05:01] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:05:01] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 1.7 MB
[23:05:01] [UPLOAD_QUEUE] Enqueued upload id=650 for 09af99d4941567c9.jpg
[23:05:01] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:05:01] [UPLOAD_DEBUG] Item ID: 650
[23:05:01] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/09af99d4941567c9.jpg
[23:05:01] [UPLOAD_DEBUG] Random filename: 09af99d4941567c9.jpg
[23:05:01] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:05:01] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:05:01] [UPLOAD_DEBUG] Retry count: 0
[23:05:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=09af99d4941567c9.jpg, status=uploading (2), progress=0.0%
[23:05:01] [UPLOAD_STATUS] 📬 Received notification: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:01] [UPLOAD_DEBUG] File exists: true
[23:05:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[57]: 1 → 2
[23:05:01] [UPLOAD_STATUS] 📝 Updated chatMessages[57]: status=2
[23:05:01] [UPLOAD_STATUS] 💾 Updating DB: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:01] [UPLOAD_DEBUG] File size: 1746755 bytes (1.7 MB)
[23:05:01] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:05:01] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:05:01] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:05:01] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:05:01] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[23:05:01] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/9860523B-B1E6-47E0-9F02-904F2BDAD232.upload
[23:05:01] [UPLOAD_DEBUG] File size: 1746755 bytes, in-memory threshold: 10485760 bytes
[23:05:01] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[23:05:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=09af99d4941567c9.jpg
[23:05:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:01] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (1747231 bytes)
[23:05:01] [UPLOAD_DEBUG] Creating background upload task...
[23:05:01] [UPLOAD_DEBUG] Task created with identifier: 2
[23:05:01] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:05:01] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:05:01] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=2 | file=09af99d4941567c9.jpg | size=1.7MB | retries=0
[23:05:01] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:05:01] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:05:01] [UPLOAD_PROGRESS] 09af99d4941567c9.jpg: 60% (1.0/1.7 MB) task=2
[23:05:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=09af99d4941567c9.jpg, status=uploading (2), progress=60.0%
[23:05:01] [UPLOAD_STATUS] 📬 Received notification: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[57]: 2 → 2
[23:05:01] [UPLOAD_STATUS] 📝 Updated chatMessages[57]: status=2
[23:05:01] [UPLOAD_STATUS] 💾 Updating DB: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=09af99d4941567c9.jpg
[23:05:01] [MEDIA_SEND] Main upload progress: 60%
[23:05:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6001358721313896) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:01] [PROGRESS] Updated cell for 09af99d4941567c9.jpg: 60%
[23:05:05] [UPLOAD_PROGRESS] 09af99d4941567c9.jpg: 90% (1.5/1.7 MB) task=2
[23:05:05] [UPLOAD_NOTIFY] 📣 Posting notification: file=09af99d4941567c9.jpg, status=uploading (2), progress=90.0%
[23:05:05] [UPLOAD_STATUS] 📬 Received notification: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:05] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[57]: 2 → 2
[23:05:05] [UPLOAD_STATUS] 📝 Updated chatMessages[57]: status=2
[23:05:05] [UPLOAD_STATUS] 💾 Updating DB: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:05] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=09af99d4941567c9.jpg
[23:05:05] [MEDIA_SEND] Main upload progress: 90%
[23:05:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9002038081970845) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:05] [PROGRESS] Updated cell for 09af99d4941567c9.jpg: 90%
[23:05:12] [UPLOAD_PROGRESS] 09af99d4941567c9.jpg: 100% (1.7/1.7 MB) task=2
[23:05:12] [UPLOAD_NOTIFY] 📣 Posting notification: file=09af99d4941567c9.jpg, status=uploading (2), progress=100.0%
[23:05:12] [UPLOAD_STATUS] 📬 Received notification: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:12] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[57]: 2 → 2
[23:05:12] [UPLOAD_STATUS] 📝 Updated chatMessages[57]: status=2
[23:05:12] [UPLOAD_STATUS] 💾 Updating DB: file=09af99d4941567c9.jpg, status=2 (uploading)
[23:05:12] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=09af99d4941567c9.jpg
[23:05:12] [MEDIA_SEND] Main upload progress: 100%
[23:05:12] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:12] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:12] [PROGRESS] Updated cell for 09af99d4941567c9.jpg: 100%
[23:05:18] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:05:18] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=58, isReloading=false
[23:05:18] [SEND_MESSAGE] ✅ Added optimistic message id=-18 to arrays, newMsgCount=59
[23:05:18] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[-18, 18941, 18940, 18939, 18938]
[23:05:18] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:05:18] [CELL_UPLOAD] → has active progress=1.0, setting uploading
[23:05:18] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:18] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:18] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:05:18] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:05:21] [CLIENT_SIG] Event received: type=0 messageId=18942
[23:05:21] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18942,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:05:19"}
[23:05:21] [WS_EVENT] Received event: type=0, messageId=18942
[23:05:21] [WS_EVENT] 📨 New message notification (msgId=18942) - triggering incremental refresh, currentMsgCount=59
[23:05:21] [CHAT] receive_message.php JSON: ["message_type": 0, "ok": 1, "session_id": ILUIWU, "datesent_utc": 2026-01-23 22:05:19, "message_id": 18942, "file_name": ]
[23:05:21] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=59
[23:05:21] [DB_UPGRADE] Upgrading message ID: -18 → 18942, preserveOriginalDate=false
[23:05:21] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18941
[23:05:21] [DB_UPGRADE] ✅ Upgraded -18 → 18942 with send_status=0, 1 row(s) affected
[23:05:21] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -18 → 18942
[23:05:21] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -18 → 18942
[23:05:21] ReloadData 9
[23:05:21] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:05:21] [CELL_UPLOAD] → has active progress=1.0, setting uploading
[23:05:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:21] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:05:21] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:05:21] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=59
[23:05:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:05:21] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:05:21] [CELL_UPLOAD] → has active progress=1.0, setting uploading
[23:05:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:05:24] [UPLOAD_RESPONSE] Started receiving response for task 2
[23:05:24] [UPLOAD_METRICS] Task 2 metrics:
[23:05:24] [UPLOAD_METRICS]   Total time: 22.25s
[23:05:24] [UPLOAD_METRICS]   Upload time: 18.86s
[23:05:24] [UPLOAD_METRICS]   Response time: 0.00s
[23:05:24] [UPLOAD_METRICS]   Network protocol: http/1.1
[23:05:24] [UPLOAD_METRICS]   Proxy: no
[23:05:24] [UPLOAD_METRICS]   Reused connection: yes
[23:05:24] [UPLOAD_COMPLETE] ========== Task Completed ==========
[23:05:24] [UPLOAD_COMPLETE] Task ID: 2
[23:05:24] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[23:05:24] [UPLOAD_COMPLETE] Filename: 09af99d4941567c9.jpg
[23:05:24] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/09af99d4941567c9.jpg
[23:05:24] [UPLOAD_COMPLETE] Retry count: 0
[23:05:24] [UPLOAD_COMPLETE] HTTP Status: 200
[23:05:24] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Type"): application/json, AnyHashable("Date"): Fri, 23 Jan 2026 22:05:01 GMT, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Connection"): Keep-Alive, AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Content-Length"): 217]
[23:05:24] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"09af99d4941567c9.jpg","orig_name":"09af99d4941567c9.jpg","size":1746755,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":1747231}}
[23:05:24] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[23:05:24] [UPLOAD_COMPLETE] Server filename: 09af99d4941567c9.jpg
[23:05:24] [UPLOAD_VERIFY] Verifying file exists: 09af99d4941567c9.jpg
[23:05:24] [UPLOAD_VERIFY] ✅ File verified: 09af99d4941567c9.jpg (size: 1746755)
[23:05:24] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=09af99d4941567c9.jpg | id=650 | retries=0
[23:05:24] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[23:05:24] [UPLOAD_COMPLETE] ✅ File: 09af99d4941567c9.jpg
[23:05:24] [UPLOAD_COMPLETE] ✅ Queue ID: 650
[23:05:24] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[23:05:24] [UPLOAD_COMPLETE] ✅ Server filename: 09af99d4941567c9.jpg
[23:05:24] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[23:05:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=09af99d4941567c9.jpg, status=complete (0), progress=0.0%
[23:05:24] [UPLOAD_STATUS] 📬 Received notification: file=09af99d4941567c9.jpg, status=0 (complete)
[23:05:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[57]: 2 → 0
[23:05:24] [UPLOAD_STATUS] 📝 Updated chatMessages[57]: status=0
[23:05:24] [UPLOAD_STATUS] 💾 Updating DB: file=09af99d4941567c9.jpg, status=0 (complete)
[23:05:24] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=650
[23:05:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=09af99d4941567c9.jpg
[23:05:24] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:24] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[23:05:24] [MEDIA_SEND] Server filename: 09af99d4941567c9.jpg
[23:05:24] [MEDIA_SEND] Main upload duration: 22.32s
[23:05:24] [MEDIA_SEND] Total upload duration: 23.62s
[23:05:24] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[23:05:24] [PROGRESS] Updated cell for 09af99d4941567c9.jpg: 100%
[23:05:59] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:05:59] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=59, isReloading=false
[23:05:59] [SEND_MESSAGE] ✅ Added optimistic message id=-19 to arrays, newMsgCount=60
[23:05:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[-19, 18942, 18941, 18940, 18939]
[23:05:59] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:05:59] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:05:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:05:59] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:05:59] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:06:00] [CLIENT_SIG] Event received: type=0 messageId=18943
[23:06:00] [WS_EVENT] Received event: type=0, messageId=18943
[23:06:00] [WS_EVENT] 📨 New message notification (msgId=18943) - triggering incremental refresh, currentMsgCount=60
[23:06:00] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18943,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:05:59"}
[23:06:00] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=60
[23:06:00] [CHAT] receive_message.php JSON: ["message_id": 18943, "session_id": ILUIWU, "datesent_utc": 2026-01-23 22:05:59, "message_type": 0, "file_name": , "ok": 1]
[23:06:00] [DB_UPGRADE] Upgrading message ID: -19 → 18943, preserveOriginalDate=false
[23:06:00] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18942
[23:06:00] [DB_UPGRADE] ✅ Upgraded -19 → 18943 with send_status=0, 1 row(s) affected
[23:06:00] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -19 → 18943
[23:06:00] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -19 → 18943
[23:06:00] ReloadData 9
[23:06:00] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:00] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:06:00] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:06:00] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=60
[23:06:01] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:06:01] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:01] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:01] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:05] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:06:05] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=60, isReloading=false
[23:06:05] [SEND_MESSAGE] ✅ Added optimistic message id=-20 to arrays, newMsgCount=61
[23:06:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[-20, 18943, 18942, 18941, 18940]
[23:06:05] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:05] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:05] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:05] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:06:05] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:06:06] [CLIENT_SIG] Event received: type=0 messageId=18944
[23:06:06] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18944,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:06:05"}
[23:06:06] [WS_EVENT] Received event: type=0, messageId=18944
[23:06:06] [WS_EVENT] 📨 New message notification (msgId=18944) - triggering incremental refresh, currentMsgCount=61
[23:06:06] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:06:05, "ok": 1, "message_type": 0, "file_name": , "session_id": ILUIWU, "message_id": 18944]
[23:06:06] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=61
[23:06:06] [DB_UPGRADE] Upgrading message ID: -20 → 18944, preserveOriginalDate=false
[23:06:06] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18943
[23:06:06] [DB_UPGRADE] ✅ Upgraded -20 → 18944 with send_status=0, 1 row(s) affected
[23:06:06] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -20 → 18944
[23:06:06] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -20 → 18944
[23:06:06] ReloadData 9
[23:06:06] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:06] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:06] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:06:06] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:06:06] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=61
[23:06:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:06:07] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:07] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:08] [CAMERA] Switch-over factors: [2, 8]
[23:06:08] [CAMERA] Virtual device max zoom: 189.0
[23:06:08] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[23:06:08] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[23:06:08] [CAMERA] 2x: virtual device at zoom 4.0
[23:06:08] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[23:06:08] [CAMERA] 8x: virtual device at zoom 16.0
[23:06:08] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[23:06:08] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[23:06:08] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:06:08] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:06:08] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:06:08] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:06:08] [VOLUME] Starting volume button monitoring
[23:06:08] [VOLUME] Hidden MPVolumeView installed
[23:06:08] [VOLUME] Observing volume (no audio session activation), initial volume: 0.2
[23:06:08] [VOLUME] Volume observation started
[23:06:08] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:06:08] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:06:08] [CAMERA] Configuring focus for Front Camera
[23:06:08] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:06:09] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[23:06:09] [CAMERA] Switched to continuous autofocus, lens position: 0.4823529
[23:06:09] [CAMERA] Session preset changed to: AVCaptureSessionPresetHigh for mode: video
[23:06:09] [CAMERA] Audio input added for video mode
[23:06:09] [CAMERA] Configuring focus for Front Camera
[23:06:09] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:06:10] [CAMERA] flipTapped - switching to: BACK
[23:06:10] [CAMERA] flipTapped - device: Back Triple Camera, activeFormat: 4032x3024
[23:06:10] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetPhoto
[23:06:11] [CAMERA] flipTapped - set initial zoom to 2.0
[23:06:11] [CAMERA] Configuring focus for Back Triple Camera
[23:06:11] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:06:11] [CAMERA] Switched to continuous autofocus, lens position: 0.56078434
[23:06:11] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[23:06:11] [CAMERA] Switched to continuous autofocus, lens position: 0.5921569
[23:06:14] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: false
[23:06:14] [HAPTIC] Triggering pop haptic for start recording
[23:06:15] [CAMERA] Started recording to: video_BE376E8D-BDB6-42DE-BE93-2AED77E820B5.mov
[23:06:44] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: true
[23:06:44] [HAPTIC] Triggering pop haptic for stop recording
[23:06:44] [VOLUME] Stopping volume button monitoring
[23:06:44] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:06:44] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:06:44] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:06:44] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:06:44] [GALLERY_DB] ✅ Loaded 492 media messages
[23:06:44] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:06:44] [GALLERY] First 5 after sort (newest first):
[23:06:44] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:06:44] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:06:44] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:06:44] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:06:44] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:06:44] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[23:06:50] [VIDEO EDITOR] Video playback stopped (Send button)
[23:06:50] [VIDEO EDITOR] No edits made, using original video
[23:06:50] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:06:50] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:06:50] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:06:50] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:06:50] [GALLERY_DB] ✅ Loaded 492 media messages
[23:06:50] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:06:50] [GALLERY] First 5 after sort (newest first):
[23:06:50] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:06:50] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:06:50] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:06:50] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:06:50] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:06:50] [SCROLL_BTN] Showing button - 309pt from bottom > half 223pt
[23:06:51] [VIDEO_DIRECT] ========== NEW DIRECT VIDEO UPLOAD ==========
[23:06:51] [VIDEO_DIRECT] Source URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/video_BE376E8D-BDB6-42DE-BE93-2AED77E820B5.mov
[23:06:51] [VIDEO_DIRECT] Source file exists: true
[23:06:51] [VIDEO_DIRECT] Random filename: 5cb55943ea972da0.mov
[23:06:51] [VIDEO_DIRECT] Local media path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/5cb55943ea972da0.mov
[23:06:51] [VIDEO_DIRECT] Local thumbnail path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_5cb55943ea972da0.jpg
[23:06:51] [VIDEO_DIRECT] Source file size: 32744130 bytes (31.23 MB)
[23:06:51] [VIDEO_DIRECT] Copying file (<100MB)
[23:06:51] [VIDEO_DIRECT] File copied successfully
[23:06:51] [VIDEO_DIRECT] Destination file exists: true
[23:06:51] [VIDEO_DIRECT] Destination file size: 32744130 bytes
[23:06:51] [VIDEO_DIRECT] Creating thumbnail...
[23:06:51] [VIDEO_DIRECT] Thumbnail created in 0.04s
[23:06:51] [VIDEO_DIRECT] Thumbnail exists: true
[23:06:51] [VIDEO_DIRECT] Thumbnail file size: 22086 bytes
[23:06:51] [VIDEO_DIRECT] Sending message to server...
[23:06:51] [VIDEO_DIRECT] Caption: ''
[23:06:51] [VIDEO_DIRECT] Timer: -2
[23:06:51] [VIDEO_DIRECT] Filename: 5cb55943ea972da0.mov
[23:06:51] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=61, isReloading=false
[23:06:51] [MEDIA_SEND] 📤 Creating media message: id=-21, file=5cb55943ea972da0.mov, isGiphy=false, upload_status=1 (pending)
[23:06:51] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[23:06:51] [SEND_MESSAGE] ✅ Added optimistic message id=-21 to arrays, newMsgCount=62
[23:06:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[-21, 18944, 18943, 18942, 18941]
[23:06:51] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:06:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:06:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:06:51] [CELL_UPLOAD] configure: msgId=-21, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:06:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:06:51] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:51] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:06:51] [CELL_UPLOAD] configure: msgId=-21, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:06:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:06:51] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:51] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:06:51] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:06:51] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:06:51] [VIDEO_DIRECT] sendMessage API call completed
[23:06:51] [VIDEO_DIRECT] Starting THUMBNAIL upload: t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:06:51] [UPLOAD_ENQUEUE] 📥 File: t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:06:51] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[23:06:51] [UPLOAD_QUEUE] Enqueued upload id=651 for t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:06:51] [UPLOAD_DEBUG] Item ID: 651
[23:06:51] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_DEBUG] Random filename: t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:06:51] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:06:51] [UPLOAD_DEBUG] Retry count: 0
[23:06:51] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_5cb55943ea972da0.jpg, status=uploading (2), progress=0.0%
[23:06:51] [UPLOAD_DEBUG] File exists: true
[23:06:51] [UPLOAD_DEBUG] File size: 22086 bytes (0.0 MB)
[23:06:51] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:06:51] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:06:51] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:06:51] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:06:51] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[23:06:51] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/92012816-4359-41C4-B0F3-2FBD6502C739.upload
[23:06:51] [UPLOAD_DEBUG] File size: 22086 bytes, in-memory threshold: 10485760 bytes
[23:06:51] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[23:06:51] [UPLOAD_STATUS] 📬 Received notification: file=t_5cb55943ea972da0.jpg, status=2 (uploading)
[23:06:51] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_STATUS] 💾 Updating DB: file=t_5cb55943ea972da0.jpg, status=2 (uploading)
[23:06:51] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (22568 bytes)
[23:06:51] [UPLOAD_DEBUG] Creating background upload task...
[23:06:51] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_5cb55943ea972da0.jpg not found in local_messages
[23:06:51] [UPLOAD_DEBUG] Task created with identifier: 3
[23:06:51] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:06:51] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:06:51] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=3 | file=t_5cb55943ea972da0.jpg | size=0.0MB | retries=0
[23:06:51] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:06:51] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:06:51] [SCROLL_BTN] Showing button - 309pt from bottom > half 223pt
[23:06:51] [UPLOAD_PROGRESS] t_5cb55943ea972da0.jpg: 100% (0.0/0.0 MB) task=3
[23:06:51] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_5cb55943ea972da0.jpg, status=uploading (2), progress=100.0%
[23:06:51] [UPLOAD_STATUS] 📬 Received notification: file=t_5cb55943ea972da0.jpg, status=2 (uploading)
[23:06:51] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_5cb55943ea972da0.jpg
[23:06:51] [UPLOAD_STATUS] 💾 Updating DB: file=t_5cb55943ea972da0.jpg, status=2 (uploading)
[23:06:51] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_5cb55943ea972da0.jpg not found in local_messages
[23:06:51] [CLIENT_SIG] Event received: type=0 messageId=18945
[23:06:51] [WS_EVENT] Received event: type=0, messageId=18945
[23:06:51] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18945,"session_id":"ILUIWU","message_type":1,"file_name":"5cb55943ea972da0.mov","datesent_utc":"2026-01-23 22:06:51"}
[23:06:51] [WS_EVENT] 📨 New message notification (msgId=18945) - triggering incremental refresh, currentMsgCount=62
[23:06:51] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=62
[23:06:51] [CHAT] receive_message.php JSON: ["file_name": 5cb55943ea972da0.mov, "ok": 1, "message_type": 1, "datesent_utc": 2026-01-23 22:06:51, "message_id": 18945, "session_id": ILUIWU]
[23:06:51] [DB_UPGRADE] Upgrading message ID: -21 → 18945, preserveOriginalDate=false
[23:06:51] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18944
[23:06:51] [DB_UPGRADE] ✅ Upgraded -21 → 18945 with send_status=0, 1 row(s) affected
[23:06:51] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -21 → 18945
[23:06:51] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -21 → 18945
[23:06:51] ReloadData 9
[23:06:51] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:06:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:06:51] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:51] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:06:51] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:06:51] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:06:51] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=62
[23:06:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=62, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:06:52] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:06:52] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:06:52] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:52] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:06:52] [UPLOAD_RESPONSE] Started receiving response for task 3
[23:06:52] [UPLOAD_METRICS] Task 3 metrics:
[23:06:52] [UPLOAD_METRICS]   Total time: 0.79s
[23:06:52] [UPLOAD_METRICS]   Upload time: 0.00s
[23:06:52] [UPLOAD_METRICS]   Response time: 0.00s
[23:06:52] [UPLOAD_METRICS]   Network protocol: http/1.1
[23:06:52] [UPLOAD_METRICS]   Proxy: no
[23:06:52] [UPLOAD_METRICS]   Reused connection: no
[23:06:52] [UPLOAD_COMPLETE] ========== Task Completed ==========
[23:06:52] [UPLOAD_COMPLETE] Task ID: 3
[23:06:52] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[23:06:52] [UPLOAD_COMPLETE] Filename: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_COMPLETE] Retry count: 0
[23:06:52] [UPLOAD_COMPLETE] HTTP Status: 200
[23:06:52] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Date"): Fri, 23 Jan 2026 22:06:51 GMT, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Length"): 217, AnyHashable("Content-Type"): application/json]
[23:06:52] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_5cb55943ea972da0.jpg","orig_name":"t_5cb55943ea972da0.jpg","size":22086,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":22568}}
[23:06:52] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[23:06:52] [UPLOAD_COMPLETE] Server filename: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_VERIFY] Verifying file exists: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_VERIFY] ✅ File verified: t_5cb55943ea972da0.jpg (size: 22086)
[23:06:52] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_5cb55943ea972da0.jpg | id=651 | retries=0
[23:06:52] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[23:06:52] [UPLOAD_COMPLETE] ✅ File: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_COMPLETE] ✅ Queue ID: 651
[23:06:52] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[23:06:52] [UPLOAD_COMPLETE] ✅ Server filename: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[23:06:52] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_5cb55943ea972da0.jpg, status=complete (0), progress=0.0%
[23:06:52] [UPLOAD_STATUS] 📬 Received notification: file=t_5cb55943ea972da0.jpg, status=0 (complete)
[23:06:52] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_5cb55943ea972da0.jpg
[23:06:52] [UPLOAD_STATUS] 💾 Updating DB: file=t_5cb55943ea972da0.jpg, status=0 (complete)
[23:06:52] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=651
[23:06:52] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_5cb55943ea972da0.jpg not found in local_messages
[23:06:52] [VIDEO_DIRECT] Thumbnail uploaded in 0.85s
[23:06:52] [VIDEO_DIRECT] Starting MAIN VIDEO upload: 5cb55943ea972da0.mov
[23:06:52] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:06:52] [UPLOAD_ENQUEUE] 📥 File: 5cb55943ea972da0.mov
[23:06:52] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/5cb55943ea972da0.mov
[23:06:52] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:06:52] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 31.2 MB
[23:06:52] [UPLOAD_QUEUE] Enqueued upload id=652 for 5cb55943ea972da0.mov
[23:06:52] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:06:52] [UPLOAD_DEBUG] Item ID: 652
[23:06:52] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/5cb55943ea972da0.mov
[23:06:52] [UPLOAD_DEBUG] Random filename: 5cb55943ea972da0.mov
[23:06:52] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:06:52] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:06:52] [UPLOAD_DEBUG] Retry count: 0
[23:06:52] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=0.0%
[23:06:52] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:52] [UPLOAD_DEBUG] File exists: true
[23:06:52] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 1 → 2
[23:06:52] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:06:52] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:52] [UPLOAD_DEBUG] File size: 32744130 bytes (31.2 MB)
[23:06:52] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:06:52] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:06:52] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:06:52] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:06:52] [UPLOAD_DEBUG] File extension: mov, MIME type: video/mp4
[23:06:52] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/FA2DA3A6-9D14-438D-B4C6-AE192813B074.upload
[23:06:52] [UPLOAD_DEBUG] File size: 32744130 bytes, in-memory threshold: 10485760 bytes
[23:06:52] [UPLOAD_DEBUG] Creating multipart body file (streaming mode)...
[23:06:52] [STREAM] Starting multipart body creation...
[23:06:52] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:06:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:06:52] [STREAM] Writing form fields...
[23:06:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:06:52] [STREAM] Opening input file: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/5cb55943ea972da0.mov
[23:06:52] [STREAM] Streaming file in 500MB chunks...
[23:06:52] [STREAM] Streamed 1 chunks total
[23:06:52] [STREAM] Writing multipart footer...
[23:06:52] [STREAM] ✓ Multipart body file complete
[23:06:52] [UPLOAD_DEBUG] ✓ Multipart body created in 0.0s
[23:06:52] [UPLOAD_DEBUG] Temp file size: 32744605 bytes
[23:06:52] [UPLOAD_DEBUG] Creating background upload task...
[23:06:52] [UPLOAD_DEBUG] Task created with identifier: 4
[23:06:52] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:06:52] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:06:52] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=4 | file=5cb55943ea972da0.mov | size=31.2MB | retries=0
[23:06:52] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:06:52] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:06:52] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=3.2%
[23:06:52] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:52] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:06:52] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:06:52] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:52] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:06:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03202286300292827) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:06:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03202286300292827) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:06:56] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=4.8%
[23:06:56] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:56] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:06:56] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:06:56] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:06:56] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:06:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0480342945043924) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:06:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0480342945043924) for file=5cb55943ea972da0.mov, overlayExists=true
[23:06:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=6.4%
[23:07:04] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:04] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:04] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.06404572600585653) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.06404572600585653) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:06] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:07:06] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=62, isReloading=false
[23:07:06] [SEND_MESSAGE] ✅ Added optimistic message id=-22 to arrays, newMsgCount=63
[23:07:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=63, first5Ids=[-22, 18945, 18944, 18943, 18942]
[23:07:06] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:06] [CELL_UPLOAD] → has active progress=0.06404572600585653, setting uploading
[23:07:06] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.06404572600585653) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:06] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:06] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:07:06] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:07:06] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:07:06] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:07:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:07:09] [CLIENT_SIG] Event received: type=0 messageId=18946
[23:07:09] [WS_EVENT] Received event: type=0, messageId=18946
[23:07:09] [WS_EVENT] 📨 New message notification (msgId=18946) - triggering incremental refresh, currentMsgCount=63
[23:07:09] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=63
[23:07:09] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18945
[23:07:09] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18946,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:07:07"}
[23:07:09] [CHAT] receive_message.php JSON: ["message_type": 0, "ok": 1, "message_id": 18946, "datesent_utc": 2026-01-23 22:07:07, "file_name": , "session_id": ILUIWU]
[23:07:09] [DB_UPGRADE] Upgrading message ID: -22 → 18946, preserveOriginalDate=false
[23:07:09] [DB_UPGRADE] ✅ Upgraded -22 → 18946 with send_status=0, 1 row(s) affected
[23:07:09] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -22 → 18946
[23:07:09] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -22 → 18946
[23:07:09] ReloadData 9
[23:07:09] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:09] [CELL_UPLOAD] → has active progress=0.06404572600585653, setting uploading
[23:07:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.06404572600585653) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:09] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:07:09] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:07:09] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=63
[23:07:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=63, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:07:09] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:09] [CELL_UPLOAD] → has active progress=0.06404572600585653, setting uploading
[23:07:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.06404572600585653) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=8.0%
[23:07:13] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:13] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:13] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:13] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:13] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:13] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08005715750732068) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:13] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:13] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08005715750732068) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:13] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:21] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=9.6%
[23:07:21] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:21] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:21] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:21] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:21] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0960685890087848) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0960685890087848) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:22] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:07:22] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=63, isReloading=false
[23:07:22] [SEND_MESSAGE] ✅ Added optimistic message id=-23 to arrays, newMsgCount=64
[23:07:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=64, first5Ids=[-23, 18946, 18945, 18944, 18943]
[23:07:22] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:22] [CELL_UPLOAD] → has active progress=0.0960685890087848, setting uploading
[23:07:22] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0960685890087848) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:22] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:22] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:07:22] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:07:25] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18947,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:07:23"}
[23:07:25] [CHAT] receive_message.php JSON: ["file_name": , "message_id": 18947, "message_type": 0, "ok": 1, "datesent_utc": 2026-01-23 22:07:23, "session_id": ILUIWU]
[23:07:25] [DB_UPGRADE] Upgrading message ID: -23 → 18947, preserveOriginalDate=false
[23:07:25] [CLIENT_SIG] Event received: type=0 messageId=18947
[23:07:25] [WS_EVENT] Received event: type=0, messageId=18947
[23:07:25] [WS_EVENT] 📨 New message notification (msgId=18947) - triggering incremental refresh, currentMsgCount=64
[23:07:25] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=64
[23:07:25] [DB_UPGRADE] ✅ Upgraded -23 → 18947 with send_status=0, 1 row(s) affected
[23:07:25] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18947
[23:07:25] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -23 → 18947
[23:07:25] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -23 → 18947
[23:07:25] ReloadData 9
[23:07:25] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:25] [CELL_UPLOAD] → has active progress=0.0960685890087848, setting uploading
[23:07:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0960685890087848) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:25] [INCREMENTAL_SYNC] ✅ No new messages
[23:07:25] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=64
[23:07:27] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=11.2%
[23:07:27] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:27] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[2]: 2 → 2
[23:07:27] [UPLOAD_STATUS] 📝 Updated chatMessages[2]: status=2
[23:07:27] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:27] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11208002051024894) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11208002051024894) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:28] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:07:28] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=64, isReloading=false
[23:07:28] [SEND_MESSAGE] ✅ Added optimistic message id=-24 to arrays, newMsgCount=65
[23:07:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[-24, 18947, 18946, 18945, 18944]
[23:07:28] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:28] [CELL_UPLOAD] → has active progress=0.11208002051024894, setting uploading
[23:07:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11208002051024894) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:28] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:28] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:07:28] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:07:30] [CLIENT_SIG] Event received: type=0 messageId=18948
[23:07:30] [WS_EVENT] Received event: type=0, messageId=18948
[23:07:30] [WS_EVENT] 📨 New message notification (msgId=18948) - triggering incremental refresh, currentMsgCount=65
[23:07:30] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=65
[23:07:30] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18947
[23:07:30] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18948,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:07:28"}
[23:07:30] [CHAT] receive_message.php JSON: ["message_id": 18948, "message_type": 0, "session_id": ILUIWU, "file_name": , "ok": 1, "datesent_utc": 2026-01-23 22:07:28]
[23:07:30] [DB_UPGRADE] Upgrading message ID: -24 → 18948, preserveOriginalDate=false
[23:07:30] [DB_UPGRADE] ✅ Upgraded -24 → 18948 with send_status=0, 1 row(s) affected
[23:07:30] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -24 → 18948
[23:07:30] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -24 → 18948
[23:07:30] ReloadData 9
[23:07:30] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:30] [CELL_UPLOAD] → has active progress=0.11208002051024894, setting uploading
[23:07:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11208002051024894) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:30] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:31] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:07:31] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:07:31] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=65
[23:07:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:07:31] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:07:31] [CELL_UPLOAD] → has active progress=0.11208002051024894, setting uploading
[23:07:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11208002051024894) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:34] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=12.8%
[23:07:34] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:34] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:34] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:34] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:34] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.12809145201171307) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.12809145201171307) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:39] [CAMERA] Switch-over factors: [2, 8]
[23:07:39] [CAMERA] Virtual device max zoom: 189.0
[23:07:39] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[23:07:39] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[23:07:39] [CAMERA] 2x: virtual device at zoom 4.0
[23:07:39] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[23:07:39] [CAMERA] 8x: virtual device at zoom 16.0
[23:07:39] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[23:07:39] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[23:07:39] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:07:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:07:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:07:39] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:07:39] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:07:39] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:07:39] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:07:39] [VOLUME] Starting volume button monitoring
[23:07:39] [VOLUME] Hidden MPVolumeView installed
[23:07:39] [VOLUME] Observing volume (no audio session activation), initial volume: 0.2
[23:07:39] [VOLUME] Volume observation started
[23:07:39] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:07:39] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:07:39] [CAMERA] Configuring focus for Front Camera
[23:07:39] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:07:39] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[23:07:40] [CAMERA] Switched to continuous autofocus, lens position: 0.61176467
[23:07:41] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=14.4%
[23:07:41] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:41] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:41] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:41] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:41] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1441028835131772) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:41] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1441028835131772) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:41] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:41] [CAMERA] Session preset changed to: AVCaptureSessionPresetHigh for mode: video
[23:07:41] [CAMERA] Audio input added for video mode
[23:07:41] [CAMERA] Configuring focus for Front Camera
[23:07:41] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:07:42] [CAMERA] Switched to continuous autofocus, lens position: 0.65098035
[23:07:46] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=16.0%
[23:07:46] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:46] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:46] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:46] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:46] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:46] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.16011431501464135) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:46] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:46] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.16011431501464135) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:46] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:46] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: false
[23:07:46] [HAPTIC] Triggering pop haptic for start recording
[23:07:46] [CAMERA] Started recording to: video_821ABFA2-18C7-45D4-A3C5-A0CED0D685A1.mov
[23:07:51] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=17.6%
[23:07:51] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:51] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:51] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:51] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:51] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:51] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1761257465161055) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:51] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:51] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1761257465161055) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:51] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:55] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=19.2%
[23:07:55] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:55] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:07:55] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:07:55] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:07:55] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:07:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1921371780175696) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.1921371780175696) for file=5cb55943ea972da0.mov, overlayExists=true
[23:07:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:07:58] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: true
[23:07:58] [HAPTIC] Triggering pop haptic for stop recording
[23:07:59] [VOLUME] Stopping volume button monitoring
[23:07:59] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:07:59] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:07:59] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:07:59] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:07:59] [GALLERY_DB] ✅ Loaded 492 media messages
[23:07:59] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:07:59] [GALLERY] First 5 after sort (newest first):
[23:07:59] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:07:59] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:07:59] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:07:59] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:07:59] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:07:59] [SCROLL_BTN] Showing button - 307pt from bottom > half 223pt
[23:08:00] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:08:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:08:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:08:01] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:08:01] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:08:01] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:08:01] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:08:01] [GALLERY_DB] ✅ Loaded 492 media messages
[23:08:01] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:08:01] [GALLERY] First 5 after sort (newest first):
[23:08:01] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:08:01] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:08:01] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:08:01] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:08:01] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:08:01] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[23:08:05] [UPLOAD_PROGRESS] 5cb55943ea972da0.mov: 20% (6.5/31.2 MB) task=4
[23:08:05] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=20.8%
[23:08:05] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:05] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:05] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:05] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:05] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.20814860951903374) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.20814860951903374) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:06] [CAMERA] Switch-over factors: [2, 8]
[23:08:06] [CAMERA] Virtual device max zoom: 189.0
[23:08:06] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[23:08:06] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[23:08:06] [CAMERA] 2x: virtual device at zoom 4.0
[23:08:06] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[23:08:06] [CAMERA] 8x: virtual device at zoom 16.0
[23:08:06] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[23:08:06] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[23:08:06] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:08:06] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:08:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:08:06] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:08:06] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:08:06] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:08:06] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:08:06] [VOLUME] Starting volume button monitoring
[23:08:06] [VOLUME] Hidden MPVolumeView installed
[23:08:06] [VOLUME] Observing volume (no audio session activation), initial volume: 0.2
[23:08:06] [VOLUME] Volume observation started
[23:08:06] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[23:08:06] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[23:08:07] [CAMERA] Configuring focus for Front Camera
[23:08:07] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:08:07] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[23:08:07] [CAMERA] Switched to continuous autofocus, lens position: 0.6627451
[23:08:10] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=22.4%
[23:08:10] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:10] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:10] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:10] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:10] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22416004102049789) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:10] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22416004102049789) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:10] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:10] [CAMERA] flipTapped - switching to: BACK
[23:08:10] [CAMERA] flipTapped - device: Back Triple Camera, activeFormat: 4032x3024
[23:08:10] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetPhoto
[23:08:11] [CAMERA] flipTapped - set initial zoom to 2.0
[23:08:11] [CAMERA] Configuring focus for Back Triple Camera
[23:08:11] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:08:11] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[23:08:12] [CAMERA] Switched to continuous autofocus, lens position: 0.60784316
[23:08:12] [CAMERA] Session preset changed to: AVCaptureSessionPresetHigh for mode: video
[23:08:12] [CAMERA] Audio input added for video mode
[23:08:12] [CAMERA] Configuring focus for Back Triple Camera
[23:08:12] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:08:13] [CAMERA] Switched to continuous autofocus, lens position: 0.6980392
[23:08:15] [NETWORK] Status changed: connected
[23:08:16] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=24.0%
[23:08:16] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:16] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:16] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:16] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:16] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:16] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.24017147252196203) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:16] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:16] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.24017147252196203) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:16] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:18] [CAMERA] flipTapped - switching to: FRONT
[23:08:18] [CAMERA] flipTapped - device: Front Camera, activeFormat: 1920x1080
[23:08:18] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetHigh
[23:08:19] [CAMERA] Configuring focus for Front Camera
[23:08:19] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[23:08:19] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[23:08:19] [CAMERA] Switched to continuous autofocus, lens position: 0.67450976
[23:08:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=25.6%
[23:08:23] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:23] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:23] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:23] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:23] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:23] [VIDEO_DIRECT] Main upload progress: 25%
[23:08:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25618290402342614) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:23] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25618290402342614) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:23] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:25] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: false
[23:08:25] [HAPTIC] Triggering pop haptic for start recording
[23:08:25] [CAMERA] Started recording to: video_E8CA3F0D-2E0B-4E23-86EA-567047455669.mov
[23:08:27] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=27.2%
[23:08:27] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:27] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:27] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:27] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:27] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.2721943355248903) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.2721943355248903) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:31] [NETWORK] Status changed: connected
[23:08:32] [NETWORK] Status changed: connected
[23:08:33] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=28.8%
[23:08:33] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:33] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:33] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:33] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:33] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:33] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.2882057670263544) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:33] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:33] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.2882057670263544) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:33] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:38] [UPLOAD_PROGRESS] 5cb55943ea972da0.mov: 30% (9.5/31.2 MB) task=4
[23:08:38] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=30.4%
[23:08:38] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:38] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:38] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:38] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:38] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.30421719852781853) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.30421719852781853) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:42] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=32.0%
[23:08:42] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:42] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:42] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:42] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:42] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:42] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3202286300292827) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:42] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:42] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3202286300292827) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:42] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:46] [NETWORK] Status changed: connected
[23:08:49] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=33.6%
[23:08:49] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:49] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:50] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:50] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:50] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:50] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3362400615307468) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:50] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:50] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3362400615307468) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:50] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:55] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=35.2%
[23:08:55] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:55] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:08:55] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:08:55] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:08:55] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:08:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.352251493032211) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.352251493032211) for file=5cb55943ea972da0.mov, overlayExists=true
[23:08:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:08:57] [NETWORK] Status changed: connected
[23:08:58] [NETWORK] Status changed: connected
[23:09:00] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=36.8%
[23:09:00] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:00] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:00] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:00] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:00] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:00] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3682629245336751) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:00] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:00] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3682629245336751) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:00] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:04] [NETWORK] Status changed: connected
[23:09:06] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=38.4%
[23:09:06] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:06] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:06] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:06] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:06] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:06] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3842743560351392) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:06] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:06] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3842743560351392) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:06] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:09] [LIFECYCLE] App resigning active - cleared crash flag
[23:09:09] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=false
[23:09:09] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:09:09] [PUSH] handlePollEventsNotification userInfo: [:]
[23:09:09] [PUSH] No message_id in userInfo
[23:09:09] [PUSH] No operation_type in userInfo
[23:09:09] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:09:09] [FAST_REFRESH] Already have 65 messages - skipping local DB load
[23:09:09] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:09:09] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:09:09] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=65
[23:09:09] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18948
[23:09:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:09] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:09:09] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:09:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:09:10] [NETWORK] Status changed: connected
[23:09:11] [INCREMENTAL_SYNC] ✅ No new messages
[23:09:11] [FAST_REFRESH] Incremental sync complete - 65 messages
[23:09:11] [UPLOAD_PROGRESS] 5cb55943ea972da0.mov: 40% (12.5/31.2 MB) task=4
[23:09:11] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=40.0%
[23:09:11] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:11] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:11] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:11] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:11] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4002857875366034) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:20] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=41.6%
[23:09:20] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:20] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:20] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:20] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:20] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4162972190380675) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:21] [HAPTIC] triggerHapticFeedback called - mode: video, isRecording: true
[23:09:21] [HAPTIC] Triggering pop haptic for stop recording
[23:09:22] [VOLUME] Stopping volume button monitoring
[23:09:22] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:09:22] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:09:22] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:09:22] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:09:22] [GALLERY_DB] ✅ Loaded 492 media messages
[23:09:22] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:09:22] [GALLERY] First 5 after sort (newest first):
[23:09:22] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:09:22] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:09:22] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:09:22] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:09:22] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:09:22] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:22] [CELL_UPLOAD] → has active progress=0.4162972190380675, setting uploading
[23:09:22] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4162972190380675) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:22] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:22] [SCROLL_BTN] Showing button - 309pt from bottom > half 223pt
[23:09:22] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:09:22] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:09:22] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:09:26] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=43.2%
[23:09:26] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:26] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:26] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:26] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:26] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:26] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4323086505395316) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:26] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:26] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4323086505395316) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:26] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:27] [COMBINED_FETCH] Loaded 7713 read receipts, 927 messages with reactions
[23:09:27] [FAST_REFRESH] Enriched 65 messages with readBy data
[23:09:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=65, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:28] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:09:28] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:09:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:09:29] [VIDEO EDITOR] Video playback stopped (Send button)
[23:09:29] [VIDEO EDITOR] No edits made, using original video
[23:09:29] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[23:09:29] [GALLERY_DB] Raw datesent for msg 18873: '2026-01-23 14:45:03'
[23:09:29] [GALLERY_DB] Raw datesent for msg 18866: '2026-01-23 14:43:33'
[23:09:29] [GALLERY_DB] Raw datesent for msg 18824: '2026-01-23 13:11:24'
[23:09:29] [GALLERY_DB] ✅ Loaded 492 media messages
[23:09:29] [GALLERY] Filtered 492 -> 452 (only with local thumbnails)
[23:09:29] [GALLERY] First 5 after sort (newest first):
[23:09:29] [GALLERY]   0: id=18873, date=2026-01-23 14:45:03, file=c5e952cc358c257c.jpg
[23:09:29] [GALLERY]   1: id=18866, date=2026-01-23 14:43:33, file=8614a7ee0c109005.jpg
[23:09:29] [GALLERY]   2: id=18824, date=2026-01-23 13:11:24, file=0d08f6fe6141897c.jpg
[23:09:29] [GALLERY]   3: id=18822, date=2026-01-23 12:56:23, file=aa11fb87a250b06a.jpg
[23:09:29] [GALLERY]   4: id=18818, date=2026-01-23 12:38:35, file=933944ecb2d8adc3.heic
[23:09:29] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:29] [CELL_UPLOAD] → has active progress=0.4323086505395316, setting uploading
[23:09:29] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4323086505395316) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:29] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:29] [SCROLL_BTN] Showing button - 308pt from bottom > half 223pt
[23:09:30] [VIDEO_DIRECT] ========== NEW DIRECT VIDEO UPLOAD ==========
[23:09:30] [VIDEO_DIRECT] Source URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/video_E8CA3F0D-2E0B-4E23-86EA-567047455669.mov
[23:09:30] [VIDEO_DIRECT] Source file exists: true
[23:09:30] [VIDEO_DIRECT] Random filename: 7112b780a9885606.mov
[23:09:30] [VIDEO_DIRECT] Local media path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/7112b780a9885606.mov
[23:09:30] [VIDEO_DIRECT] Local thumbnail path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_7112b780a9885606.jpg
[23:09:30] [VIDEO_DIRECT] Source file size: 58747431 bytes (56.03 MB)
[23:09:30] [VIDEO_DIRECT] Copying file (<100MB)
[23:09:30] [VIDEO_DIRECT] File copied successfully
[23:09:30] [VIDEO_DIRECT] Destination file exists: true
[23:09:30] [VIDEO_DIRECT] Destination file size: 58747431 bytes
[23:09:30] [VIDEO_DIRECT] Creating thumbnail...
[23:09:30] [VIDEO_DIRECT] Thumbnail created in 0.04s
[23:09:30] [VIDEO_DIRECT] Thumbnail exists: true
[23:09:30] [VIDEO_DIRECT] Thumbnail file size: 21223 bytes
[23:09:30] [VIDEO_DIRECT] Sending message to server...
[23:09:30] [VIDEO_DIRECT] Caption: ''
[23:09:30] [VIDEO_DIRECT] Timer: -2
[23:09:30] [VIDEO_DIRECT] Filename: 7112b780a9885606.mov
[23:09:30] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=65, isReloading=false
[23:09:30] [MEDIA_SEND] 📤 Creating media message: id=-25, file=7112b780a9885606.mov, isGiphy=false, upload_status=1 (pending)
[23:09:30] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[23:09:30] [SEND_MESSAGE] ✅ Added optimistic message id=-25 to arrays, newMsgCount=66
[23:09:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[-25, 18948, 18947, 18946, 18945]
[23:09:30] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:30] [CELL_UPLOAD] → has active progress=0.4323086505395316, setting uploading
[23:09:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4323086505395316) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:30] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:30] [CELL_UPLOAD] configure: msgId=-25, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:09:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:09:30] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:30] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:09:30] [CELL_UPLOAD] configure: msgId=-25, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:09:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:09:30] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:30] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:09:30] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:09:30] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:09:30] [VIDEO_DIRECT] sendMessage API call completed
[23:09:30] [VIDEO_DIRECT] Starting THUMBNAIL upload: t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:09:30] [UPLOAD_ENQUEUE] 📥 File: t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:09:30] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[23:09:30] [UPLOAD_QUEUE] Enqueued upload id=653 for t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:09:30] [UPLOAD_DEBUG] Item ID: 653
[23:09:30] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_DEBUG] Random filename: t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:09:30] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:09:30] [UPLOAD_DEBUG] Retry count: 0
[23:09:30] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_7112b780a9885606.jpg, status=uploading (2), progress=0.0%
[23:09:30] [UPLOAD_STATUS] 📬 Received notification: file=t_7112b780a9885606.jpg, status=2 (uploading)
[23:09:30] [UPLOAD_DEBUG] File exists: true
[23:09:30] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_7112b780a9885606.jpg
[23:09:30] [UPLOAD_STATUS] 💾 Updating DB: file=t_7112b780a9885606.jpg, status=2 (uploading)
[23:09:30] [UPLOAD_DEBUG] File size: 21223 bytes (0.0 MB)
[23:09:30] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:09:30] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:09:30] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:09:30] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:09:30] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[23:09:30] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_7112b780a9885606.jpg not found in local_messages
[23:09:30] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/C3863296-E824-41FC-BA8E-8D59CB71135C.upload
[23:09:30] [UPLOAD_DEBUG] File size: 21223 bytes, in-memory threshold: 10485760 bytes
[23:09:30] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[23:09:30] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (21705 bytes)
[23:09:30] [UPLOAD_DEBUG] Creating background upload task...
[23:09:30] [UPLOAD_DEBUG] Task created with identifier: 5
[23:09:30] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:09:30] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:09:30] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=5 | file=t_7112b780a9885606.jpg | size=0.0MB | retries=0
[23:09:30] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:09:30] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:09:30] [SCROLL_BTN] Showing button - 307pt from bottom > half 223pt
[23:09:30] [CLIENT_SIG] Event received: type=0 messageId=18949
[23:09:30] [WS_EVENT] Received event: type=0, messageId=18949
[23:09:30] [WS_EVENT] 📨 New message notification (msgId=18949) - triggering incremental refresh, currentMsgCount=66
[23:09:30] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=66
[23:09:30] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18948
[23:09:30] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18949,"session_id":"ILUIWU","message_type":1,"file_name":"7112b780a9885606.mov","datesent_utc":"2026-01-23 22:09:30"}
[23:09:30] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:09:30, "session_id": ILUIWU, "ok": 1, "message_id": 18949, "file_name": 7112b780a9885606.mov, "message_type": 1]
[23:09:30] [DB_UPGRADE] Upgrading message ID: -25 → 18949, preserveOriginalDate=false
[23:09:30] [DB_UPGRADE] ✅ Upgraded -25 → 18949 with send_status=0, 1 row(s) affected
[23:09:30] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -25 → 18949
[23:09:30] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -25 → 18949
[23:09:30] ReloadData 9
[23:09:30] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:09:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:09:30] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:30] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:09:31] [UPLOAD_PROGRESS] t_7112b780a9885606.jpg: 100% (0.0/0.0 MB) task=5
[23:09:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_7112b780a9885606.jpg, status=uploading (2), progress=100.0%
[23:09:31] [UPLOAD_STATUS] 📬 Received notification: file=t_7112b780a9885606.jpg, status=2 (uploading)
[23:09:31] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_STATUS] 💾 Updating DB: file=t_7112b780a9885606.jpg, status=2 (uploading)
[23:09:31] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_7112b780a9885606.jpg not found in local_messages
[23:09:31] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:09:31] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:09:31] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=66
[23:09:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=66, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:31] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[23:09:31] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[23:09:31] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:31] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[23:09:31] [UPLOAD_RESPONSE] Started receiving response for task 5
[23:09:31] [UPLOAD_METRICS] Task 5 metrics:
[23:09:31] [UPLOAD_METRICS]   Total time: 1.25s
[23:09:31] [UPLOAD_METRICS]   Upload time: 0.00s
[23:09:31] [UPLOAD_METRICS]   Response time: 0.00s
[23:09:31] [UPLOAD_METRICS]   Network protocol: http/1.1
[23:09:31] [UPLOAD_METRICS]   Proxy: no
[23:09:31] [UPLOAD_METRICS]   Reused connection: no
[23:09:31] [UPLOAD_COMPLETE] ========== Task Completed ==========
[23:09:31] [UPLOAD_COMPLETE] Task ID: 5
[23:09:31] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[23:09:31] [UPLOAD_COMPLETE] Filename: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_COMPLETE] Retry count: 0
[23:09:31] [UPLOAD_COMPLETE] HTTP Status: 200
[23:09:31] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Type"): application/json, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Date"): Fri, 23 Jan 2026 22:09:31 GMT, AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Length"): 217]
[23:09:31] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_7112b780a9885606.jpg","orig_name":"t_7112b780a9885606.jpg","size":21223,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":21705}}
[23:09:31] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[23:09:31] [UPLOAD_COMPLETE] Server filename: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_VERIFY] Verifying file exists: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_VERIFY] ✅ File verified: t_7112b780a9885606.jpg (size: 21223)
[23:09:31] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_7112b780a9885606.jpg | id=653 | retries=0
[23:09:31] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[23:09:31] [UPLOAD_COMPLETE] ✅ File: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_COMPLETE] ✅ Queue ID: 653
[23:09:31] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[23:09:31] [UPLOAD_COMPLETE] ✅ Server filename: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[23:09:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_7112b780a9885606.jpg, status=complete (0), progress=0.0%
[23:09:31] [UPLOAD_STATUS] 📬 Received notification: file=t_7112b780a9885606.jpg, status=0 (complete)
[23:09:31] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_7112b780a9885606.jpg
[23:09:31] [UPLOAD_STATUS] 💾 Updating DB: file=t_7112b780a9885606.jpg, status=0 (complete)
[23:09:31] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=653
[23:09:31] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_7112b780a9885606.jpg not found in local_messages
[23:09:31] [VIDEO_DIRECT] Thumbnail uploaded in 1.31s
[23:09:31] [VIDEO_DIRECT] Starting MAIN VIDEO upload: 7112b780a9885606.mov
[23:09:31] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[23:09:31] [UPLOAD_ENQUEUE] 📥 File: 7112b780a9885606.mov
[23:09:31] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/7112b780a9885606.mov
[23:09:31] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[23:09:31] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 56.0 MB
[23:09:31] [UPLOAD_QUEUE] Enqueued upload id=654 for 7112b780a9885606.mov
[23:09:31] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[23:09:31] [UPLOAD_DEBUG] Item ID: 654
[23:09:31] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/7112b780a9885606.mov
[23:09:31] [UPLOAD_DEBUG] Random filename: 7112b780a9885606.mov
[23:09:31] [UPLOAD_DEBUG] Session ID: ILUIWU
[23:09:31] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[23:09:31] [UPLOAD_DEBUG] Retry count: 0
[23:09:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=0.0%
[23:09:31] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:31] [UPLOAD_DEBUG] File exists: true
[23:09:31] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 1 → 2
[23:09:31] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:09:31] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:31] [UPLOAD_DEBUG] File size: 58747431 bytes (56.0 MB)
[23:09:31] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[23:09:31] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[23:09:31] [UPLOAD_DEBUG] --- startStandardUpload ---
[23:09:31] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[23:09:31] [UPLOAD_DEBUG] File extension: mov, MIME type: video/mp4
[23:09:31] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/tmp/B35640A1-F35E-4EFB-8C60-A62827647389.upload
[23:09:31] [UPLOAD_DEBUG] File size: 58747431 bytes, in-memory threshold: 10485760 bytes
[23:09:31] [UPLOAD_DEBUG] Creating multipart body file (streaming mode)...
[23:09:31] [STREAM] Starting multipart body creation...
[23:09:31] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:09:31] [STREAM] Writing form fields...
[23:09:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:31] [STREAM] Opening input file: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/7112b780a9885606.mov
[23:09:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=7112b780a9885606.mov, overlayExists=true
[23:09:31] [STREAM] Streaming file in 500MB chunks...
[23:09:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:31] [STREAM] Streamed 1 chunks total
[23:09:31] [STREAM] Writing multipart footer...
[23:09:31] [STREAM] ✓ Multipart body file complete
[23:09:31] [UPLOAD_DEBUG] ✓ Multipart body created in 0.1s
[23:09:31] [UPLOAD_DEBUG] Temp file size: 58747906 bytes
[23:09:31] [UPLOAD_DEBUG] Creating background upload task...
[23:09:31] [UPLOAD_DEBUG] Task created with identifier: 6
[23:09:31] [UPLOAD_DEBUG] Added to activeUploads dictionary
[23:09:31] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[23:09:31] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=6 | file=7112b780a9885606.mov | size=56.0MB | retries=0
[23:09:31] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[23:09:31] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[23:09:31] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 1% (1.0/56.0 MB) task=6
[23:09:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=1.8%
[23:09:31] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:31] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 2 → 2
[23:09:31] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:09:31] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:31] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:09:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.017848738302263915) for file=7112b780a9885606.mov, overlayExists=true
[23:09:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.017848738302263915) for file=7112b780a9885606.mov, overlayExists=true
[23:09:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:34] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=44.8%
[23:09:34] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:34] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:09:34] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:09:34] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:34] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.44832008204099577) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:40] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:09:40] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=66, isReloading=false
[23:09:40] [SEND_MESSAGE] ✅ Added optimistic message id=-26 to arrays, newMsgCount=67
[23:09:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[-26, 18949, 18948, 18947, 18946]
[23:09:40] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:40] [CELL_UPLOAD] → has active progress=0.017848738302263915, setting uploading
[23:09:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.017848738302263915) for file=7112b780a9885606.mov, overlayExists=true
[23:09:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:40] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:09:40] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:09:40] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:40] [CELL_UPLOAD] → has active progress=0.44832008204099577, setting uploading
[23:09:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.44832008204099577) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:40] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=2.7%
[23:09:40] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:40] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[1]: 2 → 2
[23:09:40] [UPLOAD_STATUS] 📝 Updated chatMessages[1]: status=2
[23:09:40] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:40] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:09:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:43] [CLIENT_SIG] Event received: type=0 messageId=18950
[23:09:43] [WS_EVENT] Received event: type=0, messageId=18950
[23:09:43] [WS_EVENT] 📨 New message notification (msgId=18950) - triggering incremental refresh, currentMsgCount=67
[23:09:43] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=67
[23:09:43] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18949
[23:09:43] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18950,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:09:41"}
[23:09:43] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:09:41, "session_id": ILUIWU, "message_type": 0, "file_name": , "message_id": 18950, "ok": 1]
[23:09:43] [DB_UPGRADE] Upgrading message ID: -26 → 18950, preserveOriginalDate=false
[23:09:43] [DB_UPGRADE] ✅ Upgraded -26 → 18950 with send_status=0, 1 row(s) affected
[23:09:43] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -26 → 18950
[23:09:43] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -26 → 18950
[23:09:43] ReloadData 9
[23:09:43] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:43] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:43] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:43] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:44] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=46.4%
[23:09:44] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:44] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[5]: 2 → 2
[23:09:44] [UPLOAD_STATUS] 📝 Updated chatMessages[5]: status=2
[23:09:44] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:44] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:44] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4643315135424599) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:44] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:44] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:09:44] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:09:44] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=67
[23:09:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=67, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:44] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:44] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:44] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:44] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:45] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:09:45] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=67, isReloading=false
[23:09:45] [SEND_MESSAGE] ✅ Added optimistic message id=-27 to arrays, newMsgCount=68
[23:09:45] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[-27, 18950, 18949, 18948, 18947]
[23:09:45] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:45] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:45] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:45] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:09:45] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:09:47] [CLIENT_SIG] Event received: type=0 messageId=18951
[23:09:47] [WS_EVENT] Received event: type=0, messageId=18951
[23:09:47] [WS_EVENT] 📨 New message notification (msgId=18951) - triggering incremental refresh, currentMsgCount=68
[23:09:47] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=68
[23:09:47] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18950
[23:09:47] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18951,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:09:46"}
[23:09:47] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:09:46, "file_name": , "message_id": 18951, "ok": 1, "message_type": 0, "session_id": ILUIWU]
[23:09:47] [DB_UPGRADE] Upgrading message ID: -27 → 18951, preserveOriginalDate=false
[23:09:47] [DB_UPGRADE] ✅ Upgraded -27 → 18951 with send_status=0, 1 row(s) affected
[23:09:47] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -27 → 18951
[23:09:47] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -27 → 18951
[23:09:47] ReloadData 9
[23:09:47] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:47] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:47] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:47] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:48] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:09:48] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:09:48] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=68
[23:09:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=68, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:48] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:48] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:48] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:48] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:52] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:09:52] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=68, isReloading=false
[23:09:52] [SEND_MESSAGE] ✅ Added optimistic message id=-28 to arrays, newMsgCount=69
[23:09:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[-28, 18951, 18950, 18949, 18948]
[23:09:52] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:52] [CELL_UPLOAD] → has active progress=0.02677310745339587, setting uploading
[23:09:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.02677310745339587) for file=7112b780a9885606.mov, overlayExists=true
[23:09:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:52] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:09:52] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:09:52] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=3.6%
[23:09:52] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:52] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[3]: 2 → 2
[23:09:52] [UPLOAD_STATUS] 📝 Updated chatMessages[3]: status=2
[23:09:52] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:09:52] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:09:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:53] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=48.0%
[23:09:53] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:53] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[7]: 2 → 2
[23:09:53] [UPLOAD_STATUS] 📝 Updated chatMessages[7]: status=2
[23:09:53] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:09:53] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:09:53] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.48034294504392405) for file=5cb55943ea972da0.mov, overlayExists=true
[23:09:53] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:55] [CLIENT_SIG] Event received: type=0 messageId=18952
[23:09:55] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18952,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:09:53"}
[23:09:55] [WS_EVENT] Received event: type=0, messageId=18952
[23:09:55] [WS_EVENT] 📨 New message notification (msgId=18952) - triggering incremental refresh, currentMsgCount=69
[23:09:55] [CHAT] receive_message.php JSON: ["message_type": 0, "file_name": , "session_id": ILUIWU, "ok": 1, "datesent_utc": 2026-01-23 22:09:53, "message_id": 18952]
[23:09:55] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=69
[23:09:55] [DB_UPGRADE] Upgrading message ID: -28 → 18952, preserveOriginalDate=false
[23:09:55] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18951
[23:09:55] [DB_UPGRADE] ✅ Upgraded -28 → 18952 with send_status=0, 1 row(s) affected
[23:09:55] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -28 → 18952
[23:09:55] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -28 → 18952
[23:09:55] ReloadData 9
[23:09:55] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:55] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:09:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:56] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:09:56] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:09:56] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=69
[23:09:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=69, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:56] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:56] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:09:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:56] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:09:56] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=69, isReloading=false
[23:09:56] [SEND_MESSAGE] ✅ Added optimistic message id=-29 to arrays, newMsgCount=70
[23:09:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=70, first5Ids=[-29, 18952, 18951, 18950, 18949]
[23:09:56] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:56] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:09:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:56] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:09:56] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:09:58] [CLIENT_SIG] Event received: type=0 messageId=18953
[23:09:58] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18953,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:09:56"}
[23:09:58] [WS_EVENT] Received event: type=0, messageId=18953
[23:09:58] [WS_EVENT] 📨 New message notification (msgId=18953) - triggering incremental refresh, currentMsgCount=70
[23:09:58] [CHAT] receive_message.php JSON: ["file_name": , "session_id": ILUIWU, "message_id": 18953, "ok": 1, "message_type": 0, "datesent_utc": 2026-01-23 22:09:56]
[23:09:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=70
[23:09:58] [DB_UPGRADE] Upgrading message ID: -29 → 18953, preserveOriginalDate=false
[23:09:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18952
[23:09:58] [DB_UPGRADE] ✅ Upgraded -29 → 18953 with send_status=0, 1 row(s) affected
[23:09:58] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -29 → 18953
[23:09:58] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -29 → 18953
[23:09:58] ReloadData 9
[23:09:58] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:58] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:09:58] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:58] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:09:58] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:09:58] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:09:58] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=70
[23:09:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=70, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:09:58] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:09:58] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:09:58] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:09:58] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:01] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:01] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=70, isReloading=false
[23:10:01] [SEND_MESSAGE] ✅ Added optimistic message id=-30 to arrays, newMsgCount=71
[23:10:01] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=71, first5Ids=[-30, 18953, 18952, 18951, 18950]
[23:10:01] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:01] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:10:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:10:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:01] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:01] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:03] [CLIENT_SIG] Event received: type=0 messageId=18954
[23:10:03] [WS_EVENT] Received event: type=0, messageId=18954
[23:10:03] [WS_EVENT] 📨 New message notification (msgId=18954) - triggering incremental refresh, currentMsgCount=71
[23:10:03] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=71
[23:10:03] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18953
[23:10:03] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18954,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:02"}
[23:10:03] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:10:02, "message_type": 0, "message_id": 18954, "file_name": , "session_id": ILUIWU, "ok": 1]
[23:10:03] [DB_UPGRADE] Upgrading message ID: -30 → 18954, preserveOriginalDate=false
[23:10:03] [DB_UPGRADE] ✅ Upgraded -30 → 18954 with send_status=0, 1 row(s) affected
[23:10:03] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -30 → 18954
[23:10:03] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -30 → 18954
[23:10:03] ReloadData 9
[23:10:04] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:04] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:10:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:10:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:04] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:10:04] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:10:04] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=71
[23:10:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=71, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:04] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:04] [CELL_UPLOAD] → has active progress=0.03569747660452783, setting uploading
[23:10:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.03569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:10:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=49.6%
[23:10:04] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:10:04] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:10:04] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:10:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.49635437654538817) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=4.5%
[23:10:04] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 2 → 2
[23:10:04] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:10:04] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:10:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.044621845755659785) for file=7112b780a9885606.mov, overlayExists=true
[23:10:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.044621845755659785) for file=7112b780a9885606.mov, overlayExists=true
[23:10:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:05] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:05] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=71, isReloading=false
[23:10:05] [SEND_MESSAGE] ✅ Added optimistic message id=-31 to arrays, newMsgCount=72
[23:10:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=72, first5Ids=[-31, 18954, 18953, 18952, 18951]
[23:10:05] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:05] [CELL_UPLOAD] → has active progress=0.044621845755659785, setting uploading
[23:10:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.044621845755659785) for file=7112b780a9885606.mov, overlayExists=true
[23:10:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:05] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:05] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:08] [CLIENT_SIG] Event received: type=0 messageId=18955
[23:10:08] [WS_EVENT] Received event: type=0, messageId=18955
[23:10:08] [WS_EVENT] 📨 New message notification (msgId=18955) - triggering incremental refresh, currentMsgCount=72
[23:10:08] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=72
[23:10:08] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18954
[23:10:08] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18955,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:06"}
[23:10:08] [CHAT] receive_message.php JSON: ["file_name": , "ok": 1, "message_type": 0, "datesent_utc": 2026-01-23 22:10:06, "message_id": 18955, "session_id": ILUIWU]
[23:10:08] [DB_UPGRADE] Upgrading message ID: -31 → 18955, preserveOriginalDate=false
[23:10:08] [DB_UPGRADE] ✅ Upgraded -31 → 18955 with send_status=0, 1 row(s) affected
[23:10:08] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -31 → 18955
[23:10:08] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -31 → 18955
[23:10:08] ReloadData 9
[23:10:08] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:08] [CELL_UPLOAD] → has active progress=0.044621845755659785, setting uploading
[23:10:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.044621845755659785) for file=7112b780a9885606.mov, overlayExists=true
[23:10:08] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:08] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:10:08] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:10:08] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=72
[23:10:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=72, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:08] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:08] [CELL_UPLOAD] → has active progress=0.044621845755659785, setting uploading
[23:10:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.044621845755659785) for file=7112b780a9885606.mov, overlayExists=true
[23:10:08] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:14] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=51.2%
[23:10:14] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:14] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:10:14] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:10:14] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:14] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:10:14] [VIDEO_DIRECT] Main upload progress: 51%
[23:10:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5123658080468523) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:16] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=5.4%
[23:10:16] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:16] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 2 → 2
[23:10:16] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:10:16] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:16] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:10:16] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.05354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:10:16] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:16] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.05354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:10:16] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:17] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:17] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=72, isReloading=false
[23:10:17] [SEND_MESSAGE] ✅ Added optimistic message id=-32 to arrays, newMsgCount=73
[23:10:17] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=73, first5Ids=[-32, 18955, 18954, 18953, 18952]
[23:10:17] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:17] [CELL_UPLOAD] → has active progress=0.05354621490679174, setting uploading
[23:10:17] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.05354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:10:17] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:17] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:17] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:19] [CLIENT_SIG] Event received: type=0 messageId=18956
[23:10:19] [WS_EVENT] Received event: type=0, messageId=18956
[23:10:19] [WS_EVENT] 📨 New message notification (msgId=18956) - triggering incremental refresh, currentMsgCount=73
[23:10:19] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=73
[23:10:19] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18955
[23:10:19] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18956,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:18"}
[23:10:19] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 22:10:18, "session_id": ILUIWU, "message_type": 0, "file_name": , "message_id": 18956, "ok": 1]
[23:10:19] [DB_UPGRADE] Upgrading message ID: -32 → 18956, preserveOriginalDate=false
[23:10:19] [DB_UPGRADE] ✅ Upgraded -32 → 18956 with send_status=0, 1 row(s) affected
[23:10:19] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -32 → 18956
[23:10:19] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -32 → 18956
[23:10:19] ReloadData 9
[23:10:20] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:20] [CELL_UPLOAD] → has active progress=0.05354621490679174, setting uploading
[23:10:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.05354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:10:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:20] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:10:20] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:10:20] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=73
[23:10:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=73, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:20] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:20] [CELL_UPLOAD] → has active progress=0.05354621490679174, setting uploading
[23:10:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.05354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:10:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=52.8%
[23:10:24] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[61]: 2 → 2
[23:10:24] [UPLOAD_STATUS] 📝 Updated chatMessages[61]: status=2
[23:10:24] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:10:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5283772395483164) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:24] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:28] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=6.2%
[23:10:28] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:28] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 2 → 2
[23:10:28] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:10:28] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:28] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:10:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.062470584057923696) for file=7112b780a9885606.mov, overlayExists=true
[23:10:28] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:28] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.062470584057923696) for file=7112b780a9885606.mov, overlayExists=true
[23:10:28] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:32] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:32] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=73, isReloading=false
[23:10:32] [SEND_MESSAGE] ✅ Added optimistic message id=-33 to arrays, newMsgCount=74
[23:10:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=74, first5Ids=[-33, 18956, 18955, 18954, 18953]
[23:10:32] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:32] [CELL_UPLOAD] → has active progress=0.062470584057923696, setting uploading
[23:10:32] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.062470584057923696) for file=7112b780a9885606.mov, overlayExists=true
[23:10:32] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:32] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:32] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:34] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:34] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=74, isReloading=false
[23:10:34] [SEND_MESSAGE] ✅ Added optimistic message id=-34 to arrays, newMsgCount=75
[23:10:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=75, first5Ids=[-34, -33, 18956, 18955, 18954]
[23:10:34] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:34] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:34] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:34] [CELL_UPLOAD] → has active progress=0.062470584057923696, setting uploading
[23:10:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.062470584057923696) for file=7112b780a9885606.mov, overlayExists=true
[23:10:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:34] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=54.4%
[23:10:34] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:34] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[13]: 2 → 2
[23:10:34] [UPLOAD_STATUS] 📝 Updated chatMessages[13]: status=2
[23:10:34] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:34] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:10:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5443886710497806) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:36] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[23:10:36] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=75, isReloading=false
[23:10:36] [SEND_MESSAGE] ✅ Added optimistic message id=-35 to arrays, newMsgCount=76
[23:10:36] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[-35, -34, -33, 18956, 18955]
[23:10:36] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[23:10:36] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[23:10:37] [CLIENT_SIG] Event received: type=0 messageId=18957
[23:10:37] [WS_EVENT] Received event: type=0, messageId=18957
[23:10:37] [WS_EVENT] 📨 New message notification (msgId=18957) - triggering incremental refresh, currentMsgCount=76
[23:10:37] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=76
[23:10:37] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18956
[23:10:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18957,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:35"}
[23:10:37] [CHAT] receive_message.php JSON: ["message_id": 18957, "datesent_utc": 2026-01-23 22:10:35, "ok": 1, "session_id": ILUIWU, "message_type": 0, "file_name": ]
[23:10:37] [DB_UPGRADE] Upgrading message ID: -33 → 18957, preserveOriginalDate=false
[23:10:37] [DB_UPGRADE] ✅ Upgraded -33 → 18957 with send_status=0, 1 row(s) affected
[23:10:37] [SEND_UPGRADE] ✅ Updated chatMessages[2].id: -33 → 18957
[23:10:37] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[2].id: -33 → 18957
[23:10:37] ReloadData 9
[23:10:37] [INCREMENTAL_SYNC] ✅ Found 2 new messages
[23:10:37] [INCREMENTAL_SYNC] Replaced optimistic message (id=-34) with server message (id=18958)
[23:10:37] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=2
[23:10:37] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=76
[23:10:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=7.1%
[23:10:37] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:37] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[65]: 2 → 2
[23:10:37] [UPLOAD_STATUS] 📝 Updated chatMessages[65]: status=2
[23:10:37] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:10:37] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:10:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:10:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:10:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:38] [MENU] dismissAnyExistingMenu called
[23:10:38] [MENU] dismissAnyExistingMenu completed
[23:10:38] [MENU] Created button 'Reply' at index 0
[23:10:38] [MENU] Created button 'Edit' at index 1
[23:10:38] [MENU] Created button 'Copy' at index 2
[23:10:38] [MENU] Created button 'Delete' at index 3
[23:10:38] [MENU] Menu added at y=444.0
[23:10:38] [CLIENT_SIG] Event received: type=0 messageId=18958
[23:10:38] [WS_EVENT] Received event: type=0, messageId=18958
[23:10:38] [WS_EVENT] 📨 New message notification (msgId=18958) - triggering incremental refresh, currentMsgCount=76
[23:10:38] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=76
[23:10:38] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18958
[23:10:38] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18958,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:36"}
[23:10:38] [CHAT] receive_message.php JSON: ["message_type": 0, "datesent_utc": 2026-01-23 22:10:36, "session_id": ILUIWU, "file_name": , "message_id": 18958, "ok": 1]
[23:10:38] [DB_UPGRADE] Upgrading message ID: -34 → 18958, preserveOriginalDate=false
[23:10:38] [DB_UPGRADE] ⚠️ No rows affected - message -34 not found in DB
[23:10:38] [SEND_UPGRADE] ⚠️ Server ID 18958 already exists - removing provisional entry -34
[23:10:38] ReloadData 9
[23:10:38] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:38] [CELL_UPLOAD] → has active progress=0.07139495320905566, setting uploading
[23:10:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:10:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:38] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[23:10:38] [INCREMENTAL_SYNC] Replaced optimistic message (id=-35) with server message (id=18959)
[23:10:38] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[23:10:38] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=76
[23:10:38] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:38] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:38] [CELL_UPLOAD] → has active progress=0.07139495320905566, setting uploading
[23:10:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:10:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:39] [MENU] menuButtonTouchDown - button title: Edit, tag: 1
[23:10:39] [MENU] menuButtonTapped - button title: Edit, tag: 1
[23:10:39] [MENU] Button frame: (0.0, 44.0, 120.0, 44.0), superview: true
[23:10:39] [MENU] Found action closure, dismissing menu first
[23:10:39] [MENU] dismissAnyExistingMenu called
[23:10:39] [MENU] Found menu with tag 9999, removing
[23:10:39] [MENU] Removing blur effect
[23:10:39] [MENU] Removing floating message snapshot
[23:10:39] [MENU] Recorded dismissal time for debounce
[23:10:39] [MENU] dismissAnyExistingMenu completed
[23:10:39] [MENU] Menu dismissed, executing action
[23:10:39] [MENU] Action executed
[23:10:39] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[23:10:40] [CLIENT_SIG] Event received: type=0 messageId=18959
[23:10:40] [WS_EVENT] Received event: type=0, messageId=18959
[23:10:40] [WS_EVENT] 📨 New message notification (msgId=18959) - triggering incremental refresh, currentMsgCount=76
[23:10:40] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18959,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 22:10:37"}
[23:10:40] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=76
[23:10:40] [CHAT] receive_message.php JSON: ["message_type": 0, "datesent_utc": 2026-01-23 22:10:37, "session_id": ILUIWU, "file_name": , "message_id": 18959, "ok": 1]
[23:10:40] [DB_UPGRADE] Upgrading message ID: -35 → 18959, preserveOriginalDate=false
[23:10:40] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:10:40] [DB_UPGRADE] ⚠️ No rows affected - message -35 not found in DB
[23:10:40] [SEND_UPGRADE] ⚠️ Server ID 18959 already exists - removing provisional entry -35
[23:10:40] ReloadData 9
[23:10:40] [INCREMENTAL_SYNC] ✅ No new messages
[23:10:40] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=76
[23:10:41] [DB_UPLOAD] 📥 Loaded media msg id=18945 with upload_status=2 (uploading), file=5cb55943ea972da0.mov
[23:10:41] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:10:41] ReloadData 11 - applying tab 0 filtering after message edit
[23:10:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:42] [CLIENT_SIG] Event received: type=2 messageId=18958
[23:10:42] [CHAT] edit_message.php HTTP 200
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18958,"event_type":2}
[23:10:42] [WS_EVENT] Received event: type=2, messageId=18958
[23:10:42] [WS_EVENT] Message edited/updated: 18958
[23:10:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:43] [LOCK] Lock button tapped - locking app immediately
[23:10:43] [LOCK] Received lock app notification
[23:10:43] [LIFECYCLE] App resigning active - cleared crash flag
[23:10:44] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:10:44] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:10:44] [LIFECYCLE] App entering background - cleared crash flag
[23:10:44] [CLIENT_SIG] Disconnecting
[23:10:44] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:10:44] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:10:44] In cleanupPeer
[23:10:44] In cleanupPeer
[23:10:44] [LIFECYCLE] WebRTC audio disabled
[23:10:44] [LIFECYCLE] AVAudioSession deactivated
[23:10:44] [LIFECYCLE] All connections stopped
[23:10:44] [CLIENT_SIG] WebSocket closed with code 1001
[23:10:44] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:10:44] [SERVER] Stopped reconnect polling
[23:10:44] [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/}
[23:10:44] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:10:44] Will request stop of video 0
[23:10:44] Will request stop of video 0
[23:10:44] [PIP] Removing 0 tracks from PiP for connection 0
[23:10:44] [PIP] ✅ All tracks removed for connection 0
[23:10:44] [PIP] Removing 0 tracks from PiP for connection 0
[23:10:44] [PIP] ✅ All tracks removed for connection 0
[23:10:47] [CLIENT_SIG] Cannot send typing_stop - not connected
[23:10:47] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:10:47] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:10:47] [LIFECYCLE] App entering foreground - restoring connections
[23:10:47] [UPLOAD_RETRY] No pending uploads to retry
[23:10:47] [LIFECYCLE] Merged 927 reactions from local DB
[23:10:47] [LIFECYCLE] WebRTC audio re-enabled
[23:10:47] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:10:47] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:10:47] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:10:47] [VIEWER] Reconnecting after background - querying agents
[23:10:47] [UNSENT_RETRY] Checking for unsent messages...
[23:10:47] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:10:47] [PENDING_UPLOAD] Found pending message: id=18945, file=5cb55943ea972da0.mov, uploadStatus=2, sendStatus=0
[23:10:47] [PENDING_UPLOAD] Total pending upload messages: 2
[23:10:47] [UNSENT_RETRY] No unsent messages found
[23:10:47] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:10:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:47] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:10:47] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:10:47] [PUSH] handlePollEventsNotification userInfo: [:]
[23:10:47] [PUSH] No message_id in userInfo
[23:10:47] [PUSH] No operation_type in userInfo
[23:10:47] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:10:47] [FAST_REFRESH] Already have 76 messages - skipping local DB load
[23:10:47] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:10:47] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:10:47] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=76
[23:10:47] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:10:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=76, first5Ids=[18883, 18884, 18885, 18886, 18887]
[23:10:47] [CLIENT_SIG] WebSocket opened
[23:10:47] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:10:47] [CLIENT_SIG] Connected! clientId=ykjDwVItY2jZHQ6X
[23:10:48] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:10:48] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:10:48] [INCREMENTAL_SYNC] ✅ No new messages
[23:10:48] [FAST_REFRESH] Incremental sync complete - 76 messages
[23:10:48] [PIN_AUTH] Correct PIN
[23:10:48] [SECURITY] Restored real session: ILUIWU
[23:10:48] [SECURITY] Restored real session: ILUIWU
[23:10:49] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:10:49] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:10:49] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:10:49] [AUTH] UI update complete
[23:10:49] [FAKE MODE] Exiting fake mode, restoring real session
[23:10:49] [SECURITY] Restored real session: ILUIWU
[23:10:49] [SECURITY] Saved real session: ILUIWU
[23:10:49] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:10:49] [DB_UPLOAD] 📥 Loaded media msg id=18945 with upload_status=2 (uploading), file=5cb55943ea972da0.mov
[23:10:49] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:10:49] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:10:49] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:10:49] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:10:49] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=56.0%
[23:10:49] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:49] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:10:49] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:10:49] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:10:49] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:10:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5604001025512447) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:10:49] [USER] ✅ User registered successfully
[23:10:49] [PUSH] User registration after token update: success
[23:10:49] [MENU] dismissAnyExistingMenu called
[23:10:49] [MENU] dismissAnyExistingMenu completed
[23:10:49] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:49] [CELL_UPLOAD] → has active progress=0.07139495320905566, setting uploading
[23:10:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.07139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:10:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:50] [SCROLL_BTN] Showing button - 379pt from bottom > half 379pt
[23:10:50] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:10:50] [CELL_UPLOAD] → has active progress=0.5604001025512447, setting uploading
[23:10:50] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5604001025512447) for file=5cb55943ea972da0.mov, overlayExists=true
[23:10:50] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:10:50] [MENU] dismissAnyExistingMenu called
[23:10:50] [MENU] dismissAnyExistingMenu completed
[23:10:52] [MENU] dismissAnyExistingMenu called
[23:10:52] [MENU] dismissAnyExistingMenu completed
[23:10:52] [MENU] dismissAnyExistingMenu called
[23:10:52] [MENU] dismissAnyExistingMenu completed
[23:11:00] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=8.9%
[23:11:00] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:00] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:11:00] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:11:00] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:00] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:11:00] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08924369151131957) for file=7112b780a9885606.mov, overlayExists=true
[23:11:00] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:00] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08924369151131957) for file=7112b780a9885606.mov, overlayExists=true
[23:11:00] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=57.6%
[23:11:04] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:04] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:04] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5764115340527088) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:07] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:11:07] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:11:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:11:08] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:08] [CELL_UPLOAD] → has active progress=0.5764115340527088, setting uploading
[23:11:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5764115340527088) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:08] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:08] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:08] [CELL_UPLOAD] → has active progress=0.08924369151131957, setting uploading
[23:11:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08924369151131957) for file=7112b780a9885606.mov, overlayExists=true
[23:11:08] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:09] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:11:09] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:11:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:11:09] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:09] [CELL_UPLOAD] → has active progress=0.5764115340527088, setting uploading
[23:11:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5764115340527088) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:09] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:09] [CELL_UPLOAD] → has active progress=0.08924369151131957, setting uploading
[23:11:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08924369151131957) for file=7112b780a9885606.mov, overlayExists=true
[23:11:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:10] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:11:10] [FAKE MODE] Enriched 50 messages with readBy data
[23:11:11] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:11:11] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:11] [CELL_UPLOAD] → has active progress=0.5764115340527088, setting uploading
[23:11:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5764115340527088) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:11] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:11:11] [CELL_UPLOAD] → has active progress=0.08924369151131957, setting uploading
[23:11:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.08924369151131957) for file=7112b780a9885606.mov, overlayExists=true
[23:11:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:14] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=9.8%
[23:11:14] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:14] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:11:14] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:11:14] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:14] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:11:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.09816806066245153) for file=7112b780a9885606.mov, overlayExists=true
[23:11:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.09816806066245153) for file=7112b780a9885606.mov, overlayExists=true
[23:11:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:17] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=59.2%
[23:11:17] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:17] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:17] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:17] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:17] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:17] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.592422965554173) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:17] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:25] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 10% (6.0/56.0 MB) task=6
[23:11:25] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=10.7%
[23:11:25] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:25] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:11:25] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:11:25] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:25] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:11:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.10709242981358348) for file=7112b780a9885606.mov, overlayExists=true
[23:11:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.10709242981358348) for file=7112b780a9885606.mov, overlayExists=true
[23:11:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:27] [UPLOAD_PROGRESS] 5cb55943ea972da0.mov: 60% (19.0/31.2 MB) task=4
[23:11:27] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=60.8%
[23:11:27] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:27] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:27] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:27] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:27] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6084343970556371) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:32] [LOCK] Lock button tapped - locking app immediately
[23:11:32] [LOCK] Received lock app notification
[23:11:33] [NETWORK] Status changed: connected
[23:11:34] [NETWORK] Status changed: connected
[23:11:35] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=11.6%
[23:11:35] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:35] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:11:35] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:11:35] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:35] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:11:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11601679896471544) for file=7112b780a9885606.mov, overlayExists=true
[23:11:35] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.11601679896471544) for file=7112b780a9885606.mov, overlayExists=true
[23:11:35] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:38] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=62.4%
[23:11:38] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:38] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:38] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:38] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:38] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6244458285571013) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:47] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=12.5%
[23:11:47] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:47] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:11:47] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:11:47] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:11:47] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:11:47] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.12494116811584739) for file=7112b780a9885606.mov, overlayExists=true
[23:11:47] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:47] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.12494116811584739) for file=7112b780a9885606.mov, overlayExists=true
[23:11:47] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:48] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=64.0%
[23:11:48] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:48] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:48] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:48] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:48] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:48] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6404572600585654) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:48] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:11:55] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=65.6%
[23:11:55] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:55] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:11:55] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:11:55] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:11:55] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:11:55] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6564686915600295) for file=5cb55943ea972da0.mov, overlayExists=true
[23:11:55] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=13.4%
[23:12:01] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:12:01] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:12:01] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:12:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.13386553726697936) for file=7112b780a9885606.mov, overlayExists=true
[23:12:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.13386553726697936) for file=7112b780a9885606.mov, overlayExists=true
[23:12:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:05] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=67.2%
[23:12:05] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:12:05] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:12:05] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:12:05] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:12:05] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:12:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6724801230614936) for file=5cb55943ea972da0.mov, overlayExists=true
[23:12:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:11] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=14.3%
[23:12:11] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:11] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:12:11] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:12:11] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:11] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:12:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.14278990641811132) for file=7112b780a9885606.mov, overlayExists=true
[23:12:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.14278990641811132) for file=7112b780a9885606.mov, overlayExists=true
[23:12:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:19] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=68.8%
[23:12:19] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:12:19] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:12:19] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:12:19] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:12:19] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:12:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6884915545629577) for file=5cb55943ea972da0.mov, overlayExists=true
[23:12:19] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:25] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=15.2%
[23:12:25] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:25] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:12:25] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:12:25] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:12:25] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:12:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.15171427556924327) for file=7112b780a9885606.mov, overlayExists=true
[23:12:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.15171427556924327) for file=7112b780a9885606.mov, overlayExists=true
[23:12:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:12:27] [LIFECYCLE] App resigning active - cleared crash flag
[23:12:28] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:12:28] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:12:28] [LIFECYCLE] App entering background - cleared crash flag
[23:12:28] [CLIENT_SIG] Disconnecting
[23:12:28] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:12:28] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:12:28] In cleanupPeer
[23:12:28] In cleanupPeer
[23:12:28] [LIFECYCLE] WebRTC audio disabled
[23:12:28] [LIFECYCLE] AVAudioSession deactivated
[23:12:28] [LIFECYCLE] All connections stopped
[23:12:28] [CLIENT_SIG] WebSocket closed with code 1001
[23:12:28] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:12: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/}
[23:12:28] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:12:28] [SERVER] Stopped reconnect polling
[23:12:28] Will request stop of video 0
[23:12:28] Will request stop of video 0
[23:12:28] [PIP] Removing 0 tracks from PiP for connection 0
[23:12:28] [PIP] ✅ All tracks removed for connection 0
[23:12:28] [PIP] Removing 0 tracks from PiP for connection 0
[23:12:28] [PIP] ✅ All tracks removed for connection 0
[23:14:16] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:14:16] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:14:16] [LIFECYCLE] App entering foreground - restoring connections
[23:14:16] [UPLOAD_RETRY] No pending uploads to retry
[23:14:16] [LIFECYCLE] Merged 927 reactions from local DB
[23:14:16] [LIFECYCLE] WebRTC audio re-enabled
[23:14:16] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:14:16] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:14:16] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:14:16] [VIEWER] Reconnecting after background - querying agents
[23:14:16] [UNSENT_RETRY] Checking for unsent messages...
[23:14:16] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:14:16] [PENDING_UPLOAD] Found pending message: id=18945, file=5cb55943ea972da0.mov, uploadStatus=2, sendStatus=0
[23:14:16] [PENDING_UPLOAD] Total pending upload messages: 2
[23:14:16] [UNSENT_RETRY] No unsent messages found
[23:14:16] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:14:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:16] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:14:16] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:14:16] [PUSH] handlePollEventsNotification userInfo: [:]
[23:14:16] [PUSH] No message_id in userInfo
[23:14:16] [PUSH] No operation_type in userInfo
[23:14:16] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:14:16] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:14:16] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:14:16] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:14:16] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:14:16] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:14:16] [CLIENT_SIG] WebSocket opened
[23:14:16] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:14:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:16] [CLIENT_SIG] Connected! clientId=iaC-nMf1QAdQjI7r
[23:14:16] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:14:16] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:14:17] [INCREMENTAL_SYNC] ✅ No new messages
[23:14:17] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:14:17] [PIN_AUTH] Correct PIN
[23:14:17] [SECURITY] Restored real session: ILUIWU
[23:14:17] [SECURITY] Restored real session: ILUIWU
[23:14:17] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:14:17] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:14:17] [AUTH] UI update complete
[23:14:17] [FAKE MODE] Exiting fake mode, restoring real session
[23:14:17] [SECURITY] Restored real session: ILUIWU
[23:14:17] [SECURITY] Saved real session: ILUIWU
[23:14:17] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:14:18] [DB_UPLOAD] 📥 Loaded media msg id=18945 with upload_status=2 (uploading), file=5cb55943ea972da0.mov
[23:14:18] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:14:18] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:14:18] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:14:18] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:14:18] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:18] [USER] ✅ User registered successfully
[23:14:18] [PUSH] User registration after token update: success
[23:14:19] [MENU] dismissAnyExistingMenu called
[23:14:19] [MENU] dismissAnyExistingMenu completed
[23:14:19] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:19] [CELL_UPLOAD] → has active progress=0.15171427556924327, setting uploading
[23:14:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.15171427556924327) for file=7112b780a9885606.mov, overlayExists=true
[23:14:19] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:20] [MENU] dismissAnyExistingMenu called
[23:14:20] [MENU] dismissAnyExistingMenu completed
[23:14:20] [MENU] dismissAnyExistingMenu called
[23:14:20] [MENU] dismissAnyExistingMenu completed
[23:14:21] [SCROLL_BTN] Showing button - 382pt from bottom > half 379pt
[23:14:21] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:21] [CELL_UPLOAD] → has active progress=0.6884915545629577, setting uploading
[23:14:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6884915545629577) for file=5cb55943ea972da0.mov, overlayExists=true
[23:14:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:22] [MENU] dismissAnyExistingMenu called
[23:14:22] [MENU] dismissAnyExistingMenu completed
[23:14:22] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:14:22] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:14:22] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:14:23] [MENU] dismissAnyExistingMenu called
[23:14:23] [MENU] dismissAnyExistingMenu completed
[23:14:25] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=22.3%
[23:14:25] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:25] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:14:25] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:14:25] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:25] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:14:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22310922877829892) for file=7112b780a9885606.mov, overlayExists=true
[23:14:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:25] [MENU] dismissAnyExistingMenu called
[23:14:25] [MENU] dismissAnyExistingMenu completed
[23:14:25] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:25] [CELL_UPLOAD] → has active progress=0.6884915545629577, setting uploading
[23:14:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6884915545629577) for file=5cb55943ea972da0.mov, overlayExists=true
[23:14:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:25] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:25] [CELL_UPLOAD] → has active progress=0.22310922877829892, setting uploading
[23:14:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22310922877829892) for file=7112b780a9885606.mov, overlayExists=true
[23:14:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:25] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=81.7%
[23:14:25] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:25] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:14:25] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:14:25] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:25] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:14:25] [VIDEO_DIRECT] Main upload progress: 81%
[23:14:25] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8165830065746709) for file=5cb55943ea972da0.mov, overlayExists=true
[23:14:25] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:26] [MENU] dismissAnyExistingMenu called
[23:14:26] [MENU] dismissAnyExistingMenu completed
[23:14:30] [LOCK] Lock button tapped - locking app immediately
[23:14:30] [LOCK] Received lock app notification
[23:14:31] [LIFECYCLE] App resigning active - cleared crash flag
[23:14:32] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:14:32] [FOREGROUND] Enriched 15 messages with readBy data from server
[23:14:32] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:14:32] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:14:32] [LIFECYCLE] App entering background - cleared crash flag
[23:14:32] [CLIENT_SIG] Disconnecting
[23:14:32] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:14:32] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:14:32] In cleanupPeer
[23:14:32] In cleanupPeer
[23:14:32] [LIFECYCLE] WebRTC audio disabled
[23:14:32] [LIFECYCLE] AVAudioSession deactivated
[23:14:32] [LIFECYCLE] All connections stopped
[23:14:33] [SERVER] Stopped reconnect polling
[23:14:33] Will request stop of video 0
[23:14:33] Will request stop of video 0
[23:14:33] [CLIENT_SIG] WebSocket closed with code 1001
[23:14:33] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:14:33] [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/}
[23:14:33] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:14:33] [PIP] Removing 0 tracks from PiP for connection 0
[23:14:33] [PIP] ✅ All tracks removed for connection 0
[23:14:33] [PIP] Removing 0 tracks from PiP for connection 0
[23:14:33] [PIP] ✅ All tracks removed for connection 0
[23:14:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:33] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:33] [CELL_UPLOAD] → has active progress=0.22310922877829892, setting uploading
[23:14:33] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22310922877829892) for file=7112b780a9885606.mov, overlayExists=true
[23:14:33] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:35] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:14:35] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:14:35] [LIFECYCLE] App entering foreground - restoring connections
[23:14:35] [UPLOAD_RETRY] No pending uploads to retry
[23:14:35] [LIFECYCLE] Merged 927 reactions from local DB
[23:14:35] [LIFECYCLE] WebRTC audio re-enabled
[23:14:35] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:14:35] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:14:35] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:14:35] [VIEWER] Reconnecting after background - querying agents
[23:14:35] [UNSENT_RETRY] Checking for unsent messages...
[23:14:35] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:14:35] [PENDING_UPLOAD] Found pending message: id=18945, file=5cb55943ea972da0.mov, uploadStatus=2, sendStatus=0
[23:14:35] [PENDING_UPLOAD] Total pending upload messages: 2
[23:14:35] [UNSENT_RETRY] No unsent messages found
[23:14:35] [FAKE MODE] Enriched 0 messages with readBy data
[23:14:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:14:35] [FAST_REFRESH] Enriched 0 messages with readBy data
[23:14:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[23:14:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:35] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:35] [CELL_UPLOAD] → has active progress=0.22310922877829892, setting uploading
[23:14:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22310922877829892) for file=7112b780a9885606.mov, overlayExists=true
[23:14:35] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:35] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:14:35] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:14:35] [PUSH] handlePollEventsNotification userInfo: [:]
[23:14:35] [PUSH] No message_id in userInfo
[23:14:35] [PUSH] No operation_type in userInfo
[23:14:35] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:14:35] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:14:35] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:14:35] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:14:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:14:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:14:35] [CLIENT_SIG] WebSocket opened
[23:14:35] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:14:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:35] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:35] [CELL_UPLOAD] → has active progress=0.22310922877829892, setting uploading
[23:14:35] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.22310922877829892) for file=7112b780a9885606.mov, overlayExists=true
[23:14:35] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:35] [CLIENT_SIG] Connected! clientId=BIwFIIpXO6QLhb8z
[23:14:35] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:14:35] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:14:36] [INCREMENTAL_SYNC] ✅ No new messages
[23:14:36] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:14:37] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:14:43] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=23.2%
[23:14:43] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:43] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:14:43] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:14:43] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:43] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:14:43] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.23203359792943087) for file=7112b780a9885606.mov, overlayExists=true
[23:14:43] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:45] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=83.3%
[23:14:45] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:45] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:14:45] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:14:45] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:45] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:14:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.832594438076135) for file=5cb55943ea972da0.mov, overlayExists=true
[23:14:45] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:53] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:14:53] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:14:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:53] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:53] [CELL_UPLOAD] → has active progress=0.23203359792943087, setting uploading
[23:14:53] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.23203359792943087) for file=7112b780a9885606.mov, overlayExists=true
[23:14:53] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:53] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:14:53] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:14:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:14:53] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:14:53] [CELL_UPLOAD] → has active progress=0.23203359792943087, setting uploading
[23:14:53] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.23203359792943087) for file=7112b780a9885606.mov, overlayExists=true
[23:14:53] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:57] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=24.1%
[23:14:57] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:57] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:14:57] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:14:57] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:14:57] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:14:57] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.24095796708056283) for file=7112b780a9885606.mov, overlayExists=true
[23:14:57] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:14:58] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=84.9%
[23:14:58] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:58] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:14:58] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:14:58] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:14:58] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:14:58] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8486058695775991) for file=5cb55943ea972da0.mov, overlayExists=true
[23:14:58] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:09] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=25.0%
[23:15:09] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:09] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:15:09] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:15:09] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:09] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:15:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.24988233623169478) for file=7112b780a9885606.mov, overlayExists=true
[23:15:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:11] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=86.5%
[23:15:11] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:11] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:15:11] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:15:11] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:11] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:15:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8646173010790632) for file=5cb55943ea972da0.mov, overlayExists=true
[23:15:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:20] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=25.9%
[23:15:20] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:20] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:15:20] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:15:20] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:20] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:15:20] [VIDEO_DIRECT] Main upload progress: 25%
[23:15:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25880670538282674) for file=7112b780a9885606.mov, overlayExists=true
[23:15:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:23] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=88.1%
[23:15:23] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:23] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:15:23] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:15:23] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:23] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:15:23] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8806287325805274) for file=5cb55943ea972da0.mov, overlayExists=true
[23:15:23] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:28] [LIFECYCLE] App resigning active - cleared crash flag
[23:15:29] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:15:29] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:15:29] [LIFECYCLE] App entering background - cleared crash flag
[23:15:29] [CLIENT_SIG] Disconnecting
[23:15:29] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:15:29] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:15:29] In cleanupPeer
[23:15:29] In cleanupPeer
[23:15:29] [LIFECYCLE] WebRTC audio disabled
[23:15:29] [LIFECYCLE] AVAudioSession deactivated
[23:15:29] [LIFECYCLE] All connections stopped
[23:15:30] [CLIENT_SIG] WebSocket closed with code 1001
[23:15:30] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:15:30] [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/}
[23:15:30] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:15:30] [SERVER] Stopped reconnect polling
[23:15:30] Will request stop of video 0
[23:15:30] Will request stop of video 0
[23:15:30] [PIP] Removing 0 tracks from PiP for connection 0
[23:15:30] [PIP] ✅ All tracks removed for connection 0
[23:15:30] [PIP] Removing 0 tracks from PiP for connection 0
[23:15:30] [PIP] ✅ All tracks removed for connection 0
[23:15:31] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:15:31] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:15:31] [LIFECYCLE] App entering foreground - restoring connections
[23:15:31] [UPLOAD_RETRY] No pending uploads to retry
[23:15:31] [LIFECYCLE] Merged 927 reactions from local DB
[23:15:31] [LIFECYCLE] WebRTC audio re-enabled
[23:15:31] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:15:31] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:15:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:15:31] [VIEWER] Reconnecting after background - querying agents
[23:15:31] [UNSENT_RETRY] Checking for unsent messages...
[23:15:31] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:15:31] [PENDING_UPLOAD] Found pending message: id=18945, file=5cb55943ea972da0.mov, uploadStatus=2, sendStatus=0
[23:15:31] [PENDING_UPLOAD] Total pending upload messages: 2
[23:15:31] [UNSENT_RETRY] No unsent messages found
[23:15:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:32] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:32] [CELL_UPLOAD] → has active progress=0.25880670538282674, setting uploading
[23:15:32] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25880670538282674) for file=7112b780a9885606.mov, overlayExists=true
[23:15:32] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:32] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:15:32] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:15:32] [PUSH] handlePollEventsNotification userInfo: [:]
[23:15:32] [PUSH] No message_id in userInfo
[23:15:32] [PUSH] No operation_type in userInfo
[23:15:32] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:15:32] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:15:32] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:15:32] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:15:32] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:15:32] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:15:32] [CLIENT_SIG] WebSocket opened
[23:15:32] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:15:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:32] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:32] [CELL_UPLOAD] → has active progress=0.25880670538282674, setting uploading
[23:15:32] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25880670538282674) for file=7112b780a9885606.mov, overlayExists=true
[23:15:32] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:32] [CLIENT_SIG] Connected! clientId=qCnCp0nL8MZ8CRhs
[23:15:32] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:15:32] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:15:32] [INCREMENTAL_SYNC] ✅ No new messages
[23:15:32] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:15:34] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:15:36] [PIN_AUTH] Correct PIN
[23:15:36] [SECURITY] Restored real session: ILUIWU
[23:15:36] [SECURITY] Restored real session: ILUIWU
[23:15:36] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:15:36] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:15:36] [AUTH] UI update complete
[23:15:36] [FAKE MODE] Exiting fake mode, restoring real session
[23:15:36] [SECURITY] Restored real session: ILUIWU
[23:15:36] [SECURITY] Saved real session: ILUIWU
[23:15:36] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:15:36] [DB_UPLOAD] 📥 Loaded media msg id=18945 with upload_status=2 (uploading), file=5cb55943ea972da0.mov
[23:15:36] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:15:36] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:15:36] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:37] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:15:37] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:15:37] [USER] ✅ User registered successfully
[23:15:37] [PUSH] User registration after token update: success
[23:15:37] [MENU] dismissAnyExistingMenu called
[23:15:37] [MENU] dismissAnyExistingMenu completed
[23:15:37] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:37] [CELL_UPLOAD] → has active progress=0.25880670538282674, setting uploading
[23:15:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25880670538282674) for file=7112b780a9885606.mov, overlayExists=true
[23:15:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:37] [SCROLL_BTN] Showing button - 389pt from bottom > half 379pt
[23:15:37] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:37] [CELL_UPLOAD] → has active progress=0.8806287325805274, setting uploading
[23:15:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8806287325805274) for file=5cb55943ea972da0.mov, overlayExists=true
[23:15:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:38] [MENU] dismissAnyExistingMenu called
[23:15:38] [MENU] dismissAnyExistingMenu completed
[23:15:38] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:15:38] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:15:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:15:38] [MENU] dismissAnyExistingMenu called
[23:15:38] [MENU] dismissAnyExistingMenu completed
[23:15:39] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=89.7%
[23:15:39] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:39] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:15:39] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:15:39] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:39] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:15:39] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8966401640819915) for file=5cb55943ea972da0.mov, overlayExists=true
[23:15:39] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:42] [MENU] dismissAnyExistingMenu called
[23:15:42] [MENU] dismissAnyExistingMenu completed
[23:15:42] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:42] [CELL_UPLOAD] → has active progress=0.25880670538282674, setting uploading
[23:15:42] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.25880670538282674) for file=7112b780a9885606.mov, overlayExists=true
[23:15:42] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:42] [MENU] dismissAnyExistingMenu called
[23:15:42] [MENU] dismissAnyExistingMenu completed
[23:15:42] [CENTER_CONTENT] boundsSize: (0.0, 0.0), contentSize: (440.0, 956.0)
[23:15:42] [CENTER_CONTENT] topSafeArea: 0.0, controlsHeight: 76.0, visibleHeight: -76.0
[23:15:42] [CENTER_CONTENT] Content larger than visible - Setting insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: 76.0, right: 0.0)
[23:15:45] [MENU] dismissAnyExistingMenu called
[23:15:45] [MENU] dismissAnyExistingMenu completed
[23:15:45] [MENU] dismissAnyExistingMenu called
[23:15:45] [MENU] dismissAnyExistingMenu completed
[23:15:46] [CENTER_CONTENT] boundsSize: (0.0, 0.0), contentSize: (440.0, 956.0)
[23:15:46] [CENTER_CONTENT] topSafeArea: 0.0, controlsHeight: 76.0, visibleHeight: -76.0
[23:15:46] [CENTER_CONTENT] Content larger than visible - Setting insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: 76.0, right: 0.0)
[23:15:48] [MENU] dismissAnyExistingMenu called
[23:15:48] [MENU] dismissAnyExistingMenu completed
[23:15:48] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=27.7%
[23:15:48] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:48] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:15:48] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:15:48] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:15:48] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:15:48] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.27665544368509065) for file=7112b780a9885606.mov, overlayExists=true
[23:15:48] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:49] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:49] [CELL_UPLOAD] → has active progress=0.27665544368509065, setting uploading
[23:15:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.27665544368509065) for file=7112b780a9885606.mov, overlayExists=true
[23:15:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:53] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:15:53] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:15:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:53] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:53] [CELL_UPLOAD] → has active progress=0.27665544368509065, setting uploading
[23:15:53] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.27665544368509065) for file=7112b780a9885606.mov, overlayExists=true
[23:15:53] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:54] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:15:54] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:15:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:54] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:54] [CELL_UPLOAD] → has active progress=0.27665544368509065, setting uploading
[23:15:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.27665544368509065) for file=7112b780a9885606.mov, overlayExists=true
[23:15:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:56] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=91.3%
[23:15:56] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:56] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:15:56] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:15:56] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:15:56] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:15:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9126515955834557) for file=5cb55943ea972da0.mov, overlayExists=true
[23:15:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:57] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:15:57] [FAKE MODE] Enriched 50 messages with readBy data
[23:15:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:15:57] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:15:57] [CELL_UPLOAD] → has active progress=0.27665544368509065, setting uploading
[23:15:57] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.27665544368509065) for file=7112b780a9885606.mov, overlayExists=true
[23:15:57] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:15:57] [LOCK] Lock button tapped - locking app immediately
[23:15:57] [LOCK] Received lock app notification
[23:16:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=28.6%
[23:16:01] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:16:01] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:16:01] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:16:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.28557981283622264) for file=7112b780a9885606.mov, overlayExists=true
[23:16:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:09] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=92.9%
[23:16:09] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:09] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:16:09] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:16:09] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:09] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:16:09] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9286630270849198) for file=5cb55943ea972da0.mov, overlayExists=true
[23:16:09] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:14] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=29.5%
[23:16:14] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:14] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:16:14] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:16:14] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:14] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:16:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.29450418198735456) for file=7112b780a9885606.mov, overlayExists=true
[23:16:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:19] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=94.5%
[23:16:19] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:19] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:16:19] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:16:19] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:19] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:16:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9446744585863839) for file=5cb55943ea972da0.mov, overlayExists=true
[23:16:19] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:26] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 30% (17.0/56.0 MB) task=6
[23:16:26] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=30.3%
[23:16:26] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:26] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:16:26] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:16:26] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:26] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:16:26] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.30342855113848655) for file=7112b780a9885606.mov, overlayExists=true
[23:16:26] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=96.1%
[23:16:31] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:31] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:16:31] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:16:31] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:31] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:16:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9606858900878481) for file=5cb55943ea972da0.mov, overlayExists=true
[23:16:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=31.2%
[23:16:37] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:37] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:16:37] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:16:37] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:37] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:16:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3123529202896185) for file=7112b780a9885606.mov, overlayExists=true
[23:16:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:43] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=97.7%
[23:16:43] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:43] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:16:43] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:16:43] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:43] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:16:43] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9766973215893122) for file=5cb55943ea972da0.mov, overlayExists=true
[23:16:43] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:49] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=32.1%
[23:16:49] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:49] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:16:49] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:16:49] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:16:49] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:16:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.32127728944075046) for file=7112b780a9885606.mov, overlayExists=true
[23:16:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:53] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=99.3%
[23:16:53] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:53] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:16:53] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:16:53] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:16:53] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:16:53] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.9927087530907763) for file=5cb55943ea972da0.mov, overlayExists=true
[23:16:53] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:53] [LIFECYCLE] App resigning active - cleared crash flag
[23:16:54] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:16:54] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:16:54] [LIFECYCLE] App entering background - cleared crash flag
[23:16:54] [CLIENT_SIG] Disconnecting
[23:16:54] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:16:54] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:16:54] In cleanupPeer
[23:16:54] In cleanupPeer
[23:16:54] [LIFECYCLE] WebRTC audio disabled
[23:16:54] [LIFECYCLE] AVAudioSession deactivated
[23:16:54] [LIFECYCLE] All connections stopped
[23:16:54] [CLIENT_SIG] WebSocket closed with code 1001
[23:16:54] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:16:54] [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/}
[23:16:54] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:16:54] [SERVER] Stopped reconnect polling
[23:16:54] Will request stop of video 0
[23:16:54] Will request stop of video 0
[23:16:54] [PIP] Removing 0 tracks from PiP for connection 0
[23:16:54] [PIP] ✅ All tracks removed for connection 0
[23:16:54] [PIP] Removing 0 tracks from PiP for connection 0
[23:16:54] [PIP] ✅ All tracks removed for connection 0
[23:16:57] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:16:57] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:16:57] [LIFECYCLE] App entering foreground - restoring connections
[23:16:57] [UPLOAD_RETRY] No pending uploads to retry
[23:16:57] [LIFECYCLE] Merged 927 reactions from local DB
[23:16:57] [LIFECYCLE] WebRTC audio re-enabled
[23:16:57] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:16:57] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:16:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:16:57] [VIEWER] Reconnecting after background - querying agents
[23:16:57] [UNSENT_RETRY] Checking for unsent messages...
[23:16:57] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:16:57] [PENDING_UPLOAD] Found pending message: id=18945, file=5cb55943ea972da0.mov, uploadStatus=2, sendStatus=0
[23:16:57] [PENDING_UPLOAD] Total pending upload messages: 2
[23:16:57] [UNSENT_RETRY] No unsent messages found
[23:16:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:16:57] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:16:57] [CELL_UPLOAD] → has active progress=0.32127728944075046, setting uploading
[23:16:57] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.32127728944075046) for file=7112b780a9885606.mov, overlayExists=true
[23:16:57] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:57] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:16:57] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:16:57] [PUSH] handlePollEventsNotification userInfo: [:]
[23:16:57] [PUSH] No message_id in userInfo
[23:16:57] [PUSH] No operation_type in userInfo
[23:16:57] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:16:57] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:16:57] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:16:57] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:16:57] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:16:57] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:16:57] [CLIENT_SIG] WebSocket opened
[23:16:57] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:16:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:16:57] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:16:57] [CELL_UPLOAD] → has active progress=0.32127728944075046, setting uploading
[23:16:57] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.32127728944075046) for file=7112b780a9885606.mov, overlayExists=true
[23:16:57] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:16:57] [CLIENT_SIG] Connected! clientId=8u40LeM_napP6mJM
[23:16:57] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:16:57] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:16:58] [INCREMENTAL_SYNC] ✅ No new messages
[23:16:58] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:16:58] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:17:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=33.0%
[23:17:04] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:04] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:04] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3302016585918824) for file=7112b780a9885606.mov, overlayExists=true
[23:17:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:11] [UPLOAD_PROGRESS] 5cb55943ea972da0.mov: 100% (31.2/31.2 MB) task=4
[23:17:11] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=uploading (2), progress=100.0%
[23:17:11] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:17:11] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 2
[23:17:11] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=2
[23:17:11] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=2 (uploading)
[23:17:11] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:17:11] [VIDEO_DIRECT] Main upload progress: 100%
[23:17:11] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:17:11] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:12] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:17:12] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:17:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:17:12] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:17:12] [CELL_UPLOAD] → has active progress=0.3302016585918824, setting uploading
[23:17:12] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3302016585918824) for file=7112b780a9885606.mov, overlayExists=true
[23:17:12] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:15] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:17:15] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:17:16] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:17:16] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:17:16] [CELL_UPLOAD] → has active progress=0.3302016585918824, setting uploading
[23:17:16] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3302016585918824) for file=7112b780a9885606.mov, overlayExists=true
[23:17:16] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:18] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=33.9%
[23:17:18] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:18] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:18] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:18] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:18] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:18] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.33912602774301437) for file=7112b780a9885606.mov, overlayExists=true
[23:17:18] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=34.8%
[23:17:31] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:31] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:31] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:31] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:31] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3480503968941463) for file=7112b780a9885606.mov, overlayExists=true
[23:17:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:36] [UPLOAD_RESPONSE] Started receiving response for task 4
[23:17:36] [UPLOAD_METRICS] Task 4 metrics:
[23:17:36] [UPLOAD_METRICS]   Total time: 643.81s
[23:17:36] [UPLOAD_METRICS]   Upload time: 638.12s
[23:17:36] [UPLOAD_METRICS]   Response time: 0.00s
[23:17:36] [UPLOAD_METRICS]   Network protocol: http/1.1
[23:17:36] [UPLOAD_METRICS]   Proxy: no
[23:17:36] [UPLOAD_METRICS]   Reused connection: yes
[23:17:36] [UPLOAD_COMPLETE] ========== Task Completed ==========
[23:17:36] [UPLOAD_COMPLETE] Task ID: 4
[23:17:36] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[23:17:36] [UPLOAD_COMPLETE] Filename: 5cb55943ea972da0.mov
[23:17:36] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents/MediaCache/5cb55943ea972da0.mov
[23:17:36] [UPLOAD_COMPLETE] Retry count: 0
[23:17:36] [UPLOAD_COMPLETE] HTTP Status: 200
[23:17:36] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Date"): Fri, 23 Jan 2026 22:06:52 GMT, AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Content-Type"): application/json, AnyHashable("Content-Length"): 219, AnyHashable("Connection"): Keep-Alive]
[23:17:36] [UPLOAD_COMPLETE] Response body (219 bytes): {"ok":true,"file_name":"5cb55943ea972da0.mov","orig_name":"5cb55943ea972da0.mov","size":32744130,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":32744605}}
[23:17:36] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[23:17:36] [UPLOAD_COMPLETE] Server filename: 5cb55943ea972da0.mov
[23:17:36] [UPLOAD_VERIFY] Verifying file exists: 5cb55943ea972da0.mov
[23:17:36] [UPLOAD_VERIFY] ✅ File verified: 5cb55943ea972da0.mov (size: 32744130)
[23:17:36] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=5cb55943ea972da0.mov | id=652 | retries=0
[23:17:36] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[23:17:36] [UPLOAD_COMPLETE] ✅ File: 5cb55943ea972da0.mov
[23:17:36] [UPLOAD_COMPLETE] ✅ Queue ID: 652
[23:17:36] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[23:17:36] [UPLOAD_COMPLETE] ✅ Server filename: 5cb55943ea972da0.mov
[23:17:36] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[23:17:36] [UPLOAD_NOTIFY] 📣 Posting notification: file=5cb55943ea972da0.mov, status=complete (0), progress=0.0%
[23:17:36] [UPLOAD_STATUS] 📬 Received notification: file=5cb55943ea972da0.mov, status=0 (complete)
[23:17:36] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[35]: 2 → 0
[23:17:36] [UPLOAD_STATUS] 📝 Updated chatMessages[35]: status=0
[23:17:36] [UPLOAD_STATUS] 💾 Updating DB: file=5cb55943ea972da0.mov, status=0 (complete)
[23:17:36] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=652
[23:17:36] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=5cb55943ea972da0.mov
[23:17:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:17:36] [VIDEO_DIRECT] VIDEO UPLOADED SUCCESSFULLY
[23:17:36] [VIDEO_DIRECT] Server filename: 5cb55943ea972da0.mov
[23:17:36] [VIDEO_DIRECT] Main upload duration: 644.34s
[23:17:36] [VIDEO_DIRECT] Total upload duration: 645.19s
[23:17:36] [VIDEO_DIRECT] ========== UPLOAD COMPLETE ==========
[23:17:40] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=35.7%
[23:17:40] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:40] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:40] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:40] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:40] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3569747660452783) for file=7112b780a9885606.mov, overlayExists=true
[23:17:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:46] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=36.6%
[23:17:46] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:46] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:46] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:46] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:46] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:46] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3658991351964102) for file=7112b780a9885606.mov, overlayExists=true
[23:17:46] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:52] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=37.5%
[23:17:52] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:52] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:52] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:52] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:52] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:52] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3748235043475422) for file=7112b780a9885606.mov, overlayExists=true
[23:17:52] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:17:59] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=38.4%
[23:17:59] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:59] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:17:59] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:17:59] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:17:59] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:17:59] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3837478734986742) for file=7112b780a9885606.mov, overlayExists=true
[23:17:59] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:07] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=39.3%
[23:18:07] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:07] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:07] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:07] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:07] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:07] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.3926722426498061) for file=7112b780a9885606.mov, overlayExists=true
[23:18:07] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:14] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 40% (22.5/56.0 MB) task=6
[23:18:14] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=40.2%
[23:18:14] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:14] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:14] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:14] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:14] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4015966118009381) for file=7112b780a9885606.mov, overlayExists=true
[23:18:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:17] [LIFECYCLE] App resigning active - cleared crash flag
[23:18:18] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:18:18] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:18:18] [LIFECYCLE] App entering background - cleared crash flag
[23:18:18] [CLIENT_SIG] Disconnecting
[23:18:18] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:18:18] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:18:18] In cleanupPeer
[23:18:18] In cleanupPeer
[23:18:18] [LIFECYCLE] WebRTC audio disabled
[23:18:18] [LIFECYCLE] AVAudioSession deactivated
[23:18:18] [LIFECYCLE] All connections stopped
[23:18:18] [CLIENT_SIG] WebSocket closed with code 1001
[23:18:18] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:18: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/}
[23:18:18] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:18:18] [SERVER] Stopped reconnect polling
[23:18:18] Will request stop of video 0
[23:18:18] Will request stop of video 0
[23:18:18] [PIP] Removing 0 tracks from PiP for connection 0
[23:18:18] [PIP] ✅ All tracks removed for connection 0
[23:18:18] [PIP] Removing 0 tracks from PiP for connection 0
[23:18:18] [PIP] ✅ All tracks removed for connection 0
[23:18:19] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:18:19] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:18:19] [LIFECYCLE] App entering foreground - restoring connections
[23:18:19] [UPLOAD_RETRY] No pending uploads to retry
[23:18:19] [LIFECYCLE] Merged 927 reactions from local DB
[23:18:19] [LIFECYCLE] WebRTC audio re-enabled
[23:18:19] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:18:19] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:18:19] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:18:19] [VIEWER] Reconnecting after background - querying agents
[23:18:19] [UNSENT_RETRY] Checking for unsent messages...
[23:18:19] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:18:19] [PENDING_UPLOAD] Total pending upload messages: 1
[23:18:19] [UNSENT_RETRY] No unsent messages found
[23:18:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:18:19] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:18:19] [CELL_UPLOAD] → has active progress=0.4015966118009381, setting uploading
[23:18:19] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4015966118009381) for file=7112b780a9885606.mov, overlayExists=true
[23:18:19] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:19] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:18:19] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:18:19] [PUSH] handlePollEventsNotification userInfo: [:]
[23:18:19] [PUSH] No message_id in userInfo
[23:18:19] [PUSH] No operation_type in userInfo
[23:18:19] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:18:19] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:18:19] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:18:19] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:18:19] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:18:19] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:18:19] [CLIENT_SIG] WebSocket opened
[23:18:19] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:18:20] [CLIENT_SIG] Connected! clientId=7MMnTucBZGoyYvnd
[23:18:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:18:20] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:18:20] [CELL_UPLOAD] → has active progress=0.4015966118009381, setting uploading
[23:18:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4015966118009381) for file=7112b780a9885606.mov, overlayExists=true
[23:18:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:20] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:18:20] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:18:20] [INCREMENTAL_SYNC] ✅ No new messages
[23:18:20] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:18:22] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=41.1%
[23:18:22] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:22] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:22] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:22] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:22] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:22] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.41052098095207) for file=7112b780a9885606.mov, overlayExists=true
[23:18:22] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:18:30] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=41.9%
[23:18:30] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:30] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:30] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:30] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:30] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.419445350103202) for file=7112b780a9885606.mov, overlayExists=true
[23:18:30] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:33] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:18:33] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:18:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:18:33] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:18:33] [CELL_UPLOAD] → has active progress=0.419445350103202, setting uploading
[23:18:33] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.419445350103202) for file=7112b780a9885606.mov, overlayExists=true
[23:18:33] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:34] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:18:34] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:18:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:18:34] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:18:34] [CELL_UPLOAD] → has active progress=0.419445350103202, setting uploading
[23:18:34] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.419445350103202) for file=7112b780a9885606.mov, overlayExists=true
[23:18:34] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:40] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=42.8%
[23:18:40] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:40] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:40] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:40] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:40] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:40] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4283697192543339) for file=7112b780a9885606.mov, overlayExists=true
[23:18:40] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:45] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=43.7%
[23:18:45] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:45] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:45] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:45] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:45] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4372940884054659) for file=7112b780a9885606.mov, overlayExists=true
[23:18:45] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:50] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=44.6%
[23:18:50] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:50] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:50] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:50] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:50] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:50] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.44621845755659784) for file=7112b780a9885606.mov, overlayExists=true
[23:18:50] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:18:58] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=45.5%
[23:18:58] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:58] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:18:58] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:18:58] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:18:58] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:18:58] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.4551428267077298) for file=7112b780a9885606.mov, overlayExists=true
[23:18:58] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:03] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=46.4%
[23:19:03] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:03] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:03] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:03] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:03] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:03] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.46406719585886175) for file=7112b780a9885606.mov, overlayExists=true
[23:19:03] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:08] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=47.3%
[23:19:08] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:08] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:08] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:08] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:08] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:08] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.47299156500999373) for file=7112b780a9885606.mov, overlayExists=true
[23:19:08] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:14] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=48.2%
[23:19:14] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:14] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:14] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:14] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:14] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.48191593416112566) for file=7112b780a9885606.mov, overlayExists=true
[23:19:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:20] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=49.1%
[23:19:20] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:20] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:20] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:20] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:20] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:20] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.49084030331225764) for file=7112b780a9885606.mov, overlayExists=true
[23:19:20] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:26] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=50.0%
[23:19:26] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:26] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:26] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:26] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:26] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:26] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.49976467246338957) for file=7112b780a9885606.mov, overlayExists=true
[23:19:26] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:33] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 50% (28.5/56.0 MB) task=6
[23:19:33] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=50.9%
[23:19:33] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:33] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:33] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:33] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:33] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:33] [VIDEO_DIRECT] Main upload progress: 50%
[23:19:33] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5086890416145216) for file=7112b780a9885606.mov, overlayExists=true
[23:19:33] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:38] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=51.8%
[23:19:38] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:38] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:38] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:38] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:38] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5176134107656535) for file=7112b780a9885606.mov, overlayExists=true
[23:19:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:43] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=52.7%
[23:19:43] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:43] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:43] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:43] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:43] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:43] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5265377799167854) for file=7112b780a9885606.mov, overlayExists=true
[23:19:43] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:48] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=53.5%
[23:19:48] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:48] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:48] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:48] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:48] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:48] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5354621490679174) for file=7112b780a9885606.mov, overlayExists=true
[23:19:48] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:19:56] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=54.4%
[23:19:56] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:56] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:19:56] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:19:56] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:19:56] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:19:56] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5443865182190494) for file=7112b780a9885606.mov, overlayExists=true
[23:19:56] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=55.3%
[23:20:01] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:01] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:01] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5533108873701813) for file=7112b780a9885606.mov, overlayExists=true
[23:20:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:06] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=56.2%
[23:20:06] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:06] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:06] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:06] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:06] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:06] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5622352565213133) for file=7112b780a9885606.mov, overlayExists=true
[23:20:06] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:08] [LIFECYCLE] App resigning active - cleared crash flag
[23:20:09] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:20:09] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:20:09] [LIFECYCLE] App entering background - cleared crash flag
[23:20:09] [CLIENT_SIG] Disconnecting
[23:20:09] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:20:09] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:20:09] In cleanupPeer
[23:20:09] In cleanupPeer
[23:20:09] [LIFECYCLE] WebRTC audio disabled
[23:20:09] [LIFECYCLE] AVAudioSession deactivated
[23:20:09] [LIFECYCLE] All connections stopped
[23:20:09] [CLIENT_SIG] WebSocket closed with code 1001
[23:20:09] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:20:09] [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/}
[23:20:09] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:20:09] [SERVER] Stopped reconnect polling
[23:20:09] Will request stop of video 0
[23:20:09] Will request stop of video 0
[23:20:09] [PIP] Removing 0 tracks from PiP for connection 0
[23:20:09] [PIP] ✅ All tracks removed for connection 0
[23:20:09] [PIP] Removing 0 tracks from PiP for connection 0
[23:20:09] [PIP] ✅ All tracks removed for connection 0
[23:20:12] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:20:12] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:20:12] [LIFECYCLE] App entering foreground - restoring connections
[23:20:12] [UPLOAD_RETRY] No pending uploads to retry
[23:20:12] [LIFECYCLE] Merged 927 reactions from local DB
[23:20:12] [LIFECYCLE] WebRTC audio re-enabled
[23:20:12] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:20:12] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:20:12] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:20:12] [VIEWER] Reconnecting after background - querying agents
[23:20:12] [UNSENT_RETRY] Checking for unsent messages...
[23:20:12] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:20:12] [PENDING_UPLOAD] Total pending upload messages: 1
[23:20:12] [UNSENT_RETRY] No unsent messages found
[23:20:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:20:12] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:20:12] [CELL_UPLOAD] → has active progress=0.5622352565213133, setting uploading
[23:20:12] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5622352565213133) for file=7112b780a9885606.mov, overlayExists=true
[23:20:12] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:12] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:20:12] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:20:12] [PUSH] handlePollEventsNotification userInfo: [:]
[23:20:12] [PUSH] No message_id in userInfo
[23:20:12] [PUSH] No operation_type in userInfo
[23:20:12] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:20:12] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:20:12] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:20:12] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:20:12] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:20:12] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:20:12] [CLIENT_SIG] WebSocket opened
[23:20:12] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:20:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:20:12] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:20:12] [CELL_UPLOAD] → has active progress=0.5622352565213133, setting uploading
[23:20:12] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5622352565213133) for file=7112b780a9885606.mov, overlayExists=true
[23:20:12] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:12] [CLIENT_SIG] Connected! clientId=T6gcJdvBT5A2SFrf
[23:20:13] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:20:13] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:20:13] [INCREMENTAL_SYNC] ✅ No new messages
[23:20:13] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:20:13] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:20:15] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=57.1%
[23:20:15] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:15] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:15] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:15] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:15] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:15] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5711596256724453) for file=7112b780a9885606.mov, overlayExists=true
[23:20:15] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:24] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=58.0%
[23:20:24] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:24] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:24] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:24] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:24] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:24] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5800839948235772) for file=7112b780a9885606.mov, overlayExists=true
[23:20:24] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:26] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:20:26] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:20:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:20:27] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:20:27] [CELL_UPLOAD] → has active progress=0.5800839948235772, setting uploading
[23:20:27] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5800839948235772) for file=7112b780a9885606.mov, overlayExists=true
[23:20:27] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:30] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:20:30] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:20:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:20:30] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:20:30] [CELL_UPLOAD] → has active progress=0.5800839948235772, setting uploading
[23:20:30] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5800839948235772) for file=7112b780a9885606.mov, overlayExists=true
[23:20:30] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:31] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=58.9%
[23:20:31] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:31] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:31] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:31] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:31] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:31] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5890083639747091) for file=7112b780a9885606.mov, overlayExists=true
[23:20:31] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:39] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=59.8%
[23:20:39] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:39] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:39] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:39] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:39] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:39] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.5979327331258412) for file=7112b780a9885606.mov, overlayExists=true
[23:20:39] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:46] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 60% (34.0/56.0 MB) task=6
[23:20:46] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=60.7%
[23:20:46] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:46] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:46] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:46] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:46] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:46] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6068571022769731) for file=7112b780a9885606.mov, overlayExists=true
[23:20:46] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:51] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=61.6%
[23:20:51] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:51] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:51] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:51] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:51] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:51] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.615781471428105) for file=7112b780a9885606.mov, overlayExists=true
[23:20:51] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:20:58] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=62.5%
[23:20:58] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:58] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:20:58] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:20:58] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:20:58] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:20:58] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.624705840579237) for file=7112b780a9885606.mov, overlayExists=true
[23:20:58] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:21:04] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=63.4%
[23:21:04] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:04] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:21:04] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:21:04] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:04] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:21:04] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.633630209730369) for file=7112b780a9885606.mov, overlayExists=true
[23:21:04] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:21:10] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=64.3%
[23:21:10] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:10] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:21:10] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:21:10] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:10] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:21:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6425545788815009) for file=7112b780a9885606.mov, overlayExists=true
[23:21:10] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:21:21] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=65.1%
[23:21:21] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:21] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:21:21] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:21:21] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:21:21] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:21:21] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:21:21] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:21:21] [LIFECYCLE] App resigning active - cleared crash flag
[23:21:22] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[23:21:22] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[23:21:22] [LIFECYCLE] App entering background - cleared crash flag
[23:21:22] [CLIENT_SIG] Disconnecting
[23:21:22] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[23:21:22] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[23:21:22] In cleanupPeer
[23:21:22] In cleanupPeer
[23:21:22] [LIFECYCLE] WebRTC audio disabled
[23:21:22] [LIFECYCLE] AVAudioSession deactivated
[23:21:22] [LIFECYCLE] All connections stopped
[23:21:22] [CLIENT_SIG] WebSocket closed with code 1001
[23:21:22] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[23:21:22] [SERVER] Stopped reconnect polling
[23:21:22] Will request stop of video 0
[23:21:22] Will request stop of video 0
[23:21:22] [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/}
[23:21:22] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[23:21:22] [PIP] Removing 0 tracks from PiP for connection 0
[23:21:22] [PIP] ✅ All tracks removed for connection 0
[23:21:22] [PIP] Removing 0 tracks from PiP for connection 0
[23:21:22] [PIP] ✅ All tracks removed for connection 0
[23:22:48] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[23:22:48] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[23:22:48] [LIFECYCLE] App entering foreground - restoring connections
[23:22:48] [UPLOAD_RETRY] No pending uploads to retry
[23:22:48] [LIFECYCLE] Merged 927 reactions from local DB
[23:22:48] [LIFECYCLE] WebRTC audio re-enabled
[23:22:48] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[23:22:48] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[23:22:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:22:48] [VIEWER] Reconnecting after background - querying agents
[23:22:48] [UNSENT_RETRY] Checking for unsent messages...
[23:22:49] [PENDING_UPLOAD] Found pending message: id=18949, file=7112b780a9885606.mov, uploadStatus=2, sendStatus=0
[23:22:49] [PENDING_UPLOAD] Total pending upload messages: 1
[23:22:49] [UNSENT_RETRY] No unsent messages found
[23:22:49] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[23:22:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:22:49] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:22:49] [CELL_UPLOAD] → has active progress=0.6514789480326328, setting uploading
[23:22:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:22:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:22:49] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[23:22:49] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[23:22:49] [PUSH] handlePollEventsNotification userInfo: [:]
[23:22:49] [PUSH] No message_id in userInfo
[23:22:49] [PUSH] No operation_type in userInfo
[23:22:49] [FAST_REFRESH] Evolution disabled - performing incremental sync
[23:22:49] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[23:22:49] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[23:22:49] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[23:22:49] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[23:22:49] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18959
[23:22:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:22:49] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:22:49] [CELL_UPLOAD] → has active progress=0.6514789480326328, setting uploading
[23:22:49] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:22:49] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:22:49] [INCREMENTAL_SYNC] ✅ No new messages
[23:22:49] [FAST_REFRESH] Incremental sync complete - 50 messages
[23:22:50] [CLIENT_SIG] WebSocket opened
[23:22:50] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[23:22:50] [CLIENT_SIG] Connected! clientId=WCkxf4SpEn0QgUZA
[23:22:50] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[23:22:50] [CLIENT_SIG]   - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)[23:22:50] [LOG] Pruned 174 entries older than 3 hours
[23:22:50] [SECURITY] Restored real session: ILUIWU
[23:22:50] [SECURITY] Restored real session: ILUIWU
[23:22:50] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:22:50] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:22:50] [AUTH] UI update complete
[23:22:50] [FAKE MODE] Exiting fake mode, restoring real session
[23:22:50] [SECURITY] Restored real session: ILUIWU
[23:22:50] [SECURITY] Saved real session: ILUIWU
[23:22:50] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:22:50] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:22:50] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:22:50] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:22:50] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:22:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:22:50] [USER] ✅ User registered successfully
[23:22:50] [PUSH] User registration after token update: success
[23:22:51] [MENU] dismissAnyExistingMenu called
[23:22:51] [MENU] dismissAnyExistingMenu completed
[23:22:51] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:22:51] [CELL_UPLOAD] → has active progress=0.6514789480326328, setting uploading
[23:22:51] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:22:51] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:22:51] [SCROLL_BTN] Showing button - 389pt from bottom > half 379pt
[23:22:51] [CELL_UPLOAD] configure: msgId=18945, file=5cb55943ea972da0.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:22:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:22:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=5cb55943ea972da0.mov, overlayExists=true
[23:22:52] [CELL_UPLOAD] configure: msgId=18941, file=09af99d4941567c9.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[23:22:52] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[23:22:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=09af99d4941567c9.jpg, overlayExists=true
[23:22:52] [MENU] dismissAnyExistingMenu called
[23:22:52] [MENU] dismissAnyExistingMenu completed
[23:22:52] [MENU] dismissAnyExistingMenu called
[23:22:52] [MENU] dismissAnyExistingMenu completed
[23:22:54] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:22:54] [CELL_UPLOAD] → has active progress=0.6514789480326328, setting uploading
[23:22:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:22:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:22:54] [MENU] dismissAnyExistingMenu called
[23:22:54] [MENU] dismissAnyExistingMenu completed
[23:22:56] [MENU] dismissAnyExistingMenu called
[23:22:56] [MENU] dismissAnyExistingMenu completed
[23:22:58] [MENU] dismissAnyExistingMenu called
[23:22:58] [MENU] dismissAnyExistingMenu completed
[23:23:00] [MENU] dismissAnyExistingMenu called
[23:23:00] [MENU] dismissAnyExistingMenu completed
[23:23:01] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:23:01] [CELL_UPLOAD] → has active progress=0.6514789480326328, setting uploading
[23:23:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.6514789480326328) for file=7112b780a9885606.mov, overlayExists=true
[23:23:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:01] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=71.4%
[23:23:01] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:01] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:23:01] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:23:01] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:01] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:23:01] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:23:01] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:02] [LOCK] Lock button tapped - locking app immediately
[23:23:02] [LOCK] Received lock app notification
[23:23:04] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:23:04] [FAST_REFRESH] Enriched 50 messages with readBy data
[23:23:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:23:05] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:23:05] [CELL_UPLOAD] → has active progress=0.7139495320905566, setting uploading
[23:23:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:23:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:05] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:23:05] [FOREGROUND] Enriched 0 messages with readBy data from server
[23:23:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:23:05] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:23:05] [CELL_UPLOAD] → has active progress=0.7139495320905566, setting uploading
[23:23:05] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7139495320905566) for file=7112b780a9885606.mov, overlayExists=true
[23:23:05] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=72.3%
[23:23:13] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:13] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:23:13] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:23:13] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:13] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:23:13] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7228739012416885) for file=7112b780a9885606.mov, overlayExists=true
[23:23:13] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:14] [COMBINED_FETCH] Loaded 7724 read receipts, 927 messages with reactions
[23:23:14] [FAKE MODE] Enriched 50 messages with readBy data
[23:23:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:23:14] [CELL_UPLOAD] configure: msgId=18949, file=7112b780a9885606.mov, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[23:23:14] [CELL_UPLOAD] → has active progress=0.7228739012416885, setting uploading
[23:23:14] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7228739012416885) for file=7112b780a9885606.mov, overlayExists=true
[23:23:14] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:41] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=73.2%
[23:23:41] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:41] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:23:41] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:23:41] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:41] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:23:41] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7317982703928204) for file=7112b780a9885606.mov, overlayExists=true
[23:23:41] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:50] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=74.1%
[23:23:50] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:50] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:23:50] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:23:50] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:50] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:23:50] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7407226395439525) for file=7112b780a9885606.mov, overlayExists=true
[23:23:50] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:23:57] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=75.0%
[23:23:57] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:57] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:23:57] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:23:57] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:23:57] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:23:57] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7496470086950844) for file=7112b780a9885606.mov, overlayExists=true
[23:23:57] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:03] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=75.9%
[23:24:03] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:03] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:03] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:03] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:03] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:03] [VIDEO_DIRECT] Main upload progress: 75%
[23:24:03] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7585713778462163) for file=7112b780a9885606.mov, overlayExists=true
[23:24:03] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:10] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=76.7%
[23:24:10] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:10] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:10] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:10] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:10] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:10] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7674957469973483) for file=7112b780a9885606.mov, overlayExists=true
[23:24:10] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:17] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=77.6%
[23:24:17] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:17] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:17] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:17] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:17] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:17] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7764201161484803) for file=7112b780a9885606.mov, overlayExists=true
[23:24:17] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:29] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=78.5%
[23:24:29] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:29] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:29] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:29] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:29] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:29] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7853444852996122) for file=7112b780a9885606.mov, overlayExists=true
[23:24:29] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:39] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=79.4%
[23:24:39] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:39] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:39] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:39] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:39] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:39] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.7942688544507441) for file=7112b780a9885606.mov, overlayExists=true
[23:24:39] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:45] [UPLOAD_PROGRESS] 7112b780a9885606.mov: 80% (45.0/56.0 MB) task=6
[23:24:45] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=80.3%
[23:24:45] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:45] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:45] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:45] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:45] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:45] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8031932236018762) for file=7112b780a9885606.mov, overlayExists=true
[23:24:45] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:24:54] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=81.2%
[23:24:54] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:54] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:24:54] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:24:54] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:24:54] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:24:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.8121175927530081) for file=7112b780a9885606.mov, overlayExists=true
[23:24:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:25:03] [UPLOAD_NOTIFY] 📣 Posting notification: file=7112b780a9885606.mov, status=uploading (2), progress=82.1%
[23:25:03] [UPLOAD_STATUS] 📬 Received notification: file=7112b780a9885606.mov, status=2 (uploading)
[23:25:03] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[39]: 2 → 2
[23:25:03] [UPLOAD_STATUS] 📝 Updated chatMessages[39]: status=2
[23:25:03] [UPLOAD_STATUS] 💾 Updating DB: file=7112b780a9885606.mov, status=2 (uploading)
[23:25:03] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=7112b780a9885606.mov
[23:25:03] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.82104196190414) for file=7112b780a9885606.mov, overlayExists=true
[23:25:03] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[23:25:03] [PIN_AUTH] Correct PIN
[23:25:03] [SECURITY] Restored real session: ILUIWU
[23:25:03] [SECURITY] Restored real session: ILUIWU
[23:25:04] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[23:25:04] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[23:25:04] [AUTH] UI update complete
[23:25:04] [FAKE MODE] Exiting fake mode, restoring real session
[23:25:04] [SECURITY] Restored real session: ILUIWU
[23:25:04] [SECURITY] Saved real session: ILUIWU
[23:25:04] [FAKE MODE] ✅ Restored real session: ILUIWU
[23:25:04] [DB_UPLOAD] 📥 Loaded media msg id=18949 with upload_status=2 (uploading), file=7112b780a9885606.mov
[23:25:04] [FAKE MODE] Loaded 50 messages (limited to page size)
[23:25:04] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18909, 18910, 18911, 18913, 18914]
[23:25:05] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[23:25:05] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[23:25:05] [USER] ✅ User registered successfully
[23:25:05] [PUSH] User registration after token update: success
[23:25:06] [LOG] Long press on chat icon detected! Triggering log upload...
[23:25:07] [SCROLL_BTN] Showing button - 305pt from bottom > half 223pt