=== 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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<1>, NSLocalizedDescription=The network connection was lost.} "LocalWebSocketTask <6E11C228-B24A-4F7A-AC00-58DDE0A5B60C>.<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <6E11C228-B24A-4F7A-AC00-58DDE0A5B60C>.<1>} "LocalWebSocketTask .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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 .<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask .<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] [10:40:40] [PUSH] Notification tapped - session_id: ILUIWU [10:40:40] [PUSH] Max message_id before tap: 18790 [10:40:40] [PUSH] Stored pending session: ILUIWU [10:40:40] [PUSH_EMBED] 📩 Received embedded message: id=18791, type=0, sender=Esra [10:40:40] [PUSH_EMBED] ✅ Saved message 18791 to local DB (sync) [10:40:40] [PUSH_EMBED] Created new cache with embedded message 18791 [10:40:40] [PUSH_EMBED] Fetching evolution data for message 18791 in background [10:40:40] [PUSH_EMBED] ✅ Fully processed message 18791 [10:40:40] [PUSH] Embedded message handled instantly on tap [10:40:40] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [10:40:40] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:40:40] [LIFECYCLE] App entering foreground - restoring connections [10:40:40] [PUSH] Fetching server messages since_id=18790 to catch coalesced notifications on tap [10:40:40] [LIFECYCLE] Away > 2 minutes (2713s) - will scroll to bottom [10:40:40] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18790 to catch coalesced notifications [10:40:40] [PUSH_PRELOAD] Fetching messages for instant display cache [10:40:40] [UPLOAD_RETRY] No pending uploads to retry [10:40:40] [LIFECYCLE] Merged 910 reactions from local DB [10:40:40] [LIFECYCLE] WebRTC audio re-enabled [10:40:40] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [10:40:40] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [10:40:40] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:40:40] [VIEWER] Reconnecting after background - querying agents [10:40:40] [UNSENT_RETRY] Checking for unsent messages... [10:40:40] [PENDING_UPLOAD] Total pending upload messages: 0 [10:40:40] [UNSENT_RETRY] No unsent messages found [10:40:40] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:40:40] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:40:40] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:40:40] [PUSH_UI] Inserted message 18791 into UI (now 53 messages) [10:40:40] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [10:40:40] [PUSH_EMBED] Got evolution data for message 18791, saving to local DB [10:40:40] [PUSH_EMBED] Saved evolution data for message 18791 [10:40:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18791, 18790, 18789, 18788, 18787] [10:40:40] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:40] [CELL_UPLOAD] → not my message, setting complete [10:40:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:40] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [10:40:40] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [10:40:40] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:40:40] [PUSH] Server fetch on tap completed (success=true) [10:40:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 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] [10:40:40] [PUSH_EMBED_VC] Message 18791 already in memory - skipping [10:40:40] [PUSH] ⚡ Embedded message handled directly in ViewController [10:40:40] [PUSH] Parsed message_id: 18791 [10:40:40] [PUSH] Parsed operation_type: 0 [10:40:40] [PUSH] Taking direct action: opType=0, messageId=18791 [10:40:40] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18791 [10:40:40] [PUSH] ⚡ Message 18791 already in memory - skipping duplicate notification entirely [10:40:40] [PUSH] Silent push received [10:40:40] [PUSH_EMBED] 📩 Received embedded message: id=18791, type=0, sender=Esra [10:40:40] [PUSH_EMBED] ✅ Saved message 18791 to local DB (sync) [10:40:40] [PUSH_EMBED] Created new cache with embedded message 18791 [10:40:40] [PUSH_EMBED] Fetching evolution data for message 18791 in background [10:40:40] [PUSH_EMBED] ✅ Fully processed message 18791 [10:40:40] [PUSH] Embedded message handled instantly from silent push [10:40:40] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:40:40] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:40:40] [PUSH_UI] Message 18791 already in memory - skipping insert [10:40:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-23 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] [10:40:40] [PUSH_EMBED_VC] Message 18791 already in memory - skipping [10:40:40] [PUSH] ⚡ Embedded message handled directly in ViewController [10:40:40] [PUSH] Parsed message_id: 18791 [10:40:40] [PUSH] Parsed operation_type: 0 [10:40:40] [PUSH] Taking direct action: opType=0, messageId=18791 [10:40:40] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18791 [10:40:40] [PUSH] ⚡ Message 18791 already in memory - skipping duplicate notification entirely [10:40:40] [PUSH_EMBED] Got evolution data for message 18791, saving to local DB [10:40:40] [PUSH_EMBED] Saved evolution data for message 18791 [10:40:40] [CLIENT_SIG] WebSocket opened [10:40:40] [CLIENT_SIG] HELLO sent as client for session ILUIWU [10:40:40] [CLIENT_SIG] Connected! clientId=yLSZOiza7Qgbo4sl [10:40:40] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [10:40:40] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:40:41] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [10:40:41] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [10:40:41] [PUSH] handlePollEventsNotification userInfo: [:] [10:40:41] [PUSH] No message_id in userInfo [10:40:41] [PUSH] No operation_type in userInfo [10:40:41] [FAST_REFRESH] Evolution disabled - performing incremental sync [10:40:41] [FAST_REFRESH] Already have 53 messages - skipping local DB load [10:40:41] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [10:40:41] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [10:40:41] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53 [10:40:41] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18791 [10:40:41] [INCREMENTAL_SYNC] ✅ No new messages [10:40:41] [FAST_REFRESH] Incremental sync complete - 53 messages [10:40:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18791, 18790, 18789, 18788, 18787] [10:40:41] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:41] [CELL_UPLOAD] → not my message, setting complete [10:40:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:41] [COMBINED_FETCH] Loaded 7557 read receipts, 915 messages with reactions [10:40:41] [FOREGROUND] Enriched 2 messages with readBy data from server [10:40:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18791, 18790, 18789, 18788, 18787] [10:40:41] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:41] [CELL_UPLOAD] → not my message, setting complete [10:40:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:41] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18790 → 18791 [10:40:41] [COMBINED_FETCH] Loaded 7557 read receipts, 915 messages with reactions [10:40:41] [FAST_REFRESH] Enriched 53 messages with readBy data [10:40:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18791, 18790, 18789, 18788, 18787] [10:40:41] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:41] [CELL_UPLOAD] → not my message, setting complete [10:40:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true[10:40:42] [LOG] Pruned 305 entries older than 3 hours [10:40:42] [SECURITY] Restored real session: ILUIWU [10:40:42] [SECURITY] Restored real session: ILUIWU [10:40:42] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true [10:40:42] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [10:40:42] [AUTH] UI update complete [10:40:42] [FAKE MODE] Exiting fake mode, restoring real session [10:40:42] [SECURITY] Restored real session: ILUIWU [10:40:42] [SECURITY] Saved real session: ILUIWU [10:40:42] [FAKE MODE] ✅ Restored real session: ILUIWU [10:40:42] [FAKE MODE] Loaded 50 messages (limited to page size) [10:40:42] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [10:40:42] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [10:40:42] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:42] [CELL_UPLOAD] → not my message, setting complete [10:40:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18742, 18743, 18744, 18745, 18746] [10:40:43] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:43] [CELL_UPLOAD] → not my message, setting complete [10:40:43] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:43] [USER] ✅ User registered successfully [10:40:43] [PUSH] User registration after token update: success [10:40:43] [COMBINED_FETCH] Loaded 7557 read receipts, 915 messages with reactions [10:40:43] [FAKE MODE] Enriched 50 messages with readBy data [10:40:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18742, 18743, 18744, 18745, 18746] [10:40:43] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:43] [CELL_UPLOAD] → not my message, setting complete [10:40:43] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:44] [PUSH] Silent push received [10:40:44] [PUSH_EMBED] No embedded message_data in notification [10:40:44] [PUSH] No embedded data, pre-loading messages from server [10:40:44] [PUSH_PRELOAD] Fetching messages for instant display cache [10:40:44] [MENU] dismissAnyExistingMenu called [10:40:44] [MENU] dismissAnyExistingMenu completed [10:40:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:40:44] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [10:40:44] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:40:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18791, AnyHashable("aps"): { "content-available" = 1; }] [10:40:44] [PUSH] Parsed message_id: 18791 [10:40:44] [PUSH] Parsed operation_type: 3 [10:40:44] [PUSH] Taking direct action: opType=3, messageId=18791 [10:40:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18791 [10:40:44] [SCROLL_BTN] Showing button - 381pt from bottom > half 379pt [10:40:45] [CLIENT_SIG] Event received: type=3 messageId=18791 [10:40:45] [WS_EVENT] Received event: type=3, messageId=18791 [10:40:45] [WS_EVENT] Read receipt for message 18791 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:40:45] [CELL_UPLOAD] configure: msgId=18774, file=04b759bdc230eb2c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:45] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete [10:40:45] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=04b759bdc230eb2c.jpg, overlayExists=true [10:40:45] [MENU] dismissAnyExistingMenu called [10:40:45] [MENU] dismissAnyExistingMenu completed [10:40:45] [CELL_UPLOAD] configure: msgId=18772, file=c50bfdf58c1dbca1.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:45] [CELL_UPLOAD] → not my message, setting complete [10:40:45] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c50bfdf58c1dbca1.jpg, overlayExists=true [10:40:46] [MENU] dismissAnyExistingMenu called [10:40:46] [MENU] dismissAnyExistingMenu completed [10:40:46] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:46] [CELL_UPLOAD] → not my message, setting complete [10:40:46] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:58] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:40:58] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [10:40:58] [SEND_MESSAGE] ✅ Added optimistic message id=-12 to arrays, newMsgCount=51 [10:40:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-12, 18791, 18790, 18789, 18788] [10:40:58] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:40:58] [CELL_UPLOAD] → not my message, setting complete [10:40:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:40:58] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:40:58] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:41:00] [CLIENT_SIG] Event received: type=0 messageId=18792 [10:41:00] [WS_EVENT] Received event: type=0, messageId=18792 [10:41:00] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18792,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:40:58"} [10:41:00] [WS_EVENT] 📨 New message notification (msgId=18792) - triggering incremental refresh, currentMsgCount=51 [10:41:00] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51 [10:41:00] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 09:40:58, "file_name": , "message_id": 18792, "ok": 1, "session_id": ILUIWU, "message_type": 0] [10:41:00] [DB_UPGRADE] Upgrading message ID: -12 → 18792, preserveOriginalDate=false [10:41:00] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18791 [10:41:00] [DB_UPGRADE] ✅ Upgraded -12 → 18792 with send_status=0, 1 row(s) affected [10:41:00] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -12 → 18792 [10:41:00] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -12 → 18792 [10:41:00] ReloadData 9 [10:41:00] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:41:00] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:00] [CELL_UPLOAD] → not my message, setting complete [10:41:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:00] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:41:00] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51 [10:41:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18742, 18743, 18744, 18745, 18746] [10:41:00] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:00] [CELL_UPLOAD] → not my message, setting complete [10:41:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:25] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:41:25] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false [10:41:25] [SEND_MESSAGE] ✅ Added optimistic message id=-13 to arrays, newMsgCount=52 [10:41:25] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-13, 18792, 18791, 18790, 18789] [10:41:25] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:25] [CELL_UPLOAD] → not my message, setting complete [10:41:25] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:25] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:41:25] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:41:26] [LIFECYCLE] App resigning active - cleared crash flag [10:41:26] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [10:41:26] [SECURITY] Saved background timestamp [10:41:26] [LIFECYCLE] App entering background - cleared crash flag [10:41:26] [CLIENT_SIG] Disconnecting [10:41:26] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [10:41:26] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [10:41:26] In cleanupPeer [10:41:26] In cleanupPeer [10:41:26] [LIFECYCLE] WebRTC audio disabled [10:41:26] [LIFECYCLE] AVAudioSession deactivated [10:41:26] [LIFECYCLE] All connections stopped [10:41:27] [CLIENT_SIG] WebSocket closed with code 1001 [10:41:27] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [10:41:27] [SERVER] Stopped reconnect polling [10:41:27] Will request stop of video 0 [10:41:27] Will request stop of video 0 [10:41:27] [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/} [10:41:27] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [10:41:27] [PIP] Removing 0 tracks from PiP for connection 0 [10:41:27] [PIP] ✅ All tracks removed for connection 0 [10:41:27] [PIP] Removing 0 tracks from PiP for connection 0 [10:41:27] [PIP] ✅ All tracks removed for connection 0 [10:41:29] [SECURITY] Timeout check: elapsed=2.452421188354492s, timeout=300.0s [10:41:29] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [10:41:29] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:41:29] [LIFECYCLE] App entering foreground - restoring connections [10:41:29] [CHAT] send error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={_kCFStreamErrorCodeKey=53, NSUnderlyingError=0x128972fa0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey={length = 16, capacity = 16, bytes = 0x100201bb54e34b220000000000000000}, _kCFStreamErrorCodeKey=53, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <63C09C9E-3ABC-4476-8348-1E3B8EEE98A3>.<235>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "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} [10:41:29] [UPLOAD_RETRY] No pending uploads to retry [10:41:29] [LIFECYCLE] Merged 910 reactions from local DB [10:41:29] [LIFECYCLE] WebRTC audio re-enabled [10:41:29] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [10:41:29] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [10:41:29] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:41:29] [VIEWER] Reconnecting after background - querying agents [10:41:29] [UNSENT_RETRY] Checking for unsent messages... [10:41:29] [PENDING_UPLOAD] Found pending message: id=-13, file=, uploadStatus=0, sendStatus=1 [10:41:29] [PENDING_UPLOAD] Total pending upload messages: 1 [10:41:29] [UNSENT_RETRY] 🔄 Found 1 unsent messages from me to retry [10:41:29] [UNSENT_RETRY] 🔄 Retrying message id=-13, type=0, file= [10:41:29] [SEND_STATUS] 💾 Updating DB: messageId=-13, status=1 (sending) [10:41:29] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-13 [10:41:29] [UNSENT_RETRY] 🔑 Including client_message_id=63B88DC5-A695-4363-98E2-AC14462CE486 for idempotent retry [10:41:29] [UNSENT_RETRY] 📤 Sending message id=-13 to server [10:41:29] [CHAT] Network error detected - queuing for retry [10:41:29] [SEND_STATUS] 💾 Updating DB: messageId=-13, status=3 (pending_retry) [10:41:29] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-13 [10:41:29] [SEND_STATUS] ⏳ Message -13 marked as PENDING RETRY (waiting for network) [10:41:29] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:29] [CELL_UPLOAD] → not my message, setting complete [10:41:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:29] [UNSENT_RETRY] 📥 receive_message.php HTTP 200: {"ok":true,"message_id":18793,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:41:25","idempotent":true} [10:41:29] [UNSENT_RETRY] ✅ Message synced! Old id=-13 → new server id=18793 [10:41:29] [DB_UPGRADE] Upgrading message ID: -13 → 18793, preserveOriginalDate=true [10:41:29] [DB_UPGRADE] ✅ Upgraded -13 → 18793 with send_status=0, 1 row(s) affected [10:41:29] [UNSENT_RETRY] ✅ Updated chatMessages[0].id: -13 → 18793 [10:41:29] [UNSENT_RETRY] ✅ Updated allMessagesWithReadBy[0].id: -13 → 18793 [10:41:29] ReloadData unsent_retry [10:41:29] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:29] [CELL_UPLOAD] → not my message, setting complete [10:41:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18793, 18792, 18791, 18790, 18789] [10:41:29] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:29] [CELL_UPLOAD] → not my message, setting complete [10:41:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:29] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [10:41:29] [SECURITY] Within timeout - cleared background flag [10:41:29] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [10:41:29] [PUSH] handlePollEventsNotification userInfo: [:] [10:41:29] [PUSH] No message_id in userInfo [10:41:29] [PUSH] No operation_type in userInfo [10:41:29] [FAST_REFRESH] Evolution disabled - performing incremental sync [10:41:29] [FAST_REFRESH] Already have 52 messages - skipping local DB load [10:41:29] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [10:41:29] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [10:41:29] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [10:41:29] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18793 [10:41:29] [CLIENT_SIG] WebSocket opened [10:41:29] [CLIENT_SIG] HELLO sent as client for session ILUIWU [10:41:29] [CLIENT_SIG] Connected! clientId=W9Yqd7y6K2IP5bDB [10:41:29] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [10:41:29] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:41:29] [INCREMENTAL_SYNC] ✅ No new messages [10:41:29] [FAST_REFRESH] Incremental sync complete - 52 messages [10:41:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18793, 18792, 18791, 18790, 18789] [10:41:29] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:29] [CELL_UPLOAD] → not my message, setting complete [10:41:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:30] [LOCK] Lock button tapped - locking app immediately [10:41:30] [LOCK] Received lock app notification [10:41:30] [COMBINED_FETCH] Loaded 7559 read receipts, 915 messages with reactions [10:41:30] [FOREGROUND] Enriched 0 messages with readBy data from server [10:41:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18793, 18792, 18791, 18790, 18789] [10:41:30] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:30] [CELL_UPLOAD] → not my message, setting complete [10:41:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:30] [COMBINED_FETCH] Loaded 7559 read receipts, 915 messages with reactions [10:41:30] [FAST_REFRESH] Enriched 52 messages with readBy data [10:41:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18793, 18792, 18791, 18790, 18789] [10:41:30] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:41:30] [CELL_UPLOAD] → not my message, setting complete [10:41:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:41:30] [LIFECYCLE] App resigning active - cleared crash flag [10:41:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:41:31] [SECURITY] sceneDidEnterBackground - isAuthenticated=false [10:41:31] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false [10:41:31] [LIFECYCLE] App entering background - cleared crash flag [10:41:31] [CLIENT_SIG] Disconnecting [10:41:31] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [10:41:31] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [10:41:31] In cleanupPeer [10:41:31] In cleanupPeer [10:41:31] [LIFECYCLE] WebRTC audio disabled [10:41:31] [LIFECYCLE] AVAudioSession deactivated [10:41:31] [LIFECYCLE] All connections stopped [10:41:31] [CLIENT_SIG] WebSocket closed with code 1001 [10:41:31] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [10:41:31] [SERVER] Stopped reconnect polling [10:41:31] Will request stop of video 0 [10:41:31] Will request stop of video 0 [10:41:31] [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/} [10:41:31] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [10:41:31] [PIP] Removing 0 tracks from PiP for connection 0 [10:41:31] [PIP] ✅ All tracks removed for connection 0 [10:41:31] [PIP] Removing 0 tracks from PiP for connection 0 [10:41:31] [PIP] ✅ All tracks removed for connection 0 [10:50:35] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:50:35] [PUSH] Notification tapped - session_id: ILUIWU [10:50:35] [PUSH] Max message_id before tap: 18793 [10:50:35] [PUSH] Stored pending session: ILUIWU [10:50:35] [PUSH_EMBED] 📩 Received embedded message: id=18794, type=0, sender=Esra [10:50:35] [PUSH_EMBED] ✅ Saved message 18794 to local DB (sync) [10:50:35] [PUSH_EMBED] Created new cache with embedded message 18794 [10:50:35] [PUSH_EMBED] Fetching evolution data for message 18794 in background [10:50:35] [PUSH_EMBED] ✅ Fully processed message 18794 [10:50:35] [PUSH] Embedded message handled instantly on tap [10:50:35] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [10:50:35] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:50:35] [PUSH] Fetching server messages since_id=18793 to catch coalesced notifications on tap [10:50:35] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18793 to catch coalesced notifications [10:50:35] [PUSH_PRELOAD] Fetching messages for instant display cache [10:50:35] [LIFECYCLE] App entering foreground - restoring connections [10:50:35] [LIFECYCLE] Away > 2 minutes (543s) - will scroll to bottom [10:50:35] [UPLOAD_RETRY] No pending uploads to retry [10:50:35] [LIFECYCLE] Merged 910 reactions from local DB [10:50:35] [LIFECYCLE] WebRTC audio re-enabled [10:50:35] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [10:50:35] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [10:50:35] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:50:35] [VIEWER] Reconnecting after background - querying agents [10:50:35] [FOREGROUND] 📶 Network available - retrying 1 pending messages [10:50:35] [RETRY] 🔄 Retrying 1 pending messages... [10:50:35] [RETRY] ⚠️ Message -13 not found in memory, removing from pending [10:50:35] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:35] [CELL_UPLOAD] → not my message, setting complete [10:50:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:35] [UNSENT_RETRY] Checking for unsent messages... [10:50:35] [PENDING_UPLOAD] Total pending upload messages: 0 [10:50:35] [UNSENT_RETRY] No unsent messages found [10:50:35] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:50:35] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:50:35] [PUSH_UI] Inserted message 18794 into UI (now 53 messages) [10:50:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [10:50:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18794, 18793, 18792, 18791, 18790] [10:50:35] [PUSH_EMBED] Got evolution data for message 18794, saving to local DB [10:50:35] [PUSH_EMBED] Saved evolution data for message 18794 [10:50:35] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:35] [CELL_UPLOAD] → not my message, setting complete [10:50:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:35] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18793 → 18794 [10:50:35] [CLIENT_SIG] WebSocket opened [10:50:35] [CLIENT_SIG] HELLO sent as client for session ILUIWU [10:50:35] [CLIENT_SIG] Connected! clientId=32FfF27pbGiZAiBG [10:50:35] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [10:50:35] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:50:35] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:50:35] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [10:50:35] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [10:50:35] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:50:35] [PUSH] Server fetch on tap completed (success=true) [10:50:35] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { 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; }] [10:50:35] [PUSH_EMBED_VC] Message 18794 already in memory - skipping [10:50:35] [PUSH] ⚡ Embedded message handled directly in ViewController [10:50:35] [PUSH] Parsed message_id: 18794 [10:50:35] [PUSH] Parsed operation_type: 0 [10:50:35] [PUSH] Taking direct action: opType=0, messageId=18794 [10:50:35] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18794 [10:50:35] [PUSH] ⚡ Message 18794 already in memory - skipping duplicate notification entirely [10:50:35] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [10:50:35] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [10:50:35] [PUSH] handlePollEventsNotification userInfo: [:] [10:50:35] [PUSH] No message_id in userInfo [10:50:35] [PUSH] No operation_type in userInfo [10:50:35] [FAST_REFRESH] Evolution disabled - performing incremental sync [10:50:35] [FAST_REFRESH] Already have 53 messages - skipping local DB load [10:50:35] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [10:50:35] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [10:50:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53 [10:50:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18794 [10:50:35] [INCREMENTAL_SYNC] ✅ No new messages [10:50:35] [FAST_REFRESH] Incremental sync complete - 53 messages [10:50:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18794, 18793, 18792, 18791, 18790] [10:50:35] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:35] [CELL_UPLOAD] → not my message, setting complete [10:50:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:35] [COMBINED_FETCH] Loaded 7560 read receipts, 915 messages with reactions [10:50:35] [FOREGROUND] Enriched 2 messages with readBy data from server [10:50:36] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18794, 18793, 18792, 18791, 18790] [10:50:36] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:36] [CELL_UPLOAD] → not my message, setting complete [10:50:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:36] [COMBINED_FETCH] Loaded 7560 read receipts, 915 messages with reactions [10:50:36] [FAST_REFRESH] Enriched 53 messages with readBy data [10:50:36] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18794, 18793, 18792, 18791, 18790] [10:50:36] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:36] [CELL_UPLOAD] → not my message, setting complete [10:50:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true[10:50:36] [LOG] Pruned 353 entries older than 3 hours [10:50:36] [SECURITY] Restored real session: ILUIWU [10:50:36] [SECURITY] Restored real session: ILUIWU [10:50:36] [PUSH] Silent push received [10:50:36] [PUSH_EMBED] No embedded message_data in notification [10:50:36] [PUSH] No embedded data, pre-loading messages from server [10:50:36] [PUSH_PRELOAD] Fetching messages for instant display cache [10:50:36] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true [10:50:36] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [10:50:36] [AUTH] UI update complete [10:50:36] [FAKE MODE] Exiting fake mode, restoring real session [10:50:36] [SECURITY] Restored real session: ILUIWU [10:50:36] [SECURITY] Saved real session: ILUIWU [10:50:36] [FAKE MODE] ✅ Restored real session: ILUIWU [10:50:36] [FAKE MODE] Loaded 50 messages (limited to page size) [10:50:36] [PUSH] Silent push received [10:50:36] [PUSH_EMBED] No embedded message_data in notification [10:50:36] [PUSH] No embedded data, pre-loading messages from server [10:50:36] [PUSH_PRELOAD] Fetching messages for instant display cache [10:50:37] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:37] [CELL_UPLOAD] → not my message, setting complete [10:50:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:37] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [10:50:37] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [10:50:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:50:37] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:37] [CELL_UPLOAD] → not my message, setting complete [10:50:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:37] [USER] ✅ User registered successfully [10:50:37] [PUSH] User registration after token update: success [10:50:37] [CLIENT_SIG] Event received: type=3 messageId=18794 [10:50:37] [WS_EVENT] Received event: type=3, messageId=18794 [10:50:37] [WS_EVENT] Read receipt for message 18794 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:50:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:50:37] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [10:50:37] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:50:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18794, AnyHashable("operation_type"): 3] [10:50:37] [PUSH] Parsed message_id: 18794 [10:50:37] [PUSH] Parsed operation_type: 3 [10:50:37] [PUSH] Taking direct action: opType=3, messageId=18794 [10:50:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18794 [10:50:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:50:37] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [10:50:37] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:50:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18794] [10:50:37] [PUSH] Parsed message_id: 18794 [10:50:37] [PUSH] Parsed operation_type: 3 [10:50:37] [PUSH] Taking direct action: opType=3, messageId=18794 [10:50:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18794 [10:50:37] [COMBINED_FETCH] Loaded 7560 read receipts, 915 messages with reactions [10:50:37] [FAKE MODE] Enriched 50 messages with readBy data [10:50:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:50:37] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:37] [CELL_UPLOAD] → not my message, setting complete [10:50:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:55] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:50:59] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:50:59] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [10:50:59] [SEND_MESSAGE] ✅ Added optimistic message id=-14 to arrays, newMsgCount=51 [10:50:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-14, 18794, 18793, 18792, 18791] [10:50:59] [CELL_UPLOAD] configure: msgId=18788, file=e3001af1e96aeb72.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [10:50:59] [CELL_UPLOAD] → not my message, setting complete [10:50:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=e3001af1e96aeb72.jpg, overlayExists=true [10:50:59] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:50:59] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:51:00] [LIFECYCLE] App resigning active - cleared crash flag [10:51:00] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [10:51:00] [SECURITY] Saved background timestamp [10:51:00] [LIFECYCLE] App entering background - cleared crash flag [10:51:00] [CLIENT_SIG] Disconnecting [10:51:00] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [10:51:00] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [10:51:00] In cleanupPeer [10:51:00] In cleanupPeer [10:51:00] [LIFECYCLE] WebRTC audio disabled [10:51:00] [LIFECYCLE] AVAudioSession deactivated [10:51:00] [LIFECYCLE] All connections stopped [10:51:01] [CLIENT_SIG] WebSocket closed with code 1001 [10:51:01] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [10:51:01] [SERVER] Stopped reconnect polling [10:51:01] Will request stop of video 0 [10:51:01] Will request stop of video 0 [10:51:01] [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/} [10:51:01] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [10:51:01] [PIP] Removing 0 tracks from PiP for connection 0 [10:51:01] [PIP] ✅ All tracks removed for connection 0 [10:51:01] [PIP] Removing 0 tracks from PiP for connection 0 [10:51:01] [PIP] ✅ All tracks removed for connection 0 [10:51:01] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18795,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:50:59"} [10:51:01] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 18795, "file_name": , "session_id": ILUIWU, "datesent_utc": 2026-01-23 09:50:59, "message_type": 0] [10:51:01] [DB_UPGRADE] Upgrading message ID: -14 → 18795, preserveOriginalDate=false [10:51:01] [DB_UPGRADE] ✅ Upgraded -14 → 18795 with send_status=0, 1 row(s) affected [10:51:01] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -14 → 18795 [10:51:01] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -14 → 18795 [10:51:01] ReloadData 9 [10:51:21] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:51:21] [PUSH] Notification tapped - session_id: ILUIWU [10:51:21] [PUSH] Max message_id before tap: 18795 [10:51:21] [PUSH] Stored pending session: ILUIWU [10:51:21] [PUSH_EMBED] 📩 Received embedded message: id=18796, type=0, sender=Esra [10:51:21] [PUSH_EMBED] ✅ Saved message 18796 to local DB (sync) [10:51:21] [PUSH_EMBED] Inserted message 18796 into existing cache (now 51 messages) [10:51:21] [PUSH_EMBED] Fetching evolution data for message 18796 in background [10:51:21] [PUSH_EMBED] ✅ Fully processed message 18796 [10:51:21] [PUSH] Embedded message handled instantly on tap [10:51:21] [PUSH] Fetching server messages since_id=18795 to catch coalesced notifications on tap [10:51:21] [SECURITY] Timeout check: elapsed=20.899226903915405s, timeout=300.0s [10:51:21] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18795 to catch coalesced notifications [10:51:21] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [10:51:21] [PUSH_PRELOAD] Fetching messages for instant display cache [10:51:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:51:21] [LIFECYCLE] App entering foreground - restoring connections [10:51:21] [UPLOAD_RETRY] No pending uploads to retry [10:51:21] [LIFECYCLE] Merged 910 reactions from local DB [10:51:21] [LIFECYCLE] WebRTC audio re-enabled [10:51:21] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [10:51:21] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [10:51:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:51:21] [VIEWER] Reconnecting after background - querying agents [10:51:21] [UNSENT_RETRY] Checking for unsent messages... [10:51:21] [PENDING_UPLOAD] Total pending upload messages: 0 [10:51:21] [UNSENT_RETRY] No unsent messages found [10:51:21] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:51:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:51:21] [PUSH_UI] Inserted message 18796 into UI (now 52 messages) [10:51:21] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [10:51:21] [PUSH_EMBED] Got evolution data for message 18796, saving to local DB [10:51:21] [PUSH_EMBED] Saved evolution data for message 18796 [10:51:21] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [10:51:21] [PRELOAD_CACHE] Preserving 50 push-inserted messages: [18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774, 18773, 18772, 18771, 18770, 18769, 18768, 18767, 18766, 18765, 18764, 18763, 18762, 18761, 18760, 18759, 18758, 18757, 18756, 18755, 18754, 18753, 18752, 18751, 18750, 18749, 18748, 18747, 18746, 18745] [10:51:21] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 50 from push) [10:51:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:51:21] [PUSH] Server fetch on tap completed (success=true) [10:51:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 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] [10:51:21] [PUSH_EMBED_VC] Message 18796 already in memory - skipping [10:51:21] [PUSH] ⚡ Embedded message handled directly in ViewController [10:51:21] [PUSH] Parsed message_id: 18796 [10:51:21] [PUSH] Parsed operation_type: 0 [10:51:21] [PUSH] Taking direct action: opType=0, messageId=18796 [10:51:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18796 [10:51:21] [PUSH] ⚡ Message 18796 already in memory - skipping duplicate notification entirely [10:51:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18796, 18795, 18794, 18793, 18792] [10:51:22] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18795 → 18796 [10:51:22] [CLIENT_SIG] WebSocket opened [10:51:22] [CLIENT_SIG] HELLO sent as client for session ILUIWU [10:51:22] [CLIENT_SIG] Connected! clientId=H6rHrKGlB0KnV0Wh [10:51:22] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [10:51:22] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:51:22] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:51:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [10:51:22] [SECURITY] Within timeout - cleared background flag [10:51:22] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [10:51:22] [PUSH] handlePollEventsNotification userInfo: [:] [10:51:22] [PUSH] No message_id in userInfo [10:51:22] [PUSH] No operation_type in userInfo [10:51:22] [FAST_REFRESH] Evolution disabled - performing incremental sync [10:51:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load [10:51:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [10:51:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [10:51:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [10:51:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18796 [10:51:22] [INCREMENTAL_SYNC] ✅ No new messages [10:51:22] [FAST_REFRESH] Incremental sync complete - 52 messages [10:51:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18796, 18795, 18794, 18793, 18792] [10:51:22] [COMBINED_FETCH] Loaded 7562 read receipts, 915 messages with reactions [10:51:22] [FOREGROUND] Enriched 2 messages with readBy data from server [10:51:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18796, 18795, 18794, 18793, 18792] [10:51:23] [MENU] dismissAnyExistingMenu called [10:51:23] [MENU] dismissAnyExistingMenu completed [10:51:23] [COMBINED_FETCH] Loaded 7562 read receipts, 915 messages with reactions [10:51:23] [FAST_REFRESH] Enriched 52 messages with readBy data [10:51:23] [PUSH] Silent push received [10:51:23] [PUSH_EMBED] 📩 Received embedded message: id=18796, type=0, sender=Esra [10:51:23] [PUSH_EMBED] ✅ Saved message 18796 to local DB (sync) [10:51:23] [PUSH_EMBED] Fetching evolution data for message 18796 in background [10:51:23] [PUSH_EMBED] ✅ Fully processed message 18796 [10:51:23] [PUSH] Embedded message handled instantly from silent push [10:51:23] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:51:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:51:23] [PUSH_UI] Message 18796 already in memory - skipping insert [10:51:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18796, AnyHashable("session_id"): ILUIWU, 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("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [10:51:23] [PUSH_EMBED_VC] Message 18796 already in memory - skipping [10:51:23] [PUSH] ⚡ Embedded message handled directly in ViewController [10:51:23] [PUSH] Parsed message_id: 18796 [10:51:23] [PUSH] Parsed operation_type: 0 [10:51:23] [PUSH] Taking direct action: opType=0, messageId=18796 [10:51:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18796 [10:51:23] [PUSH] ⚡ Message 18796 already in memory - skipping duplicate notification entirely [10:51:23] [PUSH_EMBED] Got evolution data for message 18796, saving to local DB [10:51:23] [PUSH_EMBED] Saved evolution data for message 18796 [10:51:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18796, 18795, 18794, 18793, 18792] [10:51:24] [PUSH] Silent push received [10:51:24] [PUSH_EMBED] No embedded message_data in notification [10:51:24] [PUSH] No embedded data, pre-loading messages from server [10:51:24] [PUSH_PRELOAD] Fetching messages for instant display cache [10:51:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:51:24] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18746, 18745] [10:51:24] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push) [10:51:24] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:51:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18796, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [10:51:24] [PUSH] Parsed message_id: 18796 [10:51:24] [PUSH] Parsed operation_type: 3 [10:51:24] [PUSH] Taking direct action: opType=3, messageId=18796 [10:51:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18796 [10:51:24] [CLIENT_SIG] Event received: type=3 messageId=18796 [10:51:24] [WS_EVENT] Received event: type=3, messageId=18796 [10:51:24] [WS_EVENT] Read receipt for message 18796 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:51:27] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:51:27] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=52, isReloading=false [10:51:27] [SEND_MESSAGE] ✅ Added optimistic message id=-15 to arrays, newMsgCount=53 [10:51:27] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-15, 18796, 18795, 18794, 18793] [10:51:27] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:51:27] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:51:28] [CLIENT_SIG] Event received: type=0 messageId=18797 [10:51:28] [WS_EVENT] Received event: type=0, messageId=18797 [10:51:28] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18797,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:51:27"} [10:51:28] [WS_EVENT] 📨 New message notification (msgId=18797) - triggering incremental refresh, currentMsgCount=53 [10:51:28] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53 [10:51:28] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 09:51:27, "file_name": , "message_id": 18797, "ok": 1, "session_id": ILUIWU, "message_type": 0] [10:51:28] [DB_UPGRADE] Upgrading message ID: -15 → 18797, preserveOriginalDate=false [10:51:28] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18796 [10:51:28] [DB_UPGRADE] ✅ Upgraded -15 → 18797 with send_status=0, 1 row(s) affected [10:51:28] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -15 → 18797 [10:51:28] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -15 → 18797 [10:51:28] ReloadData 9 [10:51:28] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:51:28] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:51:28] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53 [10:51:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:51:42] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:51:44] [CLIENT_SIG] Event received: type=0 messageId=18798 [10:51:44] [WS_EVENT] Received event: type=0, messageId=18798 [10:51:44] [WS_EVENT] 📨 New message notification (msgId=18798) - triggering incremental refresh, currentMsgCount=53 [10:51:44] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53 [10:51:44] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18797 [10:51:44] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 09:51:44 +0000 - type: unknown, operation_type: 0, message_id: 18798, session_id: ILUIWU, state: 0 [10:51:44] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 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] [10:51:44] [PUSH] App active - suppressing notification UI, posting internal event [10:51:44] [PUSH_EMBED] 📩 Received embedded message: id=18798, type=0, sender=Esra [10:51:44] [PUSH_EMBED] ✅ Saved message 18798 to local DB (sync) [10:51:44] [PUSH_EMBED] Inserted message 18798 into existing cache (now 53 messages) [10:51:44] [PUSH_EMBED] Fetching evolution data for message 18798 in background [10:51:44] [PUSH_EMBED] ✅ Fully processed message 18798 [10:51:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_id"): 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] [10:51:44] [PUSH_EMBED_VC] Processing embedded message: id=18798, type=0, sender=Esra, prevId=18797 [10:51:44] [PUSH_EMBED_VC] Inserted message 18798 into allMessagesWithReadBy (now 54 messages) [10:51:44] [PUSH_EMBED_VC] ✅ Previous message 18797 exists in memory [10:51:44] [PUSH] ⚡ Embedded message handled directly in ViewController [10:51:44] [PUSH] Parsed message_id: 18798 [10:51:44] [PUSH] Parsed operation_type: 0 [10:51:44] [PUSH] Taking direct action: opType=0, messageId=18798 [10:51:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18798 [10:51:44] [PUSH] ⚡ Message 18798 already in memory - skipping duplicate notification entirely [10:51:44] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:51:44] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:51:44] [PUSH_UI] Message 18798 already in memory - skipping insert [10:51:44] [PUSH_EMBED_VC] Saved message 18798 to local DB [10:51:44] [PUSH] Silent push received [10:51:44] [PUSH_EMBED] 📩 Received embedded message: id=18798, type=0, sender=Esra [10:51:44] [PUSH_EMBED] ✅ Saved message 18798 to local DB (sync) [10:51:44] [PUSH_EMBED] Fetching evolution data for message 18798 in background [10:51:44] [PUSH_EMBED] ✅ Fully processed message 18798 [10:51:44] [PUSH] Embedded message handled instantly from silent push [10:51:44] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:51:44] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:51:44] [PUSH_UI] Message 18798 already in memory - skipping insert [10:51:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18798, AnyHashable("session_id"): ILUIWU, 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("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [10:51:44] [PUSH_EMBED_VC] Message 18798 already in memory - skipping [10:51:44] [PUSH] ⚡ Embedded message handled directly in ViewController [10:51:44] [PUSH] Parsed message_id: 18798 [10:51:44] [PUSH] Parsed operation_type: 0 [10:51:44] [PUSH] Taking direct action: opType=0, messageId=18798 [10:51:44] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18798 [10:51:44] [PUSH] ⚡ Message 18798 already in memory - skipping duplicate notification entirely [10:51:44] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:51:44] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:51:44] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [10:51:44] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54 [10:51:44] [PUSH_EMBED] Got evolution data for message 18798, saving to local DB [10:51:44] [PUSH_EMBED] Saved evolution data for message 18798 [10:51:44] [PUSH_EMBED] Got evolution data for message 18798, saving to local DB [10:51:44] [PUSH_EMBED] Saved evolution data for message 18798 [10:51:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:51:44] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18797 → 18798 [10:51:45] [PUSH] Silent push received [10:51:45] [PUSH_EMBED] No embedded message_data in notification [10:51:45] [PUSH] No embedded data, pre-loading messages from server [10:51:45] [PUSH_PRELOAD] Fetching messages for instant display cache [10:51:45] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:51:45] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18748, 18747, 18746, 18745] [10:51:45] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push) [10:51:45] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:51:45] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18797, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [10:51:45] [PUSH] Parsed message_id: 18797 [10:51:45] [PUSH] Parsed operation_type: 3 [10:51:45] [PUSH] Taking direct action: opType=3, messageId=18797 [10:51:45] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18797 [10:51:45] [PUSH] Silent push received [10:51:45] [PUSH_EMBED] No embedded message_data in notification [10:51:45] [PUSH] No embedded data, pre-loading messages from server [10:51:45] [PUSH_PRELOAD] Fetching messages for instant display cache [10:51:45] [CLIENT_SIG] Event received: type=3 messageId=18797 [10:51:45] [WS_EVENT] Received event: type=3, messageId=18797 [10:51:45] [WS_EVENT] Read receipt for message 18797 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:51:45] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:51:45] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18748, 18747, 18746, 18745] [10:51:45] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push) [10:51:45] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:51:45] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18798, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU] [10:51:45] [PUSH] Parsed message_id: 18798 [10:51:45] [PUSH] Parsed operation_type: 3 [10:51:45] [PUSH] Taking direct action: opType=3, messageId=18798 [10:51:45] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18798 [10:51:45] [CLIENT_SIG] Event received: type=3 messageId=18798 [10:51:45] [WS_EVENT] Received event: type=3, messageId=18798 [10:51:45] [WS_EVENT] Read receipt for message 18798 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:51:47] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:51:47] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false [10:51:47] [SEND_MESSAGE] ✅ Added optimistic message id=-16 to arrays, newMsgCount=55 [10:51:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-16, 18798, 18797, 18796, 18795] [10:51:47] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:51:47] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:51:48] [CLIENT_SIG] Event received: type=0 messageId=18799 [10:51:48] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18799,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:51:47"} [10:51:48] [WS_EVENT] Received event: type=0, messageId=18799 [10:51:48] [WS_EVENT] 📨 New message notification (msgId=18799) - triggering incremental refresh, currentMsgCount=55 [10:51:48] [CHAT] receive_message.php JSON: ["message_id": 18799, "file_name": , "ok": 1, "datesent_utc": 2026-01-23 09:51:47, "session_id": ILUIWU, "message_type": 0] [10:51:48] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55 [10:51:48] [DB_UPGRADE] Upgrading message ID: -16 → 18799, preserveOriginalDate=false [10:51:48] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18798 [10:51:48] [DB_UPGRADE] ✅ Upgraded -16 → 18799 with send_status=0, 1 row(s) affected [10:51:48] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -16 → 18799 [10:51:48] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -16 → 18799 [10:51:48] ReloadData 9 [10:51:48] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:51:48] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:51:48] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55 [10:51:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:51:49] [MENU] dismissAnyExistingMenu called [10:51:49] [MENU] dismissAnyExistingMenu completed [10:51:49] [EMOJI_PICKER] Starting emoji picker for message 18798 [10:51:49] [MENU] Created button 'Reply' at index 0 [10:51:49] [MENU] Created button 'Copy' at index 1 [10:51:49] [MENU] Created button 'Delete' at index 2 [10:51:49] [MENU] Menu added at y=539.0 [10:51:49] [EMOJI_PICKER] ✅ Fetched 6 recent emojis [10:51:49] [EMOJI_PICKER] ✅ Creating picker with 6 recent emojis [10:51:49] [EMOJI_PICKER] ✅ Picker shown at y=337.0 [10:51:50] [MENU] menuButtonTouchDown - button title: Reply, tag: 0 [10:51:50] [PUSH] Silent push received [10:51:50] [PUSH_EMBED] No embedded message_data in notification [10:51:50] [PUSH] No embedded data, pre-loading messages from server [10:51:50] [PUSH_PRELOAD] Fetching messages for instant display cache [10:51:50] [MENU] menuButtonTapped - button title: Reply, tag: 0 [10:51:50] [MENU] Button frame: (0.0, 0.0, 120.0, 44.0), superview: true [10:51:50] [MENU] Found action closure, dismissing menu first [10:51:50] [MENU] dismissAnyExistingMenu called [10:51:50] [MENU] Found menu with tag 9999, removing [10:51:50] [MENU] Removing blur effect [10:51:50] [MENU] Removing floating message snapshot [10:51:50] [MENU] Dismissing emoji picker [10:51:50] [MENU] Recorded dismissal time for debounce [10:51:50] [MENU] dismissAnyExistingMenu completed [10:51:50] [MENU] Menu dismissed, executing action [10:51:50] [REPLY_DEBUG] ✅ startReplyTo called - set messageToReplyTo to message 18798 [10:51:50] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:51:50] [MENU] Action executed [10:51:50] [PRELOAD_CACHE] Preserving 5 push-inserted messages: [18749, 18748, 18747, 18746, 18745] [10:51:50] [PUSH_PRELOAD] ⚡ Pre-cached 55 messages for instant display (preserved 5 from push) [10:51:50] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:51:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 18799, AnyHashable("operation_type"): 3] [10:51:50] [PUSH] Parsed message_id: 18799 [10:51:50] [PUSH] Parsed operation_type: 3 [10:51:50] [PUSH] Taking direct action: opType=3, messageId=18799 [10:51:50] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18799 [10:51:50] [SCROLL_BTN] Showing button - 308pt from bottom > half 223pt [10:51:50] [CLIENT_SIG] Event received: type=3 messageId=18799 [10:51:50] [WS_EVENT] Received event: type=3, messageId=18799 [10:51:50] [WS_EVENT] Read receipt for message 18799 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [10:51:53] [REPLY_DEBUG] 📤 didTapSend - Sending message WITH reply to message 18798 [10:51:53] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=55, isReloading=false [10:51:53] [REPLY_DEBUG] 🔗 sendMessage START - Captured reply to message 18798 [10:51:53] [SEND_MESSAGE] ✅ Added optimistic message id=-17 to arrays, newMsgCount=56 [10:51:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[-17, 18799, 18798, 18797, 18796] [10:51:53] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:51:53] [REPLY_DEBUG] 🔗 sendMessage HTTP BODY - Added reply_to_id=18798 to request body [10:51:54] [CLIENT_SIG] Event received: type=0 messageId=18800 [10:51:54] [WS_EVENT] Received event: type=0, messageId=18800 [10:51:54] [WS_EVENT] 📨 New message notification (msgId=18800) - triggering incremental refresh, currentMsgCount=56 [10:51:54] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56 [10:51:54] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18800,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:51:53"} [10:51:54] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18799 [10:51:54] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-23 09:51:53, "ok": 1, "message_type": 0, "message_id": 18800, "file_name": , "session_id": ILUIWU] [10:51:54] [DB_UPGRADE] Upgrading message ID: -17 → 18800, preserveOriginalDate=false [10:51:54] [DB_UPGRADE] ✅ Upgraded -17 → 18800 with send_status=0, 1 row(s) affected [10:51:54] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -17 → 18800 [10:51:54] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -17 → 18800 [10:51:54] ReloadData 9 [10:51:54] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:51:54] [LIFECYCLE] App resigning active - cleared crash flag [10:51:54] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:51:54] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=56 [10:51:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18745, 18746, 18747, 18748, 18749] [10:51:54] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [10:51:54] [SECURITY] Saved background timestamp [10:51:54] [LIFECYCLE] App entering background - cleared crash flag [10:51:54] [CLIENT_SIG] Disconnecting [10:51:54] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [10:51:54] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [10:51:54] In cleanupPeer [10:51:54] In cleanupPeer [10:51:54] [LIFECYCLE] WebRTC audio disabled [10:51:54] [LIFECYCLE] AVAudioSession deactivated [10:51:54] [LIFECYCLE] All connections stopped [10:51:55] [CLIENT_SIG] WebSocket closed with code 1001 [10:51:55] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [10:51:55] [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/} [10:51:55] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [10:51:55] [SERVER] Stopped reconnect polling [10:51:55] Will request stop of video 0 [10:51:55] Will request stop of video 0 [10:51:55] [PIP] Removing 0 tracks from PiP for connection 0 [10:51:55] [PIP] ✅ All tracks removed for connection 0 [10:51:55] [PIP] Removing 0 tracks from PiP for connection 0 [10:51:55] [PIP] ✅ All tracks removed for connection 0 [10:58:31] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:58:31] [PUSH] Notification tapped - session_id: ILUIWU [10:58:31] [PUSH] Max message_id before tap: 18800 [10:58:31] [PUSH] Stored pending session: ILUIWU [10:58:31] [PUSH_EMBED] 📩 Received embedded message: id=18801, type=0, sender=Esra [10:58:31] [PUSH_EMBED] ✅ Saved message 18801 to local DB (sync) [10:58:31] [PUSH_EMBED] Created new cache with embedded message 18801 [10:58:31] [PUSH_EMBED] Fetching evolution data for message 18801 in background [10:58:31] [PUSH_EMBED] ✅ Fully processed message 18801 [10:58:31] [PUSH] Embedded message handled instantly on tap [10:58:31] [PUSH] Fetching server messages since_id=18800 to catch coalesced notifications on tap [10:58:31] [SECURITY] Timeout check: elapsed=396.7388758659363s, timeout=300.0s [10:58:31] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately [10:58:31] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18800 to catch coalesced notifications [10:58:31] [PUSH_PRELOAD] Fetching messages for instant display cache [10:58:31] [AUTH] ✅ All guards passed, showing privacy cover [10:58:31] [LIFECYCLE] App entering foreground - restoring connections [10:58:31] [LIFECYCLE] Away > 2 minutes (396s) - will scroll to bottom [10:58:31] [UPLOAD_RETRY] No pending uploads to retry [10:58:31] [LIFECYCLE] Merged 910 reactions from local DB [10:58:31] [LIFECYCLE] WebRTC audio re-enabled [10:58:31] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [10:58:31] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [10:58:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:58:31] [VIEWER] Reconnecting after background - querying agents [10:58:31] [UNSENT_RETRY] Checking for unsent messages... [10:58:31] [PENDING_UPLOAD] Total pending upload messages: 0 [10:58:31] [UNSENT_RETRY] No unsent messages found [10:58:31] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [10:58:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [10:58:31] [PUSH_UI] Inserted message 18801 into UI (now 57 messages) [10:58:31] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [10:58:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18801, 18745, 18746, 18747, 18748] [10:58:31] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18800 → 18801 [10:58:31] [CLIENT_SIG] WebSocket opened [10:58:31] [CLIENT_SIG] HELLO sent as client for session ILUIWU [10:58:31] [CLIENT_SIG] Connected! clientId=EwU2n7mGQKp8aGjb [10:58:31] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [10:58:31] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:58:32] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [10:58:32] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [10:58:32] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:58:32] [PUSH] Server fetch on tap completed (success=true) [10:58:32] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { 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] [10:58:32] [PUSH_EMBED_VC] Message 18801 already in memory - skipping [10:58:32] [PUSH] ⚡ Embedded message handled directly in ViewController [10:58:32] [PUSH] Parsed message_id: 18801 [10:58:32] [PUSH] Parsed operation_type: 0 [10:58:32] [PUSH] Taking direct action: opType=0, messageId=18801 [10:58:32] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18801 [10:58:32] [PUSH] ⚡ Message 18801 already in memory - skipping duplicate notification entirely [10:58:32] [PUSH_EMBED] Got evolution data for message 18801, saving to local DB [10:58:32] [PUSH_EMBED] Saved evolution data for message 18801 [10:58:32] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [10:58:32] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [10:58:32] [PUSH] handlePollEventsNotification userInfo: [:] [10:58:32] [PUSH] No message_id in userInfo [10:58:32] [PUSH] No operation_type in userInfo [10:58:32] [FAST_REFRESH] Evolution disabled - performing incremental sync [10:58:32] [FAST_REFRESH] Already have 57 messages - skipping local DB load [10:58:32] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [10:58:32] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [10:58:32] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=57 [10:58:32] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18801 [10:58:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18801, 18745, 18746, 18747, 18748] [10:58:32] [COMBINED_FETCH] Loaded 7567 read receipts, 915 messages with reactions [10:58:32] [FOREGROUND] Enriched 3 messages with readBy data from server [10:58:32] [INCREMENTAL_SYNC] ✅ No new messages [10:58:32] [FAST_REFRESH] Incremental sync complete - 57 messages [10:58:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18801, 18745, 18746, 18747, 18748] [10:58:32] [COMBINED_FETCH] Loaded 7567 read receipts, 915 messages with reactions [10:58:32] [FAST_REFRESH] Enriched 57 messages with readBy data [10:58:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18801, 18745, 18746, 18747, 18748] [10:58:33] [PUSH] Silent push received [10:58:33] [PUSH_EMBED] No embedded message_data in notification [10:58:33] [PUSH] No embedded data, pre-loading messages from server [10:58:33] [PUSH_PRELOAD] Fetching messages for instant display cache [10:58:33] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:58:33] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [10:58:33] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:58:33] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18792, AnyHashable("aps"): { "content-available" = 1; }] [10:58:33] [PUSH] Parsed message_id: 18792 [10:58:33] [PUSH] Parsed operation_type: 3 [10:58:33] [PUSH] Taking direct action: opType=3, messageId=18792 [10:58:33] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18792 [10:58:33] [PIN_AUTH] Correct PIN [10:58:33] [SECURITY] Restored real session: ILUIWU [10:58:33] [SECURITY] Restored real session: ILUIWU [10:58:33] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [10:58:33] [AUTH] Cache had 50 messages, maxExistingId=18801, inserted 0 truly new [10:58:33] [AUTH] UI update complete [10:58:33] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [10:58:33] [CLIENT_SIG] Already connected/connecting to session ILUIWU [10:58:33] [FAKE MODE] Exiting fake mode, restoring real session [10:58:33] [SECURITY] Restored real session: ILUIWU [10:58:33] [SECURITY] Saved real session: ILUIWU [10:58:33] [FAKE MODE] ✅ Restored real session: ILUIWU [10:58:33] [FAKE MODE] Loaded 50 messages (limited to page size) [10:58:33] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [10:58:33] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [10:58:34] [SCROLL_BTN] Showing button - 230pt from bottom > half 223pt [10:58:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18752, 18753, 18754, 18755, 18756] [10:58:34] [USER] ✅ User registered successfully [10:58:34] [PUSH] User registration after token update: success [10:58:34] [PUSH] Silent push received [10:58:34] [PUSH_EMBED] No embedded message_data in notification [10:58:34] [PUSH] No embedded data, pre-loading messages from server [10:58:34] [PUSH_PRELOAD] Fetching messages for instant display cache [10:58:34] [COMBINED_FETCH] Loaded 7567 read receipts, 915 messages with reactions [10:58:34] [FAKE MODE] Enriched 50 messages with readBy data [10:58:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [10:58:34] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [10:58:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [10:58:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18801, AnyHashable("aps"): { "content-available" = 1; }] [10:58:34] [PUSH] Parsed message_id: 18801 [10:58:34] [PUSH] Parsed operation_type: 3 [10:58:34] [PUSH] Taking direct action: opType=3, messageId=18801 [10:58:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18801 [10:58:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18752, 18753, 18754, 18755, 18756] [10:58:34] [CLIENT_SIG] Event received: type=3 messageId=18801 [10:58:34] [WS_EVENT] Received event: type=3, messageId=18801 [10:58:34] [WS_EVENT] Read receipt for message 18801 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [10:58:45] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:58:45] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [10:58:45] [SEND_MESSAGE] ✅ Added optimistic message id=-18 to arrays, newMsgCount=51 [10:58:45] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-18, 18801, 18800, 18799, 18798] [10:58:45] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:58:45] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:58:46] [CLIENT_SIG] Event received: type=0 messageId=18802 [10:58:46] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18802,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:58:45"} [10:58:46] [WS_EVENT] Received event: type=0, messageId=18802 [10:58:46] [WS_EVENT] 📨 New message notification (msgId=18802) - triggering incremental refresh, currentMsgCount=51 [10:58:46] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51 [10:58:46] [CHAT] receive_message.php JSON: ["file_name": , "message_id": 18802, "message_type": 0, "session_id": ILUIWU, "datesent_utc": 2026-01-23 09:58:45, "ok": 1] [10:58:46] [DB_UPGRADE] Upgrading message ID: -18 → 18802, preserveOriginalDate=false [10:58:46] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18801 [10:58:46] [DB_UPGRADE] ✅ Upgraded -18 → 18802 with send_status=0, 1 row(s) affected [10:58:46] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -18 → 18802 [10:58:46] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -18 → 18802 [10:58:46] ReloadData 9 [10:58:46] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:58:46] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:58:46] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51 [10:58:46] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18752, 18753, 18754, 18755, 18756] [10:58:57] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [10:58:57] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false [10:58:57] [SEND_MESSAGE] ✅ Added optimistic message id=-19 to arrays, newMsgCount=52 [10:58:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-19, 18802, 18801, 18800, 18799] [10:58:57] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [10:58:57] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [10:58:59] [CLIENT_SIG] Event received: type=0 messageId=18803 [10:58:59] [WS_EVENT] Received event: type=0, messageId=18803 [10:58:59] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18803,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 09:58:57"} [10:58:59] [WS_EVENT] 📨 New message notification (msgId=18803) - triggering incremental refresh, currentMsgCount=52 [10:58:59] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [10:58:59] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "datesent_utc": 2026-01-23 09:58:57, "file_name": , "ok": 1, "message_id": 18803] [10:58:59] [DB_UPGRADE] Upgrading message ID: -19 → 18803, preserveOriginalDate=false [10:58:59] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18802 [10:58:59] [DB_UPGRADE] ✅ Upgraded -19 → 18803 with send_status=0, 1 row(s) affected [10:58:59] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -19 → 18803 [10:58:59] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -19 → 18803 [10:58:59] ReloadData 9 [10:58:59] [INCREMENTAL_SYNC] ✅ Found 1 new messages [10:58:59] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [10:58:59] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52 [10:58:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18752, 18753, 18754, 18755, 18756] [10:59:00] [LIFECYCLE] App resigning active - cleared crash flag [10:59:01] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [10:59:01] [SECURITY] Saved background timestamp [10:59:01] [LIFECYCLE] App entering background - cleared crash flag [10:59:01] [CLIENT_SIG] Disconnecting [10:59:01] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [10:59:01] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [10:59:01] In cleanupPeer [10:59:01] In cleanupPeer [10:59:01] [LIFECYCLE] WebRTC audio disabled [10:59:01] [LIFECYCLE] AVAudioSession deactivated [10:59:01] [LIFECYCLE] All connections stopped [10:59:01] [CLIENT_SIG] WebSocket closed with code 1001 [10:59:01] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [10:59:01] [SERVER] Stopped reconnect polling [10:59:01] Will request stop of video 0 [10:59:01] Will request stop of video 0 [10:59:01] [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/} [10:59:01] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [10:59:01] [PIP] Removing 0 tracks from PiP for connection 0 [10:59:01] [PIP] ✅ All tracks removed for connection 0 [10:59:01] [PIP] Removing 0 tracks from PiP for connection 0 [10:59:01] [PIP] ✅ All tracks removed for connection 0 [11:32:48] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:32:48] [PUSH] Notification tapped - session_id: ILUIWU [11:32:48] [PUSH] Max message_id before tap: 18803 [11:32:48] [PUSH] Stored pending session: ILUIWU [11:32:48] [PUSH_EMBED] 📩 Received embedded message: id=18804, type=0, sender=Esra [11:32:48] [PUSH_EMBED] ✅ Saved message 18804 to local DB (sync) [11:32:48] [PUSH_EMBED] Created new cache with embedded message 18804 [11:32:48] [PUSH_EMBED] Fetching evolution data for message 18804 in background [11:32:48] [PUSH_EMBED] ✅ Fully processed message 18804 [11:32:48] [PUSH] Embedded message handled instantly on tap [11:32:48] [SECURITY] Timeout check: elapsed=2027.476000070572s, timeout=300.0s [11:32:48] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately [11:32:48] [PUSH] Fetching server messages since_id=18803 to catch coalesced notifications on tap [11:32:48] [AUTH] ✅ All guards passed, showing privacy cover [11:32:48] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18803 to catch coalesced notifications [11:32:48] [PUSH_PRELOAD] Fetching messages for instant display cache [11:32:48] [LIFECYCLE] App entering foreground - restoring connections [11:32:48] [LIFECYCLE] Away > 2 minutes (2027s) - will scroll to bottom [11:32:48] [UPLOAD_RETRY] No pending uploads to retry [11:32:48] [LIFECYCLE] Merged 910 reactions from local DB [11:32:48] [LIFECYCLE] WebRTC audio re-enabled [11:32:48] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:32:48] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:32:48] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:32:48] [VIEWER] Reconnecting after background - querying agents [11:32:48] [UNSENT_RETRY] Checking for unsent messages... [11:32:48] [PENDING_UPLOAD] Total pending upload messages: 0 [11:32:48] [UNSENT_RETRY] No unsent messages found [11:32:48] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [11:32:48] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:32:48] [PUSH_UI] Inserted message 18804 into UI (now 53 messages) [11:32:48] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [11:32:48] [PUSH_EMBED] Got evolution data for message 18804, saving to local DB [11:32:48] [PUSH_EMBED] Saved evolution data for message 18804 [11:32:48] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [11:32:48] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [11:32:48] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [11:32:48] [PUSH] Server fetch on tap completed (success=true) [11:32:48] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): { datesent = "2026-01-23 10:32:37"; "file_name" = ""; message = "\Ud83e\Udd2d\Ud83e\Udd2d\Ud83e\Udd2d\Ud83e\Udd2d"; "message_id" = 18804; "message_type" = 0; "prev_session_message_id" = 18803; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 18804, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0] [11:32:48] [PUSH_EMBED_VC] Message 18804 already in memory - skipping [11:32:48] [PUSH] ⚡ Embedded message handled directly in ViewController [11:32:48] [PUSH] Parsed message_id: 18804 [11:32:48] [PUSH] Parsed operation_type: 0 [11:32:48] [PUSH] Taking direct action: opType=0, messageId=18804 [11:32:48] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18804 [11:32:48] [PUSH] ⚡ Message 18804 already in memory - skipping duplicate notification entirely [11:32:48] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755] [11:32:48] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18803 → 18804 [11:32:48] [CLIENT_SIG] WebSocket opened [11:32:48] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:32:48] [CLIENT_SIG] Connected! clientId=jIksdF62ra4yFHEo [11:32:48] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:32:48] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:32:48] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:32:49] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [11:32:49] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [11:32:49] [PUSH] handlePollEventsNotification userInfo: [:] [11:32:49] [PUSH] No message_id in userInfo [11:32:49] [PUSH] No operation_type in userInfo [11:32:49] [FAST_REFRESH] Evolution disabled - performing incremental sync [11:32:49] [FAST_REFRESH] Already have 53 messages - skipping local DB load [11:32:49] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [11:32:49] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [11:32:49] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53 [11:32:49] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18804 [11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755] [11:32:49] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions [11:32:49] [FOREGROUND] Enriched 3 messages with readBy data from server [11:32:49] [INCREMENTAL_SYNC] ✅ No new messages [11:32:49] [FAST_REFRESH] Incremental sync complete - 53 messages [11:32:49] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755] [11:32:49] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions [11:32:49] [FAST_REFRESH] Enriched 53 messages with readBy data [11:32:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18804, 18752, 18753, 18754, 18755][11:32:50] [LOG] Pruned 31803 entries older than 3 hours [11:32:50] [SECURITY] Restored real session: ILUIWU [11:32:50] [SECURITY] Restored real session: ILUIWU [11:32:50] [PUSH] Silent push received [11:32:50] [PUSH_EMBED] No embedded message_data in notification [11:32:50] [PUSH] No embedded data, pre-loading messages from server [11:32:50] [PUSH_PRELOAD] Fetching messages for instant display cache [11:32:50] [PUSH] Silent push received [11:32:50] [PUSH_EMBED] No embedded message_data in notification [11:32:50] [PUSH] No embedded data, pre-loading messages from server [11:32:50] [PUSH_PRELOAD] Fetching messages for instant display cache [11:32:50] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [11:32:50] [AUTH] UI update complete [11:32:50] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:32:50] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:32:50] [FAKE MODE] Exiting fake mode, restoring real session [11:32:50] [SECURITY] Restored real session: ILUIWU [11:32:50] [SECURITY] Saved real session: ILUIWU [11:32:50] [FAKE MODE] ✅ Restored real session: ILUIWU [11:32:50] [FAKE MODE] Loaded 50 messages (limited to page size) [11:32:50] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [11:32:50] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [11:32:50] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:32:50] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [11:32:50] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:32:50] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [11:32:50] [USER] ✅ User registered successfully [11:32:50] [PUSH] User registration after token update: success [11:32:50] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [11:32:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18804, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [11:32:50] [PUSH] Parsed message_id: 18804 [11:32:50] [PUSH] Parsed operation_type: 3 [11:32:50] [PUSH] Taking direct action: opType=3, messageId=18804 [11:32:50] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18804 [11:32:50] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [11:32:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18804, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3] [11:32:50] [PUSH] Parsed message_id: 18804 [11:32:50] [PUSH] Parsed operation_type: 3 [11:32:50] [PUSH] Taking direct action: opType=3, messageId=18804 [11:32:50] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18804 [11:32:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18755, 18756, 18757, 18758, 18759] [11:32:51] [CLIENT_SIG] Event received: type=3 messageId=18804 [11:32:51] [WS_EVENT] Received event: type=3, messageId=18804 [11:32:51] [WS_EVENT] Read receipt for message 18804 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:32:51] [COMBINED_FETCH] Loaded 7570 read receipts, 915 messages with reactions [11:32:51] [FAKE MODE] Enriched 50 messages with readBy data [11:32:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18755, 18756, 18757, 18758, 18759] [11:32:56] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [11:32:56] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [11:32:56] [SEND_MESSAGE] ✅ Added optimistic message id=-20 to arrays, newMsgCount=51 [11:32:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-20, 18804, 18803, 18802, 18801] [11:32:56] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:32:56] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:32:57] [LIFECYCLE] App resigning active - cleared crash flag [11:32:57] [CLIENT_SIG] Event received: type=0 messageId=18805 [11:32:57] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18805,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 10:32:56"} [11:32:57] [WS_EVENT] Received event: type=0, messageId=18805 [11:32:57] [WS_EVENT] 📨 New message notification (msgId=18805) - triggering incremental refresh, currentMsgCount=51 [11:32:57] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51 [11:32:57] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "message_id": 18805, "datesent_utc": 2026-01-23 10:32:56, "file_name": , "ok": 1] [11:32:57] [DB_UPGRADE] Upgrading message ID: -20 → 18805, preserveOriginalDate=false [11:32:57] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18804 [11:32:57] [DB_UPGRADE] ✅ Upgraded -20 → 18805 with send_status=0, 1 row(s) affected [11:32:57] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -20 → 18805 [11:32:57] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -20 → 18805 [11:32:57] ReloadData 9 [11:32:57] [INCREMENTAL_SYNC] ✅ Found 1 new messages [11:32:57] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [11:32:57] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51 [11:32:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18755, 18756, 18757, 18758, 18759] [11:32:57] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:32:57] [SECURITY] Saved background timestamp [11:32:57] [LIFECYCLE] App entering background - cleared crash flag [11:32:57] [CLIENT_SIG] Disconnecting [11:32:57] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:32:57] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [11:32:57] In cleanupPeer [11:32:57] In cleanupPeer [11:32:57] [LIFECYCLE] WebRTC audio disabled [11:32:57] [LIFECYCLE] AVAudioSession deactivated [11:32:57] [LIFECYCLE] All connections stopped [11:32:58] [CLIENT_SIG] WebSocket closed with code 1001 [11:32:58] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:32:58] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:32:58] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:32:58] [SERVER] Stopped reconnect polling [11:32:58] Will request stop of video 0 [11:32:58] Will request stop of video 0 [11:32:58] [PIP] Removing 0 tracks from PiP for connection 0 [11:32:58] [PIP] ✅ All tracks removed for connection 0 [11:32:58] [PIP] Removing 0 tracks from PiP for connection 0 [11:32:58] [PIP] ✅ All tracks removed for connection 0 [11:33:21] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:33:21] [PUSH] Notification tapped - session_id: ILUIWU [11:33:21] [PUSH] Max message_id before tap: 18805 [11:33:21] [PUSH] Stored pending session: ILUIWU [11:33:21] [PUSH_EMBED] 📩 Received embedded message: id=18806, type=0, sender=Esra [11:33:21] [PUSH_EMBED] ✅ Saved message 18806 to local DB (sync) [11:33:21] [PUSH_EMBED] Inserted message 18806 into existing cache (now 51 messages) [11:33:21] [PUSH_EMBED] Fetching evolution data for message 18806 in background [11:33:21] [PUSH_EMBED] ✅ Fully processed message 18806 [11:33:21] [PUSH] Embedded message handled instantly on tap [11:33:21] [SECURITY] Timeout check: elapsed=23.570384979248047s, timeout=300.0s [11:33:21] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:33:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:33:21] [PUSH] Fetching server messages since_id=18805 to catch coalesced notifications on tap [11:33:21] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18805 to catch coalesced notifications [11:33:21] [PUSH_PRELOAD] Fetching messages for instant display cache [11:33:21] [LIFECYCLE] App entering foreground - restoring connections [11:33:21] [UPLOAD_RETRY] No pending uploads to retry [11:33:21] [LIFECYCLE] Merged 910 reactions from local DB [11:33:21] [LIFECYCLE] WebRTC audio re-enabled [11:33:21] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:33:21] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:33:21] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:33:21] [VIEWER] Reconnecting after background - querying agents [11:33:21] [UNSENT_RETRY] Checking for unsent messages... [11:33:21] [PENDING_UPLOAD] Total pending upload messages: 0 [11:33:21] [UNSENT_RETRY] No unsent messages found [11:33:21] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [11:33:21] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:33:21] [PUSH_UI] Inserted message 18806 into UI (now 52 messages) [11:33:21] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [11:33:21] [PUSH_EMBED] Got evolution data for message 18806, saving to local DB [11:33:21] [PUSH_EMBED] Saved evolution data for message 18806 [11:33:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:33:21] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18805 → 18806 [11:33:21] [CLIENT_SIG] WebSocket opened [11:33:21] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:33:21] [CLIENT_SIG] Connected! clientId=x8JVcnbVL7zGGW9m [11:33:21] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:33:21] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:33:21] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [11:33:21] [PRELOAD_CACHE] Preserving 50 push-inserted messages: [18804, 18803, 18802, 18801, 18800, 18799, 18798, 18797, 18796, 18795, 18794, 18793, 18792, 18791, 18790, 18789, 18788, 18787, 18786, 18785, 18784, 18783, 18782, 18781, 18780, 18779, 18778, 18777, 18776, 18775, 18774, 18773, 18772, 18771, 18770, 18769, 18768, 18767, 18766, 18765, 18764, 18763, 18762, 18761, 18760, 18759, 18758, 18757, 18756, 18755] [11:33:21] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 50 from push) [11:33:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [11:33:21] [PUSH] Server fetch on tap completed (success=true) [11:33:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18806, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-23 10:33:12"; "file_name" = ""; message = "Thank youuuuu my love\U2665\Ufe0f"; "message_id" = 18806; "message_type" = 0; "prev_session_message_id" = 18805; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [11:33:21] [PUSH_EMBED_VC] Message 18806 already in memory - skipping [11:33:21] [PUSH] ⚡ Embedded message handled directly in ViewController [11:33:21] [PUSH] Parsed message_id: 18806 [11:33:21] [PUSH] Parsed operation_type: 0 [11:33:21] [PUSH] Taking direct action: opType=0, messageId=18806 [11:33:21] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18806 [11:33:21] [PUSH] ⚡ Message 18806 already in memory - skipping duplicate notification entirely [11:33:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [11:33:22] [SECURITY] Within timeout - cleared background flag [11:33:22] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [11:33:22] [PUSH] handlePollEventsNotification userInfo: [:] [11:33:22] [PUSH] No message_id in userInfo [11:33:22] [PUSH] No operation_type in userInfo [11:33:22] [FAST_REFRESH] Evolution disabled - performing incremental sync [11:33:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load [11:33:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [11:33:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [11:33:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [11:33:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18806 [11:33:22] [INCREMENTAL_SYNC] ✅ No new messages [11:33:22] [FAST_REFRESH] Incremental sync complete - 52 messages [11:33:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:33:22] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions [11:33:22] [FOREGROUND] Enriched 2 messages with readBy data from server [11:33:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:33:22] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions [11:33:22] [FAST_REFRESH] Enriched 52 messages with readBy data [11:33:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:33:23] [LIFECYCLE] App resigning active - cleared crash flag [11:33:23] [PUSH] Silent push received [11:33:23] [PUSH_EMBED] 📩 Received embedded message: id=18806, type=0, sender=Esra [11:33:23] [PUSH_EMBED] ✅ Saved message 18806 to local DB (sync) [11:33:23] [PUSH_EMBED] Fetching evolution data for message 18806 in background [11:33:23] [PUSH_EMBED] ✅ Fully processed message 18806 [11:33:23] [PUSH] Embedded message handled instantly from silent push [11:33:23] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [11:33:23] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [11:33:23] [PUSH_UI] Message 18806 already in memory - skipping insert [11:33:23] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18806, AnyHashable("message_data"): { datesent = "2026-01-23 10:33:12"; "file_name" = ""; message = "Thank youuuuu my love\U2665\Ufe0f"; "message_id" = 18806; "message_type" = 0; "prev_session_message_id" = 18805; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [11:33:23] [PUSH_EMBED_VC] Message 18806 already in memory - skipping [11:33:23] [PUSH] ⚡ Embedded message handled directly in ViewController [11:33:23] [PUSH] Parsed message_id: 18806 [11:33:23] [PUSH] Parsed operation_type: 0 [11:33:23] [PUSH] Taking direct action: opType=0, messageId=18806 [11:33:23] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18806 [11:33:23] [PUSH] ⚡ Message 18806 already in memory - skipping duplicate notification entirely [11:33:23] [PUSH_EMBED] Got evolution data for message 18806, saving to local DB [11:33:23] [PUSH_EMBED] Saved evolution data for message 18806 [11:33:24] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:33:24] [SECURITY] Saved background timestamp [11:33:24] [LIFECYCLE] App entering background - cleared crash flag [11:33:24] [CLIENT_SIG] Disconnecting [11:33:24] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:33:24] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [11:33:24] In cleanupPeer [11:33:24] In cleanupPeer [11:33:24] [LIFECYCLE] WebRTC audio disabled [11:33:24] [LIFECYCLE] AVAudioSession deactivated [11:33:24] [LIFECYCLE] All connections stopped [11:33:24] [CLIENT_SIG] WebSocket closed with code 1001 [11:33:24] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:33:24] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:33:24] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:33:24] [SERVER] Stopped reconnect polling [11:33:24] Will request stop of video 0 [11:33:24] Will request stop of video 0 [11:33:24] [PIP] Removing 0 tracks from PiP for connection 0 [11:33:24] [PIP] ✅ All tracks removed for connection 0 [11:33:24] [PIP] Removing 0 tracks from PiP for connection 0 [11:33:24] [PIP] ✅ All tracks removed for connection 0 [11:33:24] [PUSH] Silent push received [11:33:24] [PUSH_EMBED] No embedded message_data in notification [11:33:24] [PUSH] No embedded data, pre-loading messages from server [11:33:24] [PUSH_PRELOAD] Fetching messages for instant display cache [11:33:24] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [11:33:24] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18756, 18755] [11:33:24] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push) [11:33:24] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [11:33:24] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18806] [11:33:24] [PUSH] Parsed message_id: 18806 [11:33:24] [PUSH] Parsed operation_type: 3 [11:33:24] [PUSH] Taking direct action: opType=3, messageId=18806 [11:33:24] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18806 [11:34:22] [SECURITY] Timeout check: elapsed=58.372612953186035s, timeout=300.0s [11:34:22] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [11:34:22] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:22] [LIFECYCLE] App entering foreground - restoring connections [11:34:22] [UPLOAD_RETRY] No pending uploads to retry [11:34:22] [LIFECYCLE] Merged 910 reactions from local DB [11:34:22] [LIFECYCLE] WebRTC audio re-enabled [11:34:22] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [11:34:22] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [11:34:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:34:22] [VIEWER] Reconnecting after background - querying agents [11:34:22] [UNSENT_RETRY] Checking for unsent messages... [11:34:22] [PENDING_UPLOAD] Total pending upload messages: 0 [11:34:22] [UNSENT_RETRY] No unsent messages found [11:34:22] [CLIENT_SIG] Already connected/connecting to session ILUIWU [11:34:22] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:34:22] [CLIENT_SIG] WebSocket opened [11:34:22] [CLIENT_SIG] HELLO sent as client for session ILUIWU [11:34:22] [CLIENT_SIG] Connected! clientId=pg_ehH0_Sagycobz [11:34:22] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [11:34:22] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [11:34:22] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [11:34:22] [SECURITY] Within timeout - cleared background flag [11:34:22] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [11:34:22] [PUSH] handlePollEventsNotification userInfo: [:] [11:34:22] [PUSH] No message_id in userInfo [11:34:22] [PUSH] No operation_type in userInfo [11:34:22] [FAST_REFRESH] Evolution disabled - performing incremental sync [11:34:22] [FAST_REFRESH] Already have 52 messages - skipping local DB load [11:34:22] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [11:34:22] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [11:34:22] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [11:34:22] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18806 [11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:34:23] [INCREMENTAL_SYNC] ✅ No new messages [11:34:23] [FAST_REFRESH] Incremental sync complete - 52 messages [11:34:23] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions [11:34:23] [FOREGROUND] Enriched 0 messages with readBy data from server [11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:34:23] [COMBINED_FETCH] Loaded 7572 read receipts, 915 messages with reactions [11:34:23] [FAST_REFRESH] Enriched 52 messages with readBy data [11:34:23] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18806, 18755, 18756, 18757, 18758] [11:34:33] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [11:34:33] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=52, isReloading=false [11:34:33] [SEND_MESSAGE] ✅ Added optimistic message id=-21 to arrays, newMsgCount=53 [11:34:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[-21, 18806, 18805, 18804, 18803] [11:34:33] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [11:34:33] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [11:34:33] [LIFECYCLE] App resigning active - cleared crash flag [11:34:34] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [11:34:34] [SECURITY] Saved background timestamp [11:34:34] [LIFECYCLE] App entering background - cleared crash flag [11:34:34] [CLIENT_SIG] Disconnecting [11:34:34] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [11:34:34] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [11:34:34] In cleanupPeer [11:34:34] In cleanupPeer [11:34:34] [LIFECYCLE] WebRTC audio disabled [11:34:34] [LIFECYCLE] AVAudioSession deactivated [11:34:34] [LIFECYCLE] All connections stopped [11:34:34] [CLIENT_SIG] WebSocket closed with code 1001 [11:34:34] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [11:34:34] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [11:34:34] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [11:34:34] [SERVER] Stopped reconnect polling [11:34:34] Will request stop of video 0 [11:34:34] Will request stop of video 0 [11:34:34] [PIP] Removing 0 tracks from PiP for connection 0 [11:34:34] [PIP] ✅ All tracks removed for connection 0 [11:34:34] [PIP] Removing 0 tracks from PiP for connection 0 [11:34:34] [PIP] ✅ All tracks removed for connection 0 [12:21:31] [CHAT] send error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x131c6fd50 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <83BC1087-D9BF-4F0F-BEC1-ACB966ADF67B>.<357>, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <83BC1087-D9BF-4F0F-BEC1-ACB966ADF67B>.<357>" ), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/receive_message.php, _kCFStreamErrorDomainKey=4} [12:21:31] [PUSH] Notification tapped - session_id: ILUIWU [12:21:31] [PUSH] Max message_id before tap: 18806 [12:21:31] [PUSH] Stored pending session: ILUIWU [12:21:31] [PUSH_EMBED] 📩 Received embedded message: id=18809, type=0, sender=Esra [12:21:31] [PUSH_EMBED] ✅ Saved message 18809 to local DB (sync) [12:21:31] [PUSH_EMBED] Created new cache with embedded message 18809 [12:21:31] [PUSH_EMBED] Fetching evolution data for message 18809 in background [12:21:31] [PUSH_EMBED] ✅ Fully processed message 18809 [12:21:31] [PUSH] Embedded message handled instantly on tap [12:21:31] [PUSH] Fetching server messages since_id=18806 to catch coalesced notifications on tap [12:21:31] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18806 to catch coalesced notifications [12:21:31] [PUSH_PRELOAD] Fetching messages for instant display cache [12:21:31] [SECURITY] Timeout check: elapsed=2816.529783964157s, timeout=300.0s [12:21:31] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately [12:21:31] [AUTH] ✅ All guards passed, showing privacy cover [12:21:31] [LIFECYCLE] App entering foreground - restoring connections [12:21:31] [LIFECYCLE] Away > 2 minutes (2816s) - will scroll to bottom [12:21:31] [UPLOAD_RETRY] No pending uploads to retry [12:21:31] [LIFECYCLE] Merged 910 reactions from local DB [12:21:31] [LIFECYCLE] WebRTC audio re-enabled [12:21:31] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:21:31] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:21:31] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:21:31] [VIEWER] Reconnecting after background - querying agents [12:21:31] [UNSENT_RETRY] Checking for unsent messages... [12:21:31] [PENDING_UPLOAD] Found pending message: id=-21, file=, uploadStatus=0, sendStatus=1 [12:21:31] [PENDING_UPLOAD] Total pending upload messages: 1 [12:21:31] [UNSENT_RETRY] 🔄 Found 1 unsent messages from me to retry [12:21:31] [UNSENT_RETRY] 🔄 Retrying message id=-21, type=0, file= [12:21:31] [SEND_STATUS] 💾 Updating DB: messageId=-21, status=1 (sending) [12:21:31] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-21 [12:21:31] [UNSENT_RETRY] 🔑 Including client_message_id=43D257B6-B5BF-46FB-944D-562A8199B3CE for idempotent retry [12:21:31] [UNSENT_RETRY] 📤 Sending message id=-21 to server [12:21:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:21:31] [CHAT] Network error detected - queuing for retry [12:21:31] [SEND_STATUS] 💾 Updating DB: messageId=-21, status=3 (pending_retry) [12:21:31] [SEND_STATUS] ✅ DB updated: 1 row(s) affected for messageId=-21 [12:21:31] [SEND_STATUS] ⏳ Message -21 marked as PENDING RETRY (waiting for network) [12:21:31] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:21:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:21:31] [PUSH_UI] Inserted message 18809 into UI (now 54 messages) [12:21:31] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:21:31] [PUSH] Silent push received [12:21:31] [PUSH_EMBED] 📩 Received embedded message: id=18809, type=0, sender=Esra [12:21:31] [PUSH_EMBED] ✅ Saved message 18809 to local DB (sync) [12:21:31] [PUSH_EMBED] Created new cache with embedded message 18809 [12:21:31] [PUSH_EMBED] Fetching evolution data for message 18809 in background [12:21:31] [PUSH_EMBED] ✅ Fully processed message 18809 [12:21:31] [PUSH] Embedded message handled instantly from silent push [12:21:31] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:21:31] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:21:31] [PUSH_UI] Message 18809 already in memory - skipping insert [12:21:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 2; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-23 11:21:26"; "file_name" = ""; message = "And Im happy for both of us\Ud83e\Udd70"; "message_id" = 18809; "message_type" = 0; "prev_session_message_id" = 18808; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 18809] [12:21:31] [PUSH_EMBED_VC] Message 18809 already in memory - skipping [12:21:31] [PUSH] ⚡ Embedded message handled directly in ViewController [12:21:31] [PUSH] Parsed message_id: 18809 [12:21:31] [PUSH] Parsed operation_type: 0 [12:21:31] [PUSH] Taking direct action: opType=0, messageId=18809 [12:21:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18809 [12:21:31] [PUSH] ⚡ Message 18809 already in memory - skipping duplicate notification entirely [12:21:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, -21, 18806, 18805, 18804] [12:21:31] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18806 → 18809 [12:21:31] [PUSH_EMBED] Got evolution data for message 18809, saving to local DB [12:21:31] [PUSH_EMBED] Saved evolution data for message 18809 [12:21:31] [CLIENT_SIG] WebSocket opened [12:21:31] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:21:31] [PUSH_EMBED] Got evolution data for message 18809, saving to local DB [12:21:31] [PUSH_EMBED] Saved evolution data for message 18809 [12:21:31] [CLIENT_SIG] Connected! clientId=xHkT3hEfSEA4lotG [12:21:31] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:21:31] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:21:31] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:21:31] [UNSENT_RETRY] 📥 receive_message.php HTTP 200: {"ok":true,"message_id":18807,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 10:34:33","idempotent":true} [12:21:31] [UNSENT_RETRY] ✅ Message synced! Old id=-21 → new server id=18807 [12:21:31] [DB_UPGRADE] Upgrading message ID: -21 → 18807, preserveOriginalDate=true [12:21:31] [DB_UPGRADE] ✅ Upgraded -21 → 18807 with send_status=0, 1 row(s) affected [12:21:31] [UNSENT_RETRY] ✅ Updated chatMessages[1].id: -21 → 18807 [12:21:31] [UNSENT_RETRY] ✅ Updated allMessagesWithReadBy[1].id: -21 → 18807 [12:21:31] ReloadData unsent_retry [12:21:31] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:21:31] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [12:21:31] [PUSH] handlePollEventsNotification userInfo: [:] [12:21:31] [PUSH] No message_id in userInfo [12:21:31] [PUSH] No operation_type in userInfo [12:21:31] [FAST_REFRESH] Evolution disabled - performing incremental sync [12:21:31] [FAST_REFRESH] Already have 54 messages - skipping local DB load [12:21:31] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [12:21:31] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [12:21:31] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54 [12:21:31] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18809 [12:21:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, 18807, 18806, 18805, 18804] [12:21:31] [PUSH_PRELOAD] Fetched 3 messages - caching for instant display [12:21:31] [PUSH_PRELOAD] ⚡ Pre-cached 3 messages for instant display (preserved 0 from push) [12:21:31] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:21:31] [PUSH] Server fetch on tap completed (success=true) [12:21:31] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 2; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-23 11:21:26"; "file_name" = ""; message = "And Im happy for both of us\Ud83e\Udd70"; "message_id" = 18809; "message_type" = 0; "prev_session_message_id" = 18808; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("message_id"): 18809, AnyHashable("operation_type"): 0] [12:21:31] [PUSH_EMBED_VC] Message 18809 already in memory - skipping [12:21:31] [PUSH] ⚡ Embedded message handled directly in ViewController [12:21:31] [PUSH] Parsed message_id: 18809 [12:21:31] [PUSH] Parsed operation_type: 0 [12:21:31] [PUSH] Taking direct action: opType=0, messageId=18809 [12:21:31] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18809 [12:21:31] [PUSH] ⚡ Message 18809 already in memory - skipping duplicate notification entirely [12:21:31] [INCREMENTAL_SYNC] ✅ No new messages [12:21:31] [FAST_REFRESH] Incremental sync complete - 54 messages [12:21:32] [NETWORK] Status changed: connected [12:21:32] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions [12:21:32] [FAST_REFRESH] Enriched 54 messages with readBy data [12:21:32] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions [12:21:32] [FOREGROUND] Enriched 0 messages with readBy data from server [12:21:32] [RELOAD_TAB] ⏳ Already pending, waiting for debounce[12:21:32] [LOG] Pruned 253 entries older than 3 hours [12:21:32] [SECURITY] Restored real session: ILUIWU [12:21:32] [SECURITY] Restored real session: ILUIWU [12:21:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18809, 18807, 18806, 18805, 18804] [12:21:32] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [12:21:32] [AUTH] UI update complete [12:21:32] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:21:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:21:32] [FAKE MODE] Exiting fake mode, restoring real session [12:21:32] [SECURITY] Restored real session: ILUIWU [12:21:32] [SECURITY] Saved real session: ILUIWU [12:21:32] [FAKE MODE] ✅ Restored real session: ILUIWU [12:21:32] [FAKE MODE] Loaded 50 messages (limited to page size) [12:21:32] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:21:32] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:21:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18760, 18761, 18762, 18763, 18764] [12:21:33] [USER] ✅ User registered successfully [12:21:33] [PUSH] User registration after token update: success [12:21:33] [COMBINED_FETCH] Loaded 7575 read receipts, 915 messages with reactions [12:21:33] [FAKE MODE] Enriched 50 messages with readBy data [12:21:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18760, 18761, 18762, 18763, 18764] [12:21:34] [PUSH] Silent push received [12:21:34] [PUSH_EMBED] No embedded message_data in notification [12:21:34] [PUSH] No embedded data, pre-loading messages from server [12:21:34] [PUSH_PRELOAD] Fetching messages for instant display cache [12:21:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:21:34] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [12:21:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:21:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18809, AnyHashable("session_id"): ILUIWU] [12:21:34] [PUSH] Parsed message_id: 18809 [12:21:34] [PUSH] Parsed operation_type: 3 [12:21:34] [PUSH] Taking direct action: opType=3, messageId=18809 [12:21:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18809 [12:21:35] [CLIENT_SIG] Event received: type=3 messageId=18809 [12:21:35] [WS_EVENT] Received event: type=3, messageId=18809 [12:21:35] [WS_EVENT] Read receipt for message 18809 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:21:37] [PUSH] Silent push received [12:21:37] [PUSH_EMBED] No embedded message_data in notification [12:21:37] [PUSH] No embedded data, pre-loading messages from server [12:21:37] [PUSH_PRELOAD] Fetching messages for instant display cache [12:21:37] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:21:37] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [12:21:37] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:21:37] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18808, AnyHashable("aps"): { "content-available" = 1; }] [12:21:37] [PUSH] Parsed message_id: 18808 [12:21:37] [PUSH] Parsed operation_type: 3 [12:21:37] [PUSH] Taking direct action: opType=3, messageId=18808 [12:21:37] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18808 [12:21:37] [CLIENT_SIG] Event received: type=3 messageId=18808 [12:21:37] [WS_EVENT] Received event: type=3, messageId=18808 [12:21:37] [WS_EVENT] Read receipt for message 18808 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:21:39] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [12:21:39] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [12:21:39] [SEND_MESSAGE] ✅ Added optimistic message id=-22 to arrays, newMsgCount=51 [12:21:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-22, 18809, 18808, 18807, 18806] [12:21:39] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:21:39] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:21:41] [CLIENT_SIG] Event received: type=0 messageId=18810 [12:21:41] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18810,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:21:39"} [12:21:41] [WS_EVENT] Received event: type=0, messageId=18810 [12:21:41] [WS_EVENT] 📨 New message notification (msgId=18810) - triggering incremental refresh, currentMsgCount=51 [12:21:41] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51 [12:21:41] [CHAT] receive_message.php JSON: ["message_id": 18810, "session_id": ILUIWU, "ok": 1, "datesent_utc": 2026-01-23 11:21:39, "file_name": , "message_type": 0] [12:21:41] [DB_UPGRADE] Upgrading message ID: -22 → 18810, preserveOriginalDate=false [12:21:41] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18809 [12:21:41] [DB_UPGRADE] ✅ Upgraded -22 → 18810 with send_status=0, 1 row(s) affected [12:21:41] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -22 → 18810 [12:21:41] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -22 → 18810 [12:21:41] ReloadData 9 [12:21:41] [INCREMENTAL_SYNC] ✅ Found 1 new messages [12:21:41] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:21:41] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51 [12:21:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18760, 18761, 18762, 18763, 18764] [12:21:43] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [12:21:43] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false [12:21:43] [SEND_MESSAGE] ✅ Added optimistic message id=-23 to arrays, newMsgCount=52 [12:21:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-23, 18810, 18809, 18808, 18807] [12:21:43] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:21:43] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:21:44] [PUSH] Silent push received [12:21:44] [PUSH_EMBED] No embedded message_data in notification [12:21:44] [PUSH] No embedded data, pre-loading messages from server [12:21:44] [PUSH_PRELOAD] Fetching messages for instant display cache [12:21:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:21:44] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18761, 18760] [12:21:44] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push) [12:21:44] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:21:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18810, AnyHashable("operation_type"): 3] [12:21:44] [PUSH] Parsed message_id: 18810 [12:21:44] [PUSH] Parsed operation_type: 3 [12:21:44] [PUSH] Taking direct action: opType=3, messageId=18810 [12:21:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18810 [12:21:44] [CLIENT_SIG] Event received: type=0 messageId=18811 [12:21:44] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18811,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:21:43"} [12:21:44] [WS_EVENT] Received event: type=0, messageId=18811 [12:21:44] [WS_EVENT] 📨 New message notification (msgId=18811) - triggering incremental refresh, currentMsgCount=52 [12:21:44] [CHAT] receive_message.php JSON: ["ok": 1, "message_id": 18811, "datesent_utc": 2026-01-23 11:21:43, "file_name": , "session_id": ILUIWU, "message_type": 0] [12:21:44] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [12:21:44] [DB_UPGRADE] Upgrading message ID: -23 → 18811, preserveOriginalDate=false [12:21:44] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18811 [12:21:44] [DB_UPGRADE] ❌ Step fail: UNIQUE constraint failed: local_messages.message_id [12:21:44] [SEND_UPGRADE] ⚠️ DB upgrade failed, server ID 18811 not in memory yet - deleting provisional -23 from DB [12:21:44] ReloadData 9 [12:21:44] [INCREMENTAL_SYNC] ✅ No new messages [12:21:44] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52 [12:21:45] [CLIENT_SIG] Event received: type=3 messageId=18810 [12:21:45] [WS_EVENT] Received event: type=3, messageId=18810 [12:21:45] [WS_EVENT] Read receipt for message 18810 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:21:46] [LIFECYCLE] App resigning active - cleared crash flag [12:21:46] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [12:21:46] [SECURITY] Saved background timestamp [12:21:46] [LIFECYCLE] App entering background - cleared crash flag [12:21:46] [CLIENT_SIG] Disconnecting [12:21:46] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:21:46] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [12:21:46] In cleanupPeer [12:21:46] In cleanupPeer [12:21:46] [LIFECYCLE] WebRTC audio disabled [12:21:46] [LIFECYCLE] AVAudioSession deactivated [12:21:46] [LIFECYCLE] All connections stopped [12:21:46] [CLIENT_SIG] WebSocket closed with code 1001 [12:21:46] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:21:46] [SERVER] Stopped reconnect polling [12:21:46] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [12:21:46] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:21:46] Will request stop of video 0 [12:21:46] Will request stop of video 0 [12:21:46] [PIP] Removing 0 tracks from PiP for connection 0 [12:21:46] [PIP] ✅ All tracks removed for connection 0 [12:21:46] [PIP] Removing 0 tracks from PiP for connection 0 [12:21:46] [PIP] ✅ All tracks removed for connection 0 [12:21:47] [PUSH] Silent push received [12:21:47] [PUSH_EMBED] No embedded message_data in notification [12:21:47] [PUSH] No embedded data, pre-loading messages from server [12:21:47] [PUSH_PRELOAD] Fetching messages for instant display cache [12:21:47] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:21:47] [PRELOAD_CACHE] Preserving 2 push-inserted messages: [18761, 18760] [12:21:47] [PUSH_PRELOAD] ⚡ Pre-cached 52 messages for instant display (preserved 2 from push) [12:21:47] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:21:47] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18811, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [12:21:47] [PUSH] Parsed message_id: 18811 [12:21:47] [PUSH] Parsed operation_type: 3 [12:21:47] [PUSH] Taking direct action: opType=3, messageId=18811 [12:21:47] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18811 [12:21:48] [NETWORK] Status changed: connected [12:21:58] [PUSH] Silent push received [12:21:58] [PUSH_EMBED] 📩 Received embedded message: id=18812, type=0, sender=Esra [12:21:58] [PUSH_EMBED] ✅ Saved message 18812 to local DB (sync) [12:21:58] [PUSH_EMBED] Inserted message 18812 into existing cache (now 53 messages) [12:21:58] [PUSH_EMBED] Fetching evolution data for message 18812 in background [12:21:58] [PUSH_EMBED] ✅ Fully processed message 18812 [12:21:58] [PUSH] Embedded message handled instantly from silent push [12:21:58] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:21:58] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:21:58] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:21:58] [PUSH_UI] Inserted message 18812 into UI (now 53 messages) [12:21:58] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18812, AnyHashable("message_data"): { datesent = "2026-01-23 11:21:55"; "file_name" = ""; message = "\U2665\Ufe0f\U2665\Ufe0f"; "message_id" = 18812; "message_type" = 0; "prev_session_message_id" = 18811; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:21:58] [PUSH_EMBED_VC] Message 18812 already in memory - skipping [12:21:58] [PUSH] ⚡ Embedded message handled directly in ViewController [12:21:58] [PUSH] Parsed message_id: 18812 [12:21:58] [PUSH] Parsed operation_type: 0 [12:21:58] [PUSH] Taking direct action: opType=0, messageId=18812 [12:21:58] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18812 [12:21:58] [PUSH] ⚡ Message 18812 already in memory - skipping duplicate notification entirely [12:21:58] [PUSH_EMBED] Got evolution data for message 18812, saving to local DB [12:21:58] [PUSH_EMBED] Saved evolution data for message 18812 [12:21:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18812, 18811, 18810, 18809, 18808] [12:21:59] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18811 → 18812 [12:21:59] [CLIENT_SIG] WebSocket opened [12:21:59] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:21:59] [CLIENT_SIG] Connected! clientId=b-MclwLnLsCCOaHZ [12:21:59] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:21:59] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [12:21:59] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:01] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort} [12:22:01] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:22:01] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <5069D1ED-9A99-41EC-A5E9-210B01E3D71A>.<1>} [12:22:01] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:22:01] [PUSH] Silent push received [12:22:01] [PUSH_EMBED] No embedded message_data in notification [12:22:01] [PUSH] No embedded data, pre-loading messages from server [12:22:01] [PUSH_PRELOAD] Fetching messages for instant display cache [12:22:01] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:22:01] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [18762, 18761, 18760] [12:22:01] [PUSH_PRELOAD] ⚡ Pre-cached 53 messages for instant display (preserved 3 from push) [12:22:01] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:22:01] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18812, AnyHashable("operation_type"): 3] [12:22:01] [PUSH] Parsed message_id: 18812 [12:22:01] [PUSH] Parsed operation_type: 3 [12:22:01] [PUSH] Taking direct action: opType=3, messageId=18812 [12:22:01] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18812 [12:22:17] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:17] [PUSH] Silent push received [12:22:17] [PUSH_EMBED] 📩 Received embedded message: id=18813, type=0, sender=Esra [12:22:17] [PUSH_EMBED] ✅ Saved message 18813 to local DB (sync) [12:22:17] [PUSH_EMBED] Inserted message 18813 into existing cache (now 54 messages) [12:22:17] [PUSH_EMBED] Fetching evolution data for message 18813 in background [12:22:17] [PUSH_EMBED] ✅ Fully processed message 18813 [12:22:17] [PUSH] Embedded message handled instantly from silent push [12:22:17] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:22:17] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:22:17] [PUSH_UI] Inserted message 18813 into UI (now 54 messages) [12:22:17] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18813, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("message_data"): { datesent = "2026-01-23 11:22:15"; "file_name" = ""; message = "Im surprised actually, I was thinking 2-2 \Ud83e\Udd23"; "message_id" = 18813; "message_type" = 0; "prev_session_message_id" = 18812; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:22:17] [PUSH_EMBED_VC] Message 18813 already in memory - skipping [12:22:17] [PUSH] ⚡ Embedded message handled directly in ViewController [12:22:17] [PUSH] Parsed message_id: 18813 [12:22:17] [PUSH] Parsed operation_type: 0 [12:22:17] [PUSH] Taking direct action: opType=0, messageId=18813 [12:22:17] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18813 [12:22:17] [PUSH] ⚡ Message 18813 already in memory - skipping duplicate notification entirely [12:22:17] [PUSH_EMBED] Got evolution data for message 18813, saving to local DB [12:22:17] [PUSH_EMBED] Saved evolution data for message 18813 [12:22:17] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809] [12:22:17] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18812 → 18813 [12:22:17] [CLIENT_SIG] WebSocket opened [12:22:17] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:22:17] [CLIENT_SIG] Connected! clientId=-pot7El0Tq50__X1 [12:22:17] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:22:17] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:19] [SECURITY] Timeout check: elapsed=32.79767894744873s, timeout=300.0s [12:22:19] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:22:19] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:22:19] [LIFECYCLE] App entering foreground - restoring connections [12:22:19] [UPLOAD_RETRY] No pending uploads to retry [12:22:19] [LIFECYCLE] Merged 910 reactions from local DB [12:22:19] [LIFECYCLE] WebRTC audio re-enabled [12:22:19] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:22:19] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:22:19] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:22:19] [VIEWER] Reconnecting after background - querying agents [12:22:19] [FOREGROUND] 📶 Network available - retrying 1 pending messages [12:22:19] [RETRY] 🔄 Retrying 1 pending messages... [12:22:19] [RETRY] ⚠️ Message -21 not found in memory, removing from pending [12:22:19] [UNSENT_RETRY] Checking for unsent messages... [12:22:19] [PENDING_UPLOAD] Total pending upload messages: 0 [12:22:19] [UNSENT_RETRY] No unsent messages found [12:22:19] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort} [12:22:19] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:22:19] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <66092B1B-4575-4193-8F49-5AA577F4EE09>.<1>} [12:22:19] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:22:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809] [12:22:19] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true [12:22:19] [SECURITY] Within timeout - cleared background flag [12:22:19] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [12:22:19] [PUSH] handlePollEventsNotification userInfo: [:] [12:22:19] [PUSH] No message_id in userInfo [12:22:19] [PUSH] No operation_type in userInfo [12:22:19] [FAST_REFRESH] Evolution disabled - performing incremental sync [12:22:19] [FAST_REFRESH] Already have 54 messages - skipping local DB load [12:22:19] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [12:22:19] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [12:22:19] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54 [12:22:19] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18813 [12:22:19] [INCREMENTAL_SYNC] ✅ No new messages [12:22:19] [FAST_REFRESH] Incremental sync complete - 54 messages [12:22:19] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809] [12:22:20] [COMBINED_FETCH] Loaded 7579 read receipts, 915 messages with reactions [12:22:20] [FOREGROUND] Enriched 3 messages with readBy data from server [12:22:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809] [12:22:20] [COMBINED_FETCH] Loaded 7579 read receipts, 915 messages with reactions [12:22:20] [FAST_REFRESH] Enriched 54 messages with readBy data [12:22:20] [MENU] dismissAnyExistingMenu called [12:22:20] [MENU] dismissAnyExistingMenu completed [12:22:20] [PUSH] Silent push received [12:22:20] [PUSH_EMBED] No embedded message_data in notification [12:22:20] [PUSH] No embedded data, pre-loading messages from server [12:22:20] [PUSH_PRELOAD] Fetching messages for instant display cache [12:22:20] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:22:20] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18763, 18762, 18761, 18760] [12:22:20] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push) [12:22:20] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:22:20] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18813, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): { "content-available" = 1; }] [12:22:20] [PUSH] Parsed message_id: 18813 [12:22:20] [PUSH] Parsed operation_type: 3 [12:22:20] [PUSH] Taking direct action: opType=3, messageId=18813 [12:22:20] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18813 [12:22:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18813, 18812, 18811, 18810, 18809] [12:22:23] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:23] [CLIENT_SIG] Cannot send typing_start - not connected [12:22:23] [CLIENT_SIG] WebSocket opened [12:22:23] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:22:23] [CLIENT_SIG] Connected! clientId=02JiUHPng7pqB2bJ [12:22:23] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:22:23] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:22:47] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [12:22:47] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false [12:22:47] [SEND_MESSAGE] ✅ Added optimistic message id=-24 to arrays, newMsgCount=55 [12:22:47] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-24, 18813, 18812, 18811, 18810] [12:22:47] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [12:22:47] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [12:22:48] [LIFECYCLE] App resigning active - cleared crash flag [12:22:48] [CLIENT_SIG] Event received: type=0 messageId=18814 [12:22:48] [WS_EVENT] Received event: type=0, messageId=18814 [12:22:48] [WS_EVENT] 📨 New message notification (msgId=18814) - triggering incremental refresh, currentMsgCount=55 [12:22:48] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55 [12:22:48] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18814,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 11:22:47"} [12:22:48] [CHAT] receive_message.php JSON: ["ok": 1, "datesent_utc": 2026-01-23 11:22:47, "message_type": 0, "file_name": , "session_id": ILUIWU, "message_id": 18814] [12:22:48] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18813 [12:22:48] [DB_UPGRADE] Upgrading message ID: -24 → 18814, preserveOriginalDate=false [12:22:49] [DB_UPGRADE] ✅ Upgraded -24 → 18814 with send_status=0, 1 row(s) affected [12:22:49] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -24 → 18814 [12:22:49] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -24 → 18814 [12:22:49] ReloadData 9 [12:22:49] [INCREMENTAL_SYNC] ✅ Found 1 new messages [12:22:49] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [12:22:49] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55 [12:22:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18760, 18761, 18762, 18763, 18764] [12:22:49] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [12:22:49] [SECURITY] Saved background timestamp [12:22:49] [LIFECYCLE] App entering background - cleared crash flag [12:22:49] [CLIENT_SIG] Disconnecting [12:22:49] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:22:49] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [12:22:49] In cleanupPeer [12:22:49] In cleanupPeer [12:22:49] [LIFECYCLE] WebRTC audio disabled [12:22:49] [LIFECYCLE] AVAudioSession deactivated [12:22:49] [LIFECYCLE] All connections stopped [12:22:49] [CLIENT_SIG] WebSocket closed with code 1001 [12:22:49] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:22:49] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [12:22:49] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:22:49] [SERVER] Stopped reconnect polling [12:22:49] Will request stop of video 0 [12:22:49] Will request stop of video 0 [12:22:49] [PIP] Removing 0 tracks from PiP for connection 0 [12:22:49] [PIP] ✅ All tracks removed for connection 0 [12:22:49] [PIP] Removing 0 tracks from PiP for connection 0 [12:22:49] [PIP] ✅ All tracks removed for connection 0 [12:30:08] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:30:08] [PUSH] Notification tapped - session_id: ILUIWU [12:30:08] [PUSH] Max message_id before tap: 18814 [12:30:08] [PUSH] Stored pending session: ILUIWU [12:30:08] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra [12:30:08] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync) [12:30:08] [PUSH_EMBED] Created new cache with embedded message 18815 [12:30:08] [PUSH_EMBED] Fetching evolution data for message 18815 in background [12:30:08] [PUSH_EMBED] ✅ Fully processed message 18815 [12:30:08] [PUSH] Embedded message handled instantly on tap [12:30:08] [PUSH] Fetching server messages since_id=18814 to catch coalesced notifications on tap [12:30:08] [SECURITY] Timeout check: elapsed=438.7526659965515s, timeout=300.0s [12:30:08] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18814 to catch coalesced notifications [12:30:08] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately [12:30:08] [PUSH_PRELOAD] Fetching messages for instant display cache [12:30:08] [AUTH] ✅ All guards passed, showing privacy cover [12:30:08] [LIFECYCLE] App entering foreground - restoring connections [12:30:08] [LIFECYCLE] Away > 2 minutes (438s) - will scroll to bottom [12:30:08] [UPLOAD_RETRY] No pending uploads to retry [12:30:08] [LIFECYCLE] Merged 910 reactions from local DB [12:30:08] [LIFECYCLE] WebRTC audio re-enabled [12:30:08] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [12:30:08] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [12:30:08] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:30:08] [VIEWER] Reconnecting after background - querying agents [12:30:08] [UNSENT_RETRY] Checking for unsent messages... [12:30:08] [PENDING_UPLOAD] Total pending upload messages: 0 [12:30:08] [UNSENT_RETRY] No unsent messages found [12:30:08] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:30:08] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:08] [PUSH_UI] Inserted message 18815 into UI (now 56 messages) [12:30:08] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [12:30:08] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB [12:30:08] [PUSH_EMBED] Saved evolution data for message 18815 [12:30:08] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [12:30:08] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [12:30:08] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:30:08] [PUSH] Server fetch on tap completed (success=true) [12:30:08] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18815, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-23 11:30:03"; "file_name" = ""; message = "Thank you my loooove\U2665\Ufe0f"; "message_id" = 18815; "message_type" = 0; "prev_session_message_id" = 18814; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }] [12:30:08] [PUSH_EMBED_VC] Message 18815 already in memory - skipping [12:30:08] [PUSH] ⚡ Embedded message handled directly in ViewController [12:30:08] [PUSH] Parsed message_id: 18815 [12:30:08] [PUSH] Parsed operation_type: 0 [12:30:08] [PUSH] Taking direct action: opType=0, messageId=18815 [12:30:08] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815 [12:30:08] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely [12:30:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763] [12:30:08] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18814 → 18815 [12:30:08] [CLIENT_SIG] WebSocket opened [12:30:08] [CLIENT_SIG] HELLO sent as client for session ILUIWU [12:30:08] [CLIENT_SIG] Connected! clientId=-szxfPRASEeC21RJ [12:30:08] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [12:30:08] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:30:08] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [12:30:08] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [12:30:08] [PUSH] handlePollEventsNotification userInfo: [:] [12:30:08] [PUSH] No message_id in userInfo [12:30:08] [PUSH] No operation_type in userInfo [12:30:08] [FAST_REFRESH] Evolution disabled - performing incremental sync [12:30:08] [FAST_REFRESH] Already have 56 messages - skipping local DB load [12:30:08] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [12:30:08] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [12:30:08] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56 [12:30:08] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815 [12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763] [12:30:09] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions [12:30:09] [FOREGROUND] Enriched 2 messages with readBy data from server [12:30:09] [INCREMENTAL_SYNC] ✅ No new messages [12:30:09] [FAST_REFRESH] Incremental sync complete - 56 messages [12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763] [12:30:09] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions [12:30:09] [FAST_REFRESH] Enriched 56 messages with readBy data [12:30:09] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18815, 18760, 18761, 18762, 18763] [12:30:09] [PUSH] Silent push received [12:30:09] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra [12:30:09] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync) [12:30:09] [PUSH_EMBED] Created new cache with embedded message 18815 [12:30:09] [PUSH_EMBED] Fetching evolution data for message 18815 in background [12:30:09] [PUSH_EMBED] ✅ Fully processed message 18815 [12:30:09] [PUSH] Embedded message handled instantly from silent push [12:30:09] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:30:09] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:09] [PUSH_UI] Message 18815 already in memory - skipping insert [12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18815, AnyHashable("message_data"): { datesent = "2026-01-23 11:30:03"; "file_name" = ""; message = "Thank you my loooove\U2665\Ufe0f"; "message_id" = 18815; "message_type" = 0; "prev_session_message_id" = 18814; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:30:09] [PUSH_EMBED_VC] Message 18815 already in memory - skipping [12:30:09] [PUSH] ⚡ Embedded message handled directly in ViewController [12:30:09] [PUSH] Parsed message_id: 18815 [12:30:09] [PUSH] Parsed operation_type: 0 [12:30:09] [PUSH] Taking direct action: opType=0, messageId=18815 [12:30:09] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815 [12:30:09] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely [12:30:09] [PUSH] Silent push received [12:30:09] [PUSH_EMBED] 📩 Received embedded message: id=18815, type=0, sender=Esra [12:30:09] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB [12:30:09] [PUSH_EMBED] ✅ Saved message 18815 to local DB (sync) [12:30:09] [PUSH_EMBED] Created new cache with embedded message 18815 [12:30:09] [PUSH_EMBED] Fetching evolution data for message 18815 in background [12:30:09] [PUSH_EMBED] ✅ Fully processed message 18815 [12:30:09] [PUSH] Embedded message handled instantly from silent push [12:30:09] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [12:30:09] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [12:30:09] [PUSH_UI] Message 18815 already in memory - skipping insert [12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18815, AnyHashable("message_data"): { datesent = "2026-01-23 11:30:03"; "file_name" = ""; message = "Thank you my loooove\U2665\Ufe0f"; "message_id" = 18815; "message_type" = 0; "prev_session_message_id" = 18814; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU] [12:30:09] [PUSH_EMBED_VC] Message 18815 already in memory - skipping [12:30:09] [PUSH] ⚡ Embedded message handled directly in ViewController [12:30:09] [PUSH] Parsed message_id: 18815 [12:30:09] [PUSH] Parsed operation_type: 0 [12:30:09] [PUSH] Taking direct action: opType=0, messageId=18815 [12:30:09] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18815 [12:30:09] [PUSH] ⚡ Message 18815 already in memory - skipping duplicate notification entirely [12:30:09] [PUSH_EMBED] Saved evolution data for message 18815 [12:30:09] [PUSH_EMBED] Got evolution data for message 18815, saving to local DB [12:30:09] [PUSH] Silent push received [12:30:09] [PUSH_EMBED] No embedded message_data in notification [12:30:09] [PUSH] No embedded data, pre-loading messages from server [12:30:09] [PUSH_PRELOAD] Fetching messages for instant display cache [12:30:09] [PUSH_EMBED] Saved evolution data for message 18815 [12:30:09] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [12:30:09] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [12:30:09] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [12:30:09] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 18815, AnyHashable("session_id"): ILUIWU] [12:30:09] [PUSH] Parsed message_id: 18815 [12:30:09] [PUSH] Parsed operation_type: 3 [12:30:09] [PUSH] Taking direct action: opType=3, messageId=18815 [12:30:09] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18815 [12:30:10] [CLIENT_SIG] Event received: type=3 messageId=18815 [12:30:10] [WS_EVENT] Received event: type=3, messageId=18815 [12:30:10] [WS_EVENT] Read receipt for message 18815 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [12:30:10] [PIN_AUTH] Correct PIN [12:30:10] [SECURITY] Restored real session: ILUIWU [12:30:10] [SECURITY] Restored real session: ILUIWU [12:30:10] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [12:30:10] [AUTH] Cache had 50 messages, maxExistingId=18815, inserted 0 truly new [12:30:10] [AUTH] UI update complete [12:30:10] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [12:30:10] [CLIENT_SIG] Already connected/connecting to session ILUIWU [12:30:10] [FAKE MODE] Exiting fake mode, restoring real session [12:30:10] [SECURITY] Restored real session: ILUIWU [12:30:10] [SECURITY] Saved real session: ILUIWU [12:30:10] [FAKE MODE] ✅ Restored real session: ILUIWU [12:30:10] [FAKE MODE] Loaded 50 messages (limited to page size) [12:30:10] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [12:30:10] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [12:30:10] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [12:30:10] [USER] ✅ User registered successfully [12:30:10] [PUSH] User registration after token update: success [12:30:11] [COMBINED_FETCH] Loaded 7581 read receipts, 915 messages with reactions [12:30:11] [FAKE MODE] Enriched 50 messages with readBy data [12:30:11] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [12:30:13] [LOCK] Lock button tapped - locking app immediately [12:30:13] [LOCK] Received lock app notification [12:30:14] [LIFECYCLE] App resigning active - cleared crash flag [12:30:15] [SECURITY] sceneDidEnterBackground - isAuthenticated=false [12:30:15] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false [12:30:15] [LIFECYCLE] App entering background - cleared crash flag [12:30:15] [CLIENT_SIG] Disconnecting [12:30:15] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [12:30:15] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [12:30:15] In cleanupPeer [12:30:15] In cleanupPeer [12:30:15] [LIFECYCLE] WebRTC audio disabled [12:30:15] [LIFECYCLE] AVAudioSession deactivated [12:30:15] [LIFECYCLE] All connections stopped [12:30:15] [CLIENT_SIG] WebSocket closed with code 1001 [12:30:15] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [12:30:15] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [12:30:15] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [12:30:15] [SERVER] Stopped reconnect polling [12:30:15] Will request stop of video 0 [12:30:15] Will request stop of video 0 [12:30:15] [PIP] Removing 0 tracks from PiP for connection 0 [12:30:15] [PIP] ✅ All tracks removed for connection 0 [12:30:15] [PIP] Removing 0 tracks from PiP for connection 0 [12:30:15] [PIP] ✅ All tracks removed for connection 0 [13:36:52] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [13:36:52] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:36:52] [LIFECYCLE] App entering foreground - restoring connections [13:36:52] [LIFECYCLE] Away > 2 minutes (3997s) - will scroll to bottom [13:36:52] [UPLOAD_RETRY] No pending uploads to retry [13:36:52] [LIFECYCLE] Merged 910 reactions from local DB [13:36:52] [LIFECYCLE] WebRTC audio re-enabled [13:36:52] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [13:36:52] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [13:36:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU [13:36:52] [VIEWER] Reconnecting after background - querying agents [13:36:52] [UNSENT_RETRY] Checking for unsent messages... [13:36:52] [PENDING_UPLOAD] Total pending upload messages: 0 [13:36:52] [UNSENT_RETRY] No unsent messages found [13:36:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU [13:36:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:36:53] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [13:36:53] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [13:36:53] [PUSH] handlePollEventsNotification userInfo: [:] [13:36:53] [PUSH] No message_id in userInfo [13:36:53] [PUSH] No operation_type in userInfo [13:36:53] [FAST_REFRESH] Evolution disabled - performing incremental sync [13:36:53] [FAST_REFRESH] Already have 50 messages - skipping local DB load [13:36:53] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [13:36:53] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [13:36:53] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50 [13:36:53] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815 [13:36:53] [CLIENT_SIG] WebSocket opened [13:36:53] [CLIENT_SIG] HELLO sent as client for session ILUIWU [13:36:53] [CLIENT_SIG] Connected! clientId=0EEXppKLrxjWoDyW [13:36:53] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU') [13:36:53] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:36:53] [INCREMENTAL_SYNC] ✅ No new messages [13:36:53] [FAST_REFRESH] Incremental sync complete - 50 messages [13:36:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:36:53] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions [13:36:53] [FOREGROUND] Enriched 0 messages with readBy data from server [13:36:53] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions [13:36:53] [FAST_REFRESH] Enriched 50 messages with readBy data [13:36:53] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [13:36:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770][13:36:54] [LOG] Pruned 230 entries older than 3 hours [13:36:54] [SECURITY] Restored real session: ILUIWU [13:36:54] [SECURITY] Restored real session: ILUIWU [13:36:54] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true [13:36:54] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [13:36:54] [AUTH] UI update complete [13:36:54] [FAKE MODE] Exiting fake mode, restoring real session [13:36:54] [SECURITY] Restored real session: ILUIWU [13:36:54] [SECURITY] Saved real session: ILUIWU [13:36:54] [FAKE MODE] ✅ Restored real session: ILUIWU [13:36:54] [FAKE MODE] Loaded 50 messages (limited to page size) [13:36:54] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [13:36:54] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [13:36:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:36:54] [USER] ✅ User registered successfully [13:36:54] [PUSH] User registration after token update: success [13:36:55] [COMBINED_FETCH] Loaded 7581 read receipts, 916 messages with reactions [13:36:55] [FAKE MODE] Enriched 50 messages with readBy data [13:36:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:36:57] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply [13:36:57] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false [13:36:57] [SEND_MESSAGE] ✅ Added optimistic message id=-25 to arrays, newMsgCount=51 [13:36:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-25, 18815, 18814, 18813, 18812] [13:36:57] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo [13:36:57] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured [13:36:58] [CLIENT_SIG] Event received: type=0 messageId=18816 [13:36:58] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18816,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-23 12:36:57"} [13:36:58] [WS_EVENT] Received event: type=0, messageId=18816 [13:36:58] [WS_EVENT] 📨 New message notification (msgId=18816) - triggering incremental refresh, currentMsgCount=51 [13:36:58] [CHAT] receive_message.php JSON: ["message_id": 18816, "message_type": 0, "ok": 1, "datesent_utc": 2026-01-23 12:36:57, "file_name": , "session_id": ILUIWU] [13:36:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51 [13:36:58] [DB_UPGRADE] Upgrading message ID: -25 → 18816, preserveOriginalDate=false [13:36:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18815 [13:36:58] [DB_UPGRADE] ✅ Upgraded -25 → 18816 with send_status=0, 1 row(s) affected [13:36:58] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -25 → 18816 [13:36:58] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -25 → 18816 [13:36:58] ReloadData 9 [13:36:58] [INCREMENTAL_SYNC] ✅ Found 1 new messages [13:36:58] [LOCK] Lock button tapped - locking app immediately [13:36:58] [LOCK] Received lock app notification [13:36:58] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [13:36:58] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51 [13:36:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:36:58] [LIFECYCLE] App resigning active - cleared crash flag [13:36:59] [SECURITY] sceneDidEnterBackground - isAuthenticated=false [13:36:59] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false [13:36:59] [LIFECYCLE] App entering background - cleared crash flag [13:36:59] [CLIENT_SIG] Disconnecting [13:36:59] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [13:36:59] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [13:36:59] In cleanupPeer [13:36:59] In cleanupPeer [13:36:59] [LIFECYCLE] WebRTC audio disabled [13:36:59] [LIFECYCLE] AVAudioSession deactivated [13:36:59] [LIFECYCLE] All connections stopped [13:37:00] [CLIENT_SIG] WebSocket closed with code 1001 [13:37:00] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1) [13:37:00] [SERVER] Stopped reconnect polling [13:37:00] Will request stop of video 0 [13:37:00] Will request stop of video 0 [13:37:00] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/} [13:37:00] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2) [13:37:00] [PIP] Removing 0 tracks from PiP for connection 0 [13:37:00] [PIP] ✅ All tracks removed for connection 0 [13:37:00] [PIP] Removing 0 tracks from PiP for connection 0 [13:37:00] [PIP] ✅ All tracks removed for connection 0 [13:38:34] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:38:34] [PUSH] Notification tapped - session_id: ILUIWU [13:38:34] [PUSH] Max message_id before tap: 18816 [13:38:34] [PUSH] Stored pending session: ILUIWU [13:38:34] [PUSH_EMBED] 📩 Received embedded message: id=18817, type=0, sender=Esra [13:38:34] [PUSH_EMBED] ✅ Saved message 18817 to local DB (sync) [13:38:34] [PUSH_EMBED] Created new cache with embedded message 18817 [13:38:34] [PUSH_EMBED] Fetching evolution data for message 18817 in background [13:38:34] [PUSH_EMBED] ✅ Fully processed message 18817 [13:38:34] [PUSH] Embedded message handled instantly on tap [13:38:34] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [13:38:34] [PUSH] Fetching server messages since_id=18816 to catch coalesced notifications on tap [13:38:34] [CLIENT_SIG] Already connected/connecting to session ILUIWU [13:38:34] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18816 to catch coalesced notifications [13:38:34] [PUSH_PRELOAD] Fetching messages for instant display cache [13:38:34] [LIFECYCLE] App entering foreground - restoring connections [13:38:34] [UPLOAD_RETRY] No pending uploads to retry [13:38:34] [LIFECYCLE] Merged 910 reactions from local DB [13:38:34] [LIFECYCLE] WebRTC audio re-enabled [13:38:34] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [13:38:34] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [13:38:34] [CLIENT_SIG] Already connected/connecting to session ILUIWU [13:38:34] [VIEWER] Reconnecting after background - querying agents [13:38:34] [UNSENT_RETRY] Checking for unsent messages... [13:38:34] [PENDING_UPLOAD] Total pending upload messages: 0 [13:38:34] [UNSENT_RETRY] No unsent messages found [13:38:34] [PUSH_UI] 🔔 handlePushMessageReceived CALLED [13:38:34] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0 [13:38:34] [PUSH_UI] Inserted message 18817 into UI (now 52 messages) [13:38:34] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [13:38:34] [PUSH_EMBED] Got evolution data for message 18817, saving to local DB [13:38:34] [PUSH_EMBED] Saved evolution data for message 18817 [13:38:34] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display [13:38:34] [PUSH_PRELOAD] ⚡ Pre-cached 1 messages for instant display (preserved 0 from push) [13:38:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [13:38:34] [PUSH] Server fetch on tap completed (success=true) [13:38:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): { datesent = "2026-01-23 12:38:29"; "file_name" = ""; message = "I didn\U2019t know I had so many options \Ud83d\Ude43"; "message_id" = 18817; "message_type" = 0; "prev_session_message_id" = 18816; "sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE"; "sender_name" = Esra; "session_id" = ILUIWU; timer = 0; }, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18817, AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 1; "content-available" = 1; sound = default; }] [13:38:34] [PUSH_EMBED_VC] Message 18817 already in memory - skipping [13:38:34] [PUSH] ⚡ Embedded message handled directly in ViewController [13:38:34] [PUSH] Parsed message_id: 18817 [13:38:34] [PUSH] Parsed operation_type: 0 [13:38:34] [PUSH] Taking direct action: opType=0, messageId=18817 [13:38:34] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18817 [13:38:34] [PUSH] ⚡ Message 18817 already in memory - skipping duplicate notification entirely [13:38:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18817, 18766, 18767, 18768, 18769] [13:38:34] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18816 → 18817 [13:38:34] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [13:38:34] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [13:38:34] [PUSH] handlePollEventsNotification userInfo: [:] [13:38:34] [PUSH] No message_id in userInfo [13:38:34] [PUSH] No operation_type in userInfo [13:38:34] [FAST_REFRESH] Evolution disabled - performing incremental sync [13:38:34] [FAST_REFRESH] Already have 52 messages - skipping local DB load [13:38:34] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true [13:38:34] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully [13:38:34] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [13:38:34] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18817 [13:38:34] [CLIENT_SIG] WebSocket opened [13:38:34] [CLIENT_SIG] HELLO sent as client for session ILUIWU [13:38:34] [CLIENT_SIG] Connected! clientId=KgmJIae2jJUv843M [13:38:34] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [13:38:34] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [13:38:34] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:38:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18817, 18766, 18767, 18768, 18769] [13:38:34] [INCREMENTAL_SYNC] ✅ No new messages [13:38:34] [FAST_REFRESH] Incremental sync complete - 52 messages [13:38:35] [CLIENT_SIG] Event received: type=0 messageId=18818 [13:38:35] [WS_EVENT] Received event: type=0, messageId=18818 [13:38:35] [WS_EVENT] 📨 New message notification (msgId=18818) - triggering incremental refresh, currentMsgCount=52 [13:38:35] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52 [13:38:35] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18817 [13:38:35] [INCREMENTAL_SYNC] ✅ Found 1 new messages [13:38:35] DOWNLOADIIING t_933944ecb2d8adc3.jpg [13:38:35] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1 [13:38:35] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53 [13:38:35] [COMBINED_FETCH] Loaded 7583 read receipts, 916 messages with reactions [13:38:35] [FOREGROUND] Enriched 2 messages with readBy data from server [13:38:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [13:38:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:35] [CELL_UPLOAD] → not my message, setting complete [13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:35] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18817 → 18818 [13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:35] [CELL_UPLOAD] → not my message, setting complete [13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:35] DOWNLOADIIING 933944ecb2d8adc3.heic [13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:35] [COMBINED_FETCH] Loaded 7583 read receipts, 916 messages with reactions [13:38:35] [FAST_REFRESH] Enriched 52 messages with readBy data [13:38:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18766, 18767, 18768, 18769, 18770] [13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:35] [CELL_UPLOAD] → not my message, setting complete [13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:35] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:35] [CELL_UPLOAD] → not my message, setting complete [13:38:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:36] [PUSH] Silent push received [13:38:36] [PUSH_EMBED] No embedded message_data in notification [13:38:36] [PUSH] No embedded data, pre-loading messages from server [13:38:36] [PUSH_PRELOAD] Fetching messages for instant display cache [13:38:36] [PUSH] Silent push received [13:38:36] [PUSH_EMBED] No embedded message_data in notification [13:38:36] [PUSH] No embedded data, pre-loading messages from server [13:38:36] [PUSH_PRELOAD] Fetching messages for instant display cache [13:38:36] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [13:38:36] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [13:38:36] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [13:38:36] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [13:38:36] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [13:38:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 18817, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3] [13:38:36] [PUSH] Parsed message_id: 18817 [13:38:36] [PUSH] Parsed operation_type: 3 [13:38:36] [PUSH] Taking direct action: opType=3, messageId=18817 [13:38:36] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18817 [13:38:36] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [13:38:36] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18817, AnyHashable("aps"): { "content-available" = 1; }] [13:38:36] [PUSH] Parsed message_id: 18817 [13:38:36] [PUSH] Parsed operation_type: 3 [13:38:36] [PUSH] Taking direct action: opType=3, messageId=18817 [13:38:36] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18817 [13:38:36] [CLIENT_SIG] Event received: type=3 messageId=18817 [13:38:36] [WS_EVENT] Received event: type=3, messageId=18817 [13:38:36] [WS_EVENT] Read receipt for message 18817 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:38:37] [PIN_AUTH] Correct PIN [13:38:37] [SECURITY] Restored real session: ILUIWU [13:38:37] [SECURITY] Restored real session: ILUIWU [13:38:37] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true [13:38:37] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler) [13:38:37] [AUTH] Cache had 50 messages, maxExistingId=18818, inserted 0 truly new [13:38:37] [AUTH] UI update complete [13:38:37] [FAKE MODE] Exiting fake mode, restoring real session [13:38:37] [SECURITY] Restored real session: ILUIWU [13:38:37] [SECURITY] Saved real session: ILUIWU [13:38:37] [FAKE MODE] ✅ Restored real session: ILUIWU [13:38:37] [FAKE MODE] Loaded 50 messages (limited to page size) [13:38:37] [PUSH] Silent push received [13:38:37] [PUSH_EMBED] No embedded message_data in notification [13:38:37] [PUSH] No embedded data, pre-loading messages from server [13:38:37] [PUSH_PRELOAD] Fetching messages for instant display cache [13:38:37] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:37] [CELL_UPLOAD] → not my message, setting complete [13:38:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773] [13:38:37] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:37] [CELL_UPLOAD] → not my message, setting complete [13:38:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:38] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [13:38:38] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [13:38:38] [CLIENT_SIG] Event received: type=3 messageId=18818 [13:38:38] [WS_EVENT] Received event: type=3, messageId=18818 [13:38:38] [WS_EVENT] Read receipt for message 18818 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:38:38] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-23 12:38:38 +0000 - type: unknown, operation_type: 0, message_id: 18818, session_id: ILUIWU, state: 0 [13:38:38] [PUSH_DEBUG] Full userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818] [13:38:38] [PUSH] App active - suppressing notification UI, posting internal event [13:38:38] [PUSH_EMBED] No embedded message_data in notification [13:38:38] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818] [13:38:38] [PUSH] Parsed message_id: 18818 [13:38:38] [PUSH] Parsed operation_type: 0 [13:38:38] [PUSH] Taking direct action: opType=0, messageId=18818 [13:38:38] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18818 [13:38:38] [PUSH] ⚡ Message 18818 already in memory - skipping duplicate notification entirely [13:38:38] [PUSH] Silent push received [13:38:38] [PUSH_EMBED] No embedded message_data in notification [13:38:38] [PUSH] No embedded data, pre-loading messages from server [13:38:38] [PUSH_PRELOAD] Fetching messages for instant display cache [13:38:38] [USER] ✅ User registered successfully [13:38:38] [PUSH] User registration after token update: success [13:38:38] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [13:38:38] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [13:38:38] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [13:38:38] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): { "content-available" = 1; }, AnyHashable("message_id"): 18818] [13:38:38] [PUSH] Parsed message_id: 18818 [13:38:38] [PUSH] Parsed operation_type: 3 [13:38:38] [PUSH] Taking direct action: opType=3, messageId=18818 [13:38:38] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18818 [13:38:38] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display [13:38:39] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push) [13:38:39] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails [13:38:39] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): { alert = { body = "New message received"; title = Eye; }; badge = 0; "content-available" = 1; sound = default; }, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18818] [13:38:39] [PUSH] Parsed message_id: 18818 [13:38:39] [PUSH] Parsed operation_type: 0 [13:38:39] [PUSH] Taking direct action: opType=0, messageId=18818 [13:38:39] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18818 [13:38:39] [PUSH] ⚡ Message 18818 already in memory - skipping duplicate notification entirely [13:38:39] [COMBINED_FETCH] Loaded 7584 read receipts, 916 messages with reactions [13:38:39] [FAKE MODE] Enriched 50 messages with readBy data [13:38:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773] [13:38:39] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:39] [CELL_UPLOAD] → not my message, setting complete [13:38:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:38:39] [MENU] dismissAnyExistingMenu called [13:38:39] [MENU] dismissAnyExistingMenu completed [13:38:46] [LOG] Long press on chat icon detected! Triggering log upload... [13:38:50] [LOG] Uploading log as '2026-01-23-13-38-media-unavailable-Laurent.log' (288 KB) to server... [13:38:51] [LOG] Upload HTTP status: 200 [13:38:51] [LOG] Upload successful: 2026-01-23-13-38-media-unavailable-Laurent.log [13:38:51] [LOG] Skipping cross-device log request (description doesn't end with '2') [13:38:53] [MENU] dismissAnyExistingMenu called [13:38:53] [MENU] dismissAnyExistingMenu completed [13:38:53] [SCROLL_BTN] Showing button - 395pt from bottom > half 379pt [13:38:54] [MENU] dismissAnyExistingMenu called [13:38:54] [MENU] dismissAnyExistingMenu completed [13:38:55] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:38:55] [CELL_UPLOAD] → not my message, setting complete [13:38:55] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:02] [LIFECYCLE] App resigning active - cleared crash flag [13:39:03] [SECURITY] sceneDidEnterBackground - isAuthenticated=true [13:39:03] [SECURITY] Saved background timestamp [13:39:03] [LIFECYCLE] App entering background - cleared crash flag [13:39:03] [CLIENT_SIG] Disconnecting [13:39:03] [LIFECYCLE] App entering background - disconnecting connections and stopping audio [13:39:03] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1 [13:39:03] In cleanupPeer [13:39:03] In cleanupPeer [13:39:04] [CRASH] No crash detected [13:39:04] [FONT] Roboto fonts loaded successfully: Roboto-Regular [13:39:04] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto [13:39:04] [GIPHY] SDK not available - using REST API fallback [13:39:04] [BACKGROUND] Background fetch enabled [13:39:04] [CLEANUP] No old timer messages to delete [13:39:04] [SECURITY] Initial launch - within timeout (1.3719730377197266s < 300.0s) [13:39:04] [AUTH] Starting PIN authentication [13:39:04] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU [13:39:04] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:39:04] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c [13:39:04] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0} [13:39:04] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [13:39:04] [USER] ✅ User registered successfully [13:39:04] [PUSH] User registration after token update: success [13:39:04] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false [13:39:04] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow [13:39:04] [CLIENT_SIG] WebSocket opened [13:39:04] [CLIENT_SIG] HELLO sent as client for session ILUIWU [13:39:04] [CLIENT_SIG] Connected! clientId=utKhvAsVJm--jwbJ [13:39:04] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU') [13:39:04] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) [13:39:04] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF) [13:39:04] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18818)... [13:39:04] [PRELOAD] No messages or parse error [13:39:06] [PIN_AUTH] Correct PIN [13:39:06] [SECURITY] Restored real session: ILUIWU [13:39:06] [SECURITY] Restored real session: ILUIWU [13:39:06] [SECURITY] Saved real session: ILUIWU [13:39:06] [SCENE] Launched directly to chat view with sessionId: ILUIWU [13:39:06] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone) [13:39:06] Documents Directory: /var/mobile/Containers/Data/Application/75035B73-3F30-4A91-A570-8F3EEDE21803/Documents [13:39:06] [UPLOAD_QUEUE] Found 0 pending uploads to resume [13:39:06] [THEME] Applying current theme [13:39:06] [CHAT] Applied day theme (mode: day) [13:39:06] [SECURITY] Saved real session: ILUIWU [13:39:06] [CLIENT_SIG] Setting up client signaling for session: ILUIWU [13:39:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU [13:39:06] [NETWORK] Network monitor started [13:39:06] [NETWORK] Status changed: connected [13:39:06] Did transition [13:39:06] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU [13:39:06] [VIEWER] Screen lock enabled - normal idle behavior [13:39:06] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU [13:39:06] [VCC] ========== VideoConnectionClass INIT ========== [13:39:06] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil [13:39:06] [DATA AUDIO] ========== setupWebRTC() START ========== [13:39:06] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device [13:39:06] [DATA AUDIO] Creating encoder/decoder factories... [13:39:06] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1 [13:39:06] [CODEC] Viewer selected encoder: AV1 (best quality) [13:39:06] [DATA AUDIO] Creating RTCPeerConnectionFactory... [13:39:06] [DATA AUDIO] ✅ Factory created [13:39:06] [DATA AUDIO] RTCAudioSession locked [13:39:06] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false [13:39:06] [DATA AUDIO] RTCAudioSession unlocked [13:39:06] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer [13:39:06] [VCC] Initial ICE servers: ["stun:stun.l.google.com:19302", "turn:crivello.dyndns.org:3478?transport=udp", "turn:crivello.dyndns.org:3478?transport=tcp", "turns:crivello.dyndns.org:5349?transport=tcp"] [13:39:06] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU [13:39:06] [WS] Opening session at ws://crivello.dyndns.org:8081/ [13:39:06] [QUERY] ✅ tempQueryConnection created for iosILUIWU [13:39:06] [VIEWER_INIT] Already have 50 messages - just filtering for tab [13:39:06] [EVENT_POLL] Event polling disabled - using WebSocket events instead [13:39:06] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0 [13:39:06] Did transition [13:39:06] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0) [13:39:06] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent [13:39:06] [CHUNK] Merged 910 reactions synchronously [13:39:06] [RELOAD_TAB] ⏳ Already pending, waiting for debounce [13:39:06] [GALLERY_DB] Loading ALL media messages for session: ILUIWU [13:39:06] [MIGRATION] No messages need sender_name backfill [13:39:06] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50 [13:39:06] [GALLERY_DB] Raw datesent for msg 18818: '2026-01-23 12:38:35' [13:39:06] [GALLERY_DB] Raw datesent for msg 18788: '2026-01-23 08:03:10' [13:39:06] [GALLERY_DB] Raw datesent for msg 18774: '2026-01-23 07:20:49' [13:39:06] [USER] ✅ User registered successfully [13:39:06] [USER] User registration successful [13:39:06] [GALLERY_DB] ✅ Loaded 488 media messages [13:39:06] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18818 [13:39:06] [INCREMENTAL_SYNC] ✅ No new messages [13:39:06] [GALLERY] Filtered 488 -> 447 (only with local thumbnails) [13:39:06] [GALLERY] First 5 after sort (newest first): [13:39:06] [GALLERY] 0: id=18788, date=2026-01-23 08:03:10, file=e3001af1e96aeb72.jpg [13:39:06] [GALLERY] 1: id=18774, date=2026-01-23 07:20:49, file=04b759bdc230eb2c.jpg [13:39:06] [GALLERY] 2: id=18772, date=2026-01-23 07:20:17, file=c50bfdf58c1dbca1.jpg [13:39:06] [GALLERY] 3: id=18766, date=2026-01-23 01:00:51, file=50454b71bb7535b3.png [13:39:06] [GALLERY] 4: id=18747, date=2026-01-22 16:16:30, file=17758c02b0ac471a.jpg [13:39:06] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt [13:39:06] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773] [13:39:06] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings [13:39:06] [CELL_UPLOAD] configure: msgId=18772, file=c50bfdf58c1dbca1.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:39:06] [CELL_UPLOAD] → not my message, setting complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=c50bfdf58c1dbca1.jpg, overlayExists=true [13:39:06] [CELL_UPLOAD] configure: msgId=18774, file=04b759bdc230eb2c.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0 [13:39:06] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=04b759bdc230eb2c.jpg, overlayExists=true [13:39:06] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:39:06] [CELL_UPLOAD] → not my message, setting complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:06] [SERVER] Starting reconnect polling (5s interval) [13:39:06] [ICONS] Screen width: 440.0, Tab spacing: 75.5 [13:39:06] [ICONS] Offset applied: -14.6 [13:39:06] [ICONS] New left margin: 11.2, New right margin: 11.3 [13:39:06] [ICONS] Chat center: (31.2, 87.0) [13:39:06] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5 [13:39:06] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5 [13:39:06] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5 [13:39:06] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5 [13:39:06] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5 [13:39:06] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2 [13:39:06] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3 [13:39:06] [ICONS] Screen width: 440.0 [13:39:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU [13:39:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [13:39:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/ [13:39:06] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU [13:39:06] DOWNLOADIIING t_933944ecb2d8adc3.jpg [13:39:06] DOWNLOADIIING 933944ecb2d8adc3.heic [13:39:06] [PURGE] ⚠️ Media cache purge DISABLED for debugging [13:39:06] [UNSENT_RETRY] Checking for unsent messages... [13:39:06] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ========== [13:39:06] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF [13:39:06] [UPLOAD_RECOVERY] Session: ILUIWU [13:39:06] [UPLOAD_RECOVERY] ✅ No stuck uploads found [13:39:06] [UPLOAD_RECOVERY] Checking recent media messages on server... [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18774, file=04b759bdc230eb2c.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18747, file=17758c02b0ac471a.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18661, file=fca62dfbaa62895a.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18622, file=87d86493734492b6.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18578, file=6987f51080ccbfa1.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18569, file=61efa5413baa75e8.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18547, file=bb6aaa84326f734e.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18510, file=b3cad86fff0afa3d.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18507, file=e8d737bd34c51935.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18501, file=74c06e97f0a4db49.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18489, file=747d4f2026039fc3.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18428, file=f36a462089f1685a.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18409, file=f733dc0a9f704916.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18407, file=7494d317859e38fb.jpg, upload_status=complete [13:39:06] [UPLOAD_RECOVERY] Verifying 14 media files exist on server... [13:39:06] [PENDING_UPLOAD] Total pending upload messages: 0 [13:39:06] [UNSENT_RETRY] No unsent messages found [13:39:06] [MEDIA_DOWNLOAD] ✅ t_933944ecb2d8adc3.jpg complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:06] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 933944ecb2d8adc3.heic from downloaded: t_933944ecb2d8adc3.jpg [13:39:06] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:39:06] [CELL_UPLOAD] → not my message, setting complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:06] new_session POST ok: token len=157 [13:39:06] HELLO → sent (fetched token, role=query) [13:39:06] [SIG] hello_ok received for query connection - ready to query agents [13:39:06] [SIG] get_agents request sent for sessionId=ILUIWU [13:39:06] [SIG] get_agents request sent for sessionId=iosILUIWU [13:39:06] [SERVER] Stopped reconnect polling [13:39:06] [SIG] agents_list received: [] [13:39:06] [SIG] agents_list received: [] [13:39:06] [UPLOAD_RECOVERY] ✅ All media files verified on server [13:39:06] [MEDIA_DOWNLOAD] ✅ 933944ecb2d8adc3.heic complete [13:39:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:06] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 933944ecb2d8adc3.heic from downloaded: 933944ecb2d8adc3.heic [13:39:07] [COMBINED_FETCH] Loaded 7584 read receipts, 916 messages with reactions [13:39:07] [READBY_ENRICH] Enriched 50 messages with readBy data [13:39:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18769, 18770, 18771, 18772, 18773] [13:39:07] [CELL_UPLOAD] configure: msgId=18818, file=933944ecb2d8adc3.heic, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0 [13:39:07] [CELL_UPLOAD] → not my message, setting complete [13:39:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=933944ecb2d8adc3.heic, overlayExists=true [13:39:07] [MENU] dismissAnyExistingMenu called [13:39:07] [MENU] dismissAnyExistingMenu completed [13:39:10] [LOG] Long press on chat icon detected! Triggering log upload... [13:39:10] [SCROLL_BTN] Showing button - 299pt from bottom > half 223pt