=== Eye Viewer Log Cleared at 2026-01-18 18:47:29 +0000 ===
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18173]
datesent = "2026-01-18 18:47:41";
"file_name" = "";
message = "Yes baby.but today, the cold gave me a migraine, after snowboarding, I spent the rest of the day dozing";
"message_id" = 18174;
"message_type" = 0;
"prev_session_message_id" = 18173;
"replied_message" = "What are you 8 doing in evenings ? Talk mainly ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18169;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-18 18:47:41";
"file_name" = "";
message = "Yes baby.but today, the cold gave me a migraine, after snowboarding, I spent the rest of the day dozing";
"message_id" = 18174;
"message_type" = 0;
"prev_session_message_id" = 18173;
"replied_message" = "What are you 8 doing in evenings ? Talk mainly ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18169;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18175]
"content-available" = 1;
}, AnyHashable("message_id"): 18177, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18179, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18180, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18188, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18189, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18185, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18186, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18187, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU][07:32:23] [LOG] Pruned 3454 entries older than 3 hours
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18196, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18203, AnyHashable("message_data"): {
datesent = "2026-01-19 09:49:35";
"file_name" = "";
message = "Hi babyyy\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
"message_id" = 18203;
"message_type" = 0;
"prev_session_message_id" = 18202;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 09:49:35";
"file_name" = "";
message = "Hi babyyy\Ud83e\Udd70\Ud83e\Udd70\Ud83e\Udd70";
"message_id" = 18203;
"message_type" = 0;
"prev_session_message_id" = 18202;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18203, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 09:49:43";
"file_name" = "";
message = "Back to hotel";
"message_id" = 18204;
"message_type" = 0;
"prev_session_message_id" = 18203;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18204, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 09:49:43";
"file_name" = "";
message = "Back to hotel";
"message_id" = 18204;
"message_type" = 0;
"prev_session_message_id" = 18203;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18204, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 09:49:43";
"file_name" = "";
message = "Back to hotel";
"message_id" = 18204;
"message_type" = 0;
"prev_session_message_id" = 18203;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18204, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18204, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18205]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18206, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18207, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18207, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18207, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 09:50:22";
"file_name" = "";
message = "It was slow morning for me \Ud83d\Ude43";
"message_id" = 18208;
"message_type" = 0;
"prev_session_message_id" = 18207;
"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-19 09:50:22";
"file_name" = "";
message = "It was slow morning for me \Ud83d\Ude43";
"message_id" = 18208;
"message_type" = 0;
"prev_session_message_id" = 18207;
"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-19 09:50:22";
"file_name" = "";
message = "It was slow morning for me \Ud83d\Ude43";
"message_id" = 18208;
"message_type" = 0;
"prev_session_message_id" = 18207;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18208, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 09:50:29";
"file_name" = "";
message = "For lunch babyy";
"message_id" = 18209;
"message_type" = 0;
"prev_session_message_id" = 18208;
"replied_message" = "Or just having lunch here ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18206;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18209, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 09:50:29";
"file_name" = "";
message = "For lunch babyy";
"message_id" = 18209;
"message_type" = 0;
"prev_session_message_id" = 18208;
"replied_message" = "Or just having lunch here ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18206;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18209, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 09:50:29";
"file_name" = "";
message = "For lunch babyy";
"message_id" = 18209;
"message_type" = 0;
"prev_session_message_id" = 18208;
"replied_message" = "Or just having lunch here ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18206;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18209, AnyHashable("session_id"): ILUIWU, 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("message_id"): 18213, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 14:57:32";
"file_name" = "";
message = "\Ud83e\Udd70";
"message_id" = 18213;
"message_type" = 0;
"prev_session_message_id" = 18212;
"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"): 18213, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 14:57:32";
"file_name" = "";
message = "\Ud83e\Udd70";
"message_id" = 18213;
"message_type" = 0;
"prev_session_message_id" = 18212;
"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 = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 14:57:38";
"file_name" = "";
message = "Sorry for my silence baby";
"message_id" = 18214;
"message_type" = 0;
"prev_session_message_id" = 18213;
"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 = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 14:57:38";
"file_name" = "";
message = "Sorry for my silence baby";
"message_id" = 18214;
"message_type" = 0;
"prev_session_message_id" = 18213;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 14:57:38";
"file_name" = "";
message = "Sorry for my silence baby";
"message_id" = 18214;
"message_type" = 0;
"prev_session_message_id" = 18213;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18213, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}]
datesent = "2026-01-19 14:57:42";
"file_name" = "";
message = "I was sleeping \Ud83e\Udd72";
"message_id" = 18215;
"message_type" = 0;
"prev_session_message_id" = 18214;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18215, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-19 14:57:42";
"file_name" = "";
message = "I was sleeping \Ud83e\Udd72";
"message_id" = 18215;
"message_type" = 0;
"prev_session_message_id" = 18214;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18215, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 14:57:42";
"file_name" = "";
message = "I was sleeping \Ud83e\Udd72";
"message_id" = 18215;
"message_type" = 0;
"prev_session_message_id" = 18214;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18215]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18217, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 14:58:08";
"file_name" = "";
message = Nopee;
"message_id" = 18219;
"message_type" = 0;
"prev_session_message_id" = 18218;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18219, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 14:58:08";
"file_name" = "";
message = Nopee;
"message_id" = 18219;
"message_type" = 0;
"prev_session_message_id" = 18218;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18219, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 14:58:08";
"file_name" = "";
message = Nopee;
"message_id" = 18219;
"message_type" = 0;
"prev_session_message_id" = 18218;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18219, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18217,"event_type":2}
datesent = "2026-01-19 14:58:20";
"file_name" = "";
message = "I didn\U2019t feel very well";
"message_id" = 18220;
"message_type" = 0;
"prev_session_message_id" = 18219;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18220, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-19 14:58:20";
"file_name" = "";
message = "I didn\U2019t feel very well";
"message_id" = 18220;
"message_type" = 0;
"prev_session_message_id" = 18219;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18220, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18220, AnyHashable("message_data"): {
datesent = "2026-01-19 14:58:20";
"file_name" = "";
message = "I didn\U2019t feel very well";
"message_id" = 18220;
"message_type" = 0;
"prev_session_message_id" = 18219;
"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"): 18217]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18220]
datesent = "2026-01-19 14:58:26";
"file_name" = "";
message = "The weather was -17";
"message_id" = 18221;
"message_type" = 0;
"prev_session_message_id" = 18220;
"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"): 18221]
datesent = "2026-01-19 14:58:26";
"file_name" = "";
message = "The weather was -17";
"message_id" = 18221;
"message_type" = 0;
"prev_session_message_id" = 18220;
"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"): 18221]
datesent = "2026-01-19 14:58:26";
"file_name" = "";
message = "The weather was -17";
"message_id" = 18221;
"message_type" = 0;
"prev_session_message_id" = 18220;
"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"): 18221]
"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-19 14:58:33";
"file_name" = "";
message = "\Ud83e\Udd76\Ud83e\Udd76";
"message_id" = 18222;
"message_type" = 0;
"prev_session_message_id" = 18221;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18222]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 14:58:33";
"file_name" = "";
message = "\Ud83e\Udd76\Ud83e\Udd76";
"message_id" = 18222;
"message_type" = 0;
"prev_session_message_id" = 18221;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18222]
datesent = "2026-01-19 14:58:33";
"file_name" = "";
message = "\Ud83e\Udd76\Ud83e\Udd76";
"message_id" = 18222;
"message_type" = 0;
"prev_session_message_id" = 18221;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18224, 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"): 18225, AnyHashable("message_data"): {
datesent = "2026-01-19 14:58:55";
"file_name" = "";
message = "Absofuckinglutely \Ud83e\Udd13";
"message_id" = 18225;
"message_type" = 0;
"prev_session_message_id" = 18224;
"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"): 18225, AnyHashable("message_data"): {
datesent = "2026-01-19 14:58:55";
"file_name" = "";
message = "Absofuckinglutely \Ud83e\Udd13";
"message_id" = 18225;
"message_type" = 0;
"prev_session_message_id" = 18224;
"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"): 18225, AnyHashable("message_data"): {
datesent = "2026-01-19 14:58:55";
"file_name" = "";
message = "Absofuckinglutely \Ud83e\Udd13";
"message_id" = 18225;
"message_type" = 0;
"prev_session_message_id" = 18224;
"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"): 18225, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 14:59:02";
"file_name" = "";
message = "Yes my looove\U2665\Ufe0f";
"message_id" = 18226;
"message_type" = 0;
"prev_session_message_id" = 18225;
"replied_message" = "Feeling better now ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18224;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18226]
datesent = "2026-01-19 14:59:02";
"file_name" = "";
message = "Yes my looove\U2665\Ufe0f";
"message_id" = 18226;
"message_type" = 0;
"prev_session_message_id" = 18225;
"replied_message" = "Feeling better now ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18224;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18226]
datesent = "2026-01-19 14:59:02";
"file_name" = "";
message = "Yes my looove\U2665\Ufe0f";
"message_id" = 18226;
"message_type" = 0;
"prev_session_message_id" = 18225;
"replied_message" = "Feeling better now ?";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18224;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18226]
"content-available" = 1;
}, AnyHashable("message_id"): 18226]
"content-available" = 1;
}, AnyHashable("message_id"): 18227]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18228, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:07";
"file_name" = "";
message = "How is your day going baby";
"message_id" = 18228;
"message_type" = 0;
"prev_session_message_id" = 18227;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18228, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:07";
"file_name" = "";
message = "How is your day going baby";
"message_id" = 18228;
"message_type" = 0;
"prev_session_message_id" = 18227;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18228, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:07";
"file_name" = "";
message = "How is your day going baby";
"message_id" = 18228;
"message_type" = 0;
"prev_session_message_id" = 18227;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18230, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18231, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:32";
"file_name" = "";
message = "\Ud83e\Udd2d";
"message_id" = 18231;
"message_type" = 0;
"prev_session_message_id" = 18230;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18231, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:32";
"file_name" = "";
message = "\Ud83e\Udd2d";
"message_id" = 18231;
"message_type" = 0;
"prev_session_message_id" = 18230;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18231, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 14:59:32";
"file_name" = "";
message = "\Ud83e\Udd2d";
"message_id" = 18231;
"message_type" = 0;
"prev_session_message_id" = 18230;
"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]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18234, AnyHashable("message_data"): {
datesent = "2026-01-19 15:00:48";
"file_name" = "";
message = "Ha ha no\Ud83e\Udd23";
"message_id" = 18234;
"message_type" = 0;
"prev_session_message_id" = 18233;
"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"): 18234, AnyHashable("message_data"): {
datesent = "2026-01-19 15:00:48";
"file_name" = "";
message = "Ha ha no\Ud83e\Udd23";
"message_id" = 18234;
"message_type" = 0;
"prev_session_message_id" = 18233;
"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-19 15:00:48";
"file_name" = "";
message = "Ha ha no\Ud83e\Udd23";
"message_id" = 18234;
"message_type" = 0;
"prev_session_message_id" = 18233;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18234, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("message_id"): 18234, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 15:00:55";
"file_name" = "";
message = "I couldn\U2019t find same pattern";
"message_id" = 18235;
"message_type" = 0;
"prev_session_message_id" = 18234;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 15:00:55";
"file_name" = "";
message = "I couldn\U2019t find same pattern";
"message_id" = 18235;
"message_type" = 0;
"prev_session_message_id" = 18234;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 15:00:55";
"file_name" = "";
message = "I couldn\U2019t find same pattern";
"message_id" = 18235;
"message_type" = 0;
"prev_session_message_id" = 18234;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18235, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"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-19 15:00:59";
"file_name" = "";
message = "\Ud83e\Udd2a\Ud83e\Udd2a";
"message_id" = 18236;
"message_type" = 0;
"prev_session_message_id" = 18235;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18236, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 15:00:59";
"file_name" = "";
message = "\Ud83e\Udd2a\Ud83e\Udd2a";
"message_id" = 18236;
"message_type" = 0;
"prev_session_message_id" = 18235;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18236, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_data"): {
datesent = "2026-01-19 15:00:59";
"file_name" = "";
message = "\Ud83e\Udd2a\Ud83e\Udd2a";
"message_id" = 18236;
"message_type" = 0;
"prev_session_message_id" = 18235;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18236, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18236, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18237, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 15:01:33";
"file_name" = "";
message = "We will leave at 10am baby, wont skiing";
"message_id" = 18238;
"message_type" = 0;
"prev_session_message_id" = 18237;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18238, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-19 15:01:33";
"file_name" = "";
message = "We will leave at 10am baby, wont skiing";
"message_id" = 18238;
"message_type" = 0;
"prev_session_message_id" = 18237;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18238, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
datesent = "2026-01-19 15:01:33";
"file_name" = "";
message = "We will leave at 10am baby, wont skiing";
"message_id" = 18238;
"message_type" = 0;
"prev_session_message_id" = 18237;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18238, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18239, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:01:57";
"file_name" = "";
message = "But we are planning to come again between feb 13-16";
"message_id" = 18239;
"message_type" = 0;
"prev_session_message_id" = 18238;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18239, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:01:57";
"file_name" = "";
message = "But we are planning to come again between feb 13-16";
"message_id" = 18239;
"message_type" = 0;
"prev_session_message_id" = 18238;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18239, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:01:57";
"file_name" = "";
message = "But we are planning to come again between feb 13-16";
"message_id" = 18239;
"message_type" = 0;
"prev_session_message_id" = 18238;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:02:05";
"file_name" = "";
message = "I hope we can make it";
"message_id" = 18241;
"message_type" = 0;
"prev_session_message_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18241, 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-19 15:02:05";
"file_name" = "";
message = "I hope we can make it";
"message_id" = 18241;
"message_type" = 0;
"prev_session_message_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18241, 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-19 15:02:05";
"file_name" = "";
message = "I hope we can make it";
"message_id" = 18241;
"message_type" = 0;
"prev_session_message_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18241, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18241, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18243, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18244, AnyHashable("message_data"): {
datesent = "2026-01-19 15:02:20";
"file_name" = "";
message = "Yes, morning was amazing";
"message_id" = 18244;
"message_type" = 0;
"prev_session_message_id" = 18243;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18244, AnyHashable("message_data"): {
datesent = "2026-01-19 15:02:20";
"file_name" = "";
message = "Yes, morning was amazing";
"message_id" = 18244;
"message_type" = 0;
"prev_session_message_id" = 18243;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18244, AnyHashable("message_data"): {
datesent = "2026-01-19 15:02:20";
"file_name" = "";
message = "Yes, morning was amazing";
"message_id" = 18244;
"message_type" = 0;
"prev_session_message_id" = 18243;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18244, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18245, AnyHashable("session_id"): ILUIWU]
datesent = "2026-01-19 15:02:59";
"file_name" = "";
message = "I was the 1st person on black slope\Ud83e\Udd2a\Ud83e\Udd23";
"message_id" = 18246;
"message_type" = 0;
"prev_session_message_id" = 18245;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"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"): 18246]
datesent = "2026-01-19 15:02:59";
"file_name" = "";
message = "I was the 1st person on black slope\Ud83e\Udd2a\Ud83e\Udd23";
"message_id" = 18246;
"message_type" = 0;
"prev_session_message_id" = 18245;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"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"): 18246]
datesent = "2026-01-19 15:02:59";
"file_name" = "";
message = "I was the 1st person on black slope\Ud83e\Udd2a\Ud83e\Udd23";
"message_id" = 18246;
"message_type" = 0;
"prev_session_message_id" = 18245;
"replied_message" = "Oh. Then that was it \Ud83d\Ude22 Less crowded I hope today";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18240;
"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"): 18246]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18247]
datesent = "2026-01-19 15:03:28";
"file_name" = "";
message = "Do I ?";
"message_id" = 18248;
"message_type" = 0;
"prev_session_message_id" = 18247;
"replied_message" = "At least you leave on a good note";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18245;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 15:03:28";
"file_name" = "";
message = "Do I ?";
"message_id" = 18248;
"message_type" = 0;
"prev_session_message_id" = 18247;
"replied_message" = "At least you leave on a good note";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18245;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 15:03:28";
"file_name" = "";
message = "Do I ?";
"message_id" = 18248;
"message_type" = 0;
"prev_session_message_id" = 18247;
"replied_message" = "At least you leave on a good note";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18245;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
"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_id"): 18250, AnyHashable("message_data"): {
datesent = "2026-01-19 15:03:52";
"file_name" = "";
message = "From this morning";
"message_id" = 18250;
"message_type" = 0;
"prev_session_message_id" = 18249;
"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_id"): 18250, AnyHashable("message_data"): {
datesent = "2026-01-19 15:03:52";
"file_name" = "";
message = "From this morning";
"message_id" = 18250;
"message_type" = 0;
"prev_session_message_id" = 18249;
"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_id"): 18250, AnyHashable("message_data"): {
datesent = "2026-01-19 15:03:52";
"file_name" = "";
message = "From this morning";
"message_id" = 18250;
"message_type" = 0;
"prev_session_message_id" = 18249;
"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;
}]
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]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18255]
"content-available" = 1;
}, AnyHashable("message_id"): 18254]
"content-available" = 1;
}, AnyHashable("message_id"): 18254]
"content-available" = 1;
}]
"LocalDataTask <998FAEE8-0D38-42DF-911F-A133038CA882>.<58>"
), 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}
"content-available" = 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("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 15:11:55";
"file_name" = "";
message = "https://www.instagram.com/reel/DTBCSosk8kX/?igsh=NDVyaWxkMWV5N3Y5";
"message_id" = 18258;
"message_type" = 0;
"prev_session_message_id" = 18257;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 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("message_id"): 18258, AnyHashable("message_data"): {
datesent = "2026-01-19 15:11:55";
"file_name" = "";
message = "https://www.instagram.com/reel/DTBCSosk8kX/?igsh=NDVyaWxkMWV5N3Y5";
"message_id" = 18258;
"message_type" = 0;
"prev_session_message_id" = 18257;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18259]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:26:59";
"file_name" = "";
message = "https://www.instagram.com/reel/DTqKgHVjFyt/?igsh=bTY4d2d1OGd2bTR5";
"message_id" = 18262;
"message_type" = 0;
"prev_session_message_id" = 18261;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18262, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 2;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 15:26:59";
"file_name" = "";
message = "https://www.instagram.com/reel/DTqKgHVjFyt/?igsh=bTY4d2d1OGd2bTR5";
"message_id" = 18262;
"message_type" = 0;
"prev_session_message_id" = 18261;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18262]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("message_id"): 18261]
datesent = "2026-01-19 15:27:09";
"file_name" = "";
message = "Im not ready for this\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72";
"message_id" = 18263;
"message_type" = 0;
"prev_session_message_id" = 18262;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0]
datesent = "2026-01-19 15:27:09";
"file_name" = "";
message = "Im not ready for this\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72";
"message_id" = 18263;
"message_type" = 0;
"prev_session_message_id" = 18262;
"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("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 15:27:09";
"file_name" = "";
message = "Im not ready for this\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72\Ud83e\Udd72";
"message_id" = 18263;
"message_type" = 0;
"prev_session_message_id" = 18262;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 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("operation_type"): 0, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-19 15:31:19";
"file_name" = "";
message = "Ha ha ha \Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18265;
"message_type" = 0;
"prev_session_message_id" = 18264;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18265]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18266, AnyHashable("message_data"): {
datesent = "2026-01-19 15:31:31";
"file_name" = "";
message = "Whyyyyyy\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18266;
"message_type" = 0;
"prev_session_message_id" = 18265;
"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_id"): 18266, AnyHashable("message_data"): {
datesent = "2026-01-19 15:31:31";
"file_name" = "";
message = "Whyyyyyy\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18266;
"message_type" = 0;
"prev_session_message_id" = 18265;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
datesent = "2026-01-19 15:31:31";
"file_name" = "";
message = "Whyyyyyy\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18266;
"message_type" = 0;
"prev_session_message_id" = 18265;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18266, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18266, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18267]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18268]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18268]
"content-available" = 1;
}, AnyHashable("message_id"): 18269, AnyHashable("session_id"): ILUIWU]
"LocalWebSocketTask <70A7FF7F-BAF0-47A9-8A4C-6927B614D4BC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <70A7FF7F-BAF0-47A9-8A4C-6927B614D4BC>.<1>}
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-19 15:33:32";
"file_name" = "";
message = "Do you like watching this kind of videos?";
"message_id" = 18270;
"message_type" = 0;
"prev_session_message_id" = 18269;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18270]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18270, AnyHashable("message_data"): {
datesent = "2026-01-19 15:33:32";
"file_name" = "";
message = "Do you like watching this kind of videos?";
"message_id" = 18270;
"message_type" = 0;
"prev_session_message_id" = 18269;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
── Body ──
{"ok":true,"message":"Message updated","session_id":"ILUIWU","message_id":18271,"event_type":2}
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18272, AnyHashable("session_id"): ILUIWU]
"LocalDataTask <79D770E1-D710-4754-B2D7-B4105B7AE22B>.<1>"
), NSLocalizedDescription=The Internet connection appears to be offline., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/register_device.php, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/register_device.php, _kCFStreamErrorDomainKey=1}
"LocalDataTask <4A9C3DCB-E603-45B5-9DDB-146E47EDAF12>.<7>"
), NSLocalizedDescription=The Internet connection appears to be offline., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF&since_id=18273, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF&since_id=18273, _kCFStreamErrorDomainKey=1}
datesent = "2026-01-19 20:08:05";
"file_name" = "";
message = "\U2665\Ufe0f";
"message_id" = 18274;
"message_type" = 0;
"prev_session_message_id" = 18273;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18274, AnyHashable("aps"): {
"content-available" = 1;
}]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18277, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18278, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18279]
"content-available" = 1;
}, AnyHashable("message_id"): 18280, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3][07:31:24] [LOG] Pruned 2055 entries older than 3 hours
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18285]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18285, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
"LocalWebSocketTask <11FDA715-EE17-4B97-99CA-A9CC90592816>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <11FDA715-EE17-4B97-99CA-A9CC90592816>.<1>}
datesent = "2026-01-20 06:36:13";
"file_name" = "";
message = "Nope baby, still at the hotel. Boarding will be in 1,5 hrs.";
"message_id" = 18293;
"message_type" = 0;
"prev_session_message_id" = 18292;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU]
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-20 06:36:13";
"file_name" = "";
message = "Nope baby, still at the hotel. Boarding will be in 1,5 hrs.";
"message_id" = 18293;
"message_type" = 0;
"prev_session_message_id" = 18292;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18293]
"content-available" = 1;
}, AnyHashable("message_id"): 18293, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
"LocalWebSocketTask <EFEF2D6E-2C2D-471B-A219-B9FABD809F7D>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <EFEF2D6E-2C2D-471B-A219-B9FABD809F7D>.<1>, NSLocalizedDescription=The network connection was lost.}
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18297]
datesent = "2026-01-20 13:26:28";
"file_name" = "";
message = "Landed!";
"message_id" = 18302;
"message_type" = 0;
"prev_session_message_id" = 18301;
"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"): 18302]
datesent = "2026-01-20 13:26:28";
"file_name" = "";
message = "Landed!";
"message_id" = 18302;
"message_type" = 0;
"prev_session_message_id" = 18301;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("message_id"): 18302]
"content-available" = 1;
}]
"LocalWebSocketTask <159D8E25-085A-4648-A6BB-D85BA7C1A111>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <159D8E25-085A-4648-A6BB-D85BA7C1A111>.<1>}
"LocalWebSocketTask <7BE800ED-85B5-498F-A1FF-CB1C26A804A5>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <7BE800ED-85B5-498F-A1FF-CB1C26A804A5>.<1>}
datesent = "2026-01-20 17:09:27";
"file_name" = "";
message = "I miss you\U2665\Ufe0f";
"message_id" = 18310;
"message_type" = 0;
"prev_session_message_id" = 18309;
"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;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18308, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18310, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}, AnyHashable("message_id"): 18314]
"content-available" = 1;
}, AnyHashable("message_id"): 18314, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU]
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("operation_type"): 1, AnyHashable("message_id"): 18314]
-- Response Headers --
Content-Type: application/json; charset=utf-8
Server: Apache/2.4.65 (Debian)
Content-Length: 67
Date: Tue, 20 Jan 2026 20:18:31 GMT
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
-- Body --
{"ok":true,"event_type":1,"message_id":18314,"session_id":"ILUIWU"}
"content-available" = 1;
}]
"content-available" = 1;
}, AnyHashable("message_id"): 18317, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3][06:52:29] [LOG] Pruned 2286 entries older than 3 hours
[06:52:29] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[06:52:29] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[06:52:29] [GIPHY] SDK not available - using REST API fallback
[06:52:29] [BACKGROUND] Background fetch enabled
[06:52:29] [AUTH] Starting PIN authentication
[06:52:29] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[06:52:29] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:52:29] [CLEANUP] No old timer messages to delete
[06:52:29] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[06:52:29] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[06:52:29] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[06:52:29] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[06:52:29] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[06:52:29] [USER] ✅ User registered successfully
[06:52:29] [PUSH] User registration after token update: success
[06:52:29] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18318)...
[06:52:29] [CLIENT_SIG] WebSocket opened
[06:52:29] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[06:52:29] [CLIENT_SIG] Connected! clientId=MyFGMAQsJuq0MvVW
[06:52:29] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[06:52:29] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:52:30] [PRELOAD] Fetched 1 messages
[06:52:30] [PRELOAD] ✅ Saved 1 messages to local DB
[06:52:30] [PRELOAD] ⚡ Cached 1 messages for instant display (preserved 0 from push)
[06:52:31] [PIN_AUTH] Correct PIN
[06:52:31] [SECURITY] Restored real session: ILUIWU
[06:52:31] [SECURITY] Restored real session: ILUIWU
[06:52:31] [SECURITY] Saved real session: ILUIWU
[06:52:31] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[06:52:31] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[06:52:31] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[06:52:31] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[06:52:31] [THEME] Applying current theme
[06:52:31] [CHAT] Applied day theme (mode: day)
[06:52:31] [SECURITY] Saved real session: ILUIWU
[06:52:31] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[06:52:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[06:52:31] [NETWORK] Network monitor started
[06:52:31] [NETWORK] Status changed: connected
[06:52:31] Did transition
[06:52:31] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[06:52:31] [VIEWER] Screen lock enabled - normal idle behavior
[06:52:31] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[06:52:31] [VCC] ========== VideoConnectionClass INIT ==========
[06:52:31] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[06:52:31] [DATA AUDIO] ========== setupWebRTC() START ==========
[06:52:31] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[06:52:31] [DATA AUDIO] Creating encoder/decoder factories...
[06:52:31] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[06:52:31] [CODEC] Viewer selected encoder: AV1 (best quality)
[06:52:31] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[06:52:31] [DATA AUDIO] ✅ Factory created
[06:52:31] [DATA AUDIO] RTCAudioSession locked
[06:52:31] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[06:52:31] [DATA AUDIO] RTCAudioSession unlocked
[06:52:31] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[06:52:31] [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"]
[06:52:31] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[06:52:31] [WS] Opening session at ws://crivello.dyndns.org:8081/
[06:52:31] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[06:52:31] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[06:52:31] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[06:52:31] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[06:52:31] Did transition
[06:52:31] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[06:52:31] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[06:52:31] [CHUNK] Merged 860 reactions synchronously
[06:52:31] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[06:52:31] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:52:31] [MIGRATION] No messages need sender_name backfill
[06:52:31] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[06:52:31] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:52:31] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:52:31] [GALLERY_DB] Raw datesent for msg 18306: '2026-01-20 16:30:15'
[06:52:31] [USER] ✅ User registered successfully
[06:52:31] [USER] User registration successful
[06:52:31] [GALLERY_DB] ✅ Loaded 467 media messages
[06:52:31] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18319
[06:52:31] [INCREMENTAL_SYNC] ✅ No new messages
[06:52:31] [GALLERY] Filtered 467 -> 427 (only with local thumbnails)
[06:52:31] [GALLERY] First 5 after sort (newest first):
[06:52:31] [GALLERY] 0: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:52:31] [GALLERY] 1: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:52:31] [GALLERY] 2: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:52:31] [GALLERY] 3: id=18285, date=2026-01-20 06:29:29, file=37654be40c253c4f.jpg
[06:52:31] [GALLERY] 4: id=18282, date=2026-01-20 01:00:49, file=5b09a034a7f26203.png
[06:52:31] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[06:52:31] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18269, 18270, 18271, 18272, 18273]
[06:52:31] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[06:52:31] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:31] [CELL_UPLOAD] → not my message, setting complete
[06:52:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:52:31] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18318 → 18319
[06:52:31] [SERVER] Starting reconnect polling (5s interval)
[06:52:31] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[06:52:31] [ICONS] Offset applied: -14.6
[06:52:31] [ICONS] New left margin: 11.2, New right margin: 11.3
[06:52:31] [ICONS] Chat center: (31.2, 87.0)
[06:52:31] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[06:52:31] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[06:52:31] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[06:52:31] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[06:52:31] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[06:52:31] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[06:52:31] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[06:52:31] [ICONS] Screen width: 440.0
[06:52:31] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[06:52:31] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[06:52:31] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[06:52:31] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[06:52:31] DOWNLOADIIING t_69cc52974ecff2d4.jpg
[06:52:31] DOWNLOADIIING 69cc52974ecff2d4.png
[06:52:31] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[06:52:31] [UNSENT_RETRY] Checking for unsent messages...
[06:52:31] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[06:52:31] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[06:52:31] [UPLOAD_RECOVERY] Session: ILUIWU
[06:52:31] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[06:52:31] [UPLOAD_RECOVERY] Checking recent media messages on server...
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[06:52:31] [UPLOAD_RECOVERY] Verifying 6 media files exist on server...
[06:52:31] [PENDING_UPLOAD] Total pending upload messages: 0
[06:52:31] [UNSENT_RETRY] No unsent messages found
[06:52:31] [MEDIA_DOWNLOAD] ✅ t_69cc52974ecff2d4.jpg complete
[06:52:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:52:31] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 69cc52974ecff2d4.png from downloaded: t_69cc52974ecff2d4.jpg
[06:52:31] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:31] [CELL_UPLOAD] → not my message, setting complete
[06:52:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:52:31] [UPLOAD_RECOVERY] ✅ All media files verified on server
[06:52:31] [MEDIA_DOWNLOAD] ✅ 69cc52974ecff2d4.png complete
[06:52:31] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:52:31] [MEDIA_DOWNLOAD] ✅ Set thumbnail for cell: 69cc52974ecff2d4.png from downloaded: 69cc52974ecff2d4.png
[06:52:31] new_session POST ok: token len=157
[06:52:31] HELLO → sent (fetched token, role=query)
[06:52:31] [SIG] hello_ok received for query connection - ready to query agents
[06:52:31] [SIG] get_agents request sent for sessionId=ILUIWU
[06:52:31] [SIG] get_agents request sent for sessionId=iosILUIWU
[06:52:31] [SERVER] Stopped reconnect polling
[06:52:31] [SIG] agents_list received: []
[06:52:31] [SIG] agents_list received: []
[06:52:32] [COMBINED_FETCH] Loaded 7085 read receipts, 856 messages with reactions
[06:52:32] [READBY_ENRICH] Enriched 50 messages with readBy data
[06:52:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18269, 18270, 18271, 18272, 18273]
[06:52:32] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:32] [CELL_UPLOAD] → not my message, setting complete
[06:52:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:52:33] [PUSH] Silent push received
[06:52:33] [PUSH_EMBED] No embedded message_data in notification
[06:52:33] [PUSH] No embedded data, pre-loading messages from server
[06:52:33] [PUSH_PRELOAD] Fetching messages for instant display cache
[06:52:33] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[06:52:33] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[06:52:33] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[06:52:33] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18319, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[06:52:33] [PUSH] Parsed message_id: 18319
[06:52:33] [PUSH] Parsed operation_type: 3
[06:52:33] [PUSH] Taking direct action: opType=3, messageId=18319
[06:52:33] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18319
[06:52:34] [MENU] dismissAnyExistingMenu called
[06:52:34] [MENU] dismissAnyExistingMenu completed
[06:52:34] [CELL_UPLOAD] configure: msgId=18312, file=077bf4aba425ab65.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:52:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=077bf4aba425ab65.jpg, overlayExists=true
[06:52:34] [CELL_UPLOAD] configure: msgId=18312, file=077bf4aba425ab65.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:52:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=077bf4aba425ab65.jpg, overlayExists=true
[06:52:34] [CLIENT_SIG] Event received: type=3 messageId=18319
[06:52:34] [WS_EVENT] Received event: type=3, messageId=18319
[06:52:34] [WS_EVENT] Read receipt for message 18319 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:52:36] [CAMERA] Switch-over factors: [2, 8]
[06:52:36] [CAMERA] Virtual device max zoom: 123.75
[06:52:36] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[06:52:36] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[06:52:36] [CAMERA] 2x: virtual device at zoom 4.0
[06:52:36] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[06:52:36] [CAMERA] 8x: virtual device at zoom 16.0
[06:52:36] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[06:52:36] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[06:52:36] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:36] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:36] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:36] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:36] [VOLUME] Starting volume button monitoring
[06:52:36] [VOLUME] Hidden MPVolumeView installed
[06:52:36] [VOLUME] Audio session active, initial volume: 0.65000004
[06:52:36] [VOLUME] Volume observation started
[06:52:36] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:36] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:37] [CAMERA] Configuring focus for Front Camera
[06:52:37] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[06:52:37] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[06:52:37] [CAMERA] Switched to continuous autofocus, lens position: 0.7058823
[06:52:38] View will transition
[06:52:38] [CAMERA] updateVideoOrientation - set to: 4 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[06:52:38] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 956.0, 280.0), camera: FRONT
[06:52:38] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[06:52:38] Did transition
[06:52:38] [CAMERA] updateVideoOrientation - set to: 4 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[06:52:38] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 836.0, 440.0), camera: FRONT
[06:52:41] [VOLUME] Volume changed from 0.65000004 to 0.7
[06:52:41] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[06:52:41] [HAPTIC] Triggering peek haptic for photo
[06:52:41] [VOLUME] Stopping volume button monitoring
[06:52:41] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:52:41] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:52:41] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:52:41] [GALLERY_DB] Raw datesent for msg 18306: '2026-01-20 16:30:15'
[06:52:41] [GALLERY_DB] ✅ Loaded 467 media messages
[06:52:42] [GALLERY] Filtered 467 -> 428 (only with local thumbnails)
[06:52:42] [GALLERY] First 5 after sort (newest first):
[06:52:42] [GALLERY] 0: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[06:52:42] [GALLERY] 1: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:52:42] [GALLERY] 2: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:52:42] [GALLERY] 3: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:52:42] [GALLERY] 4: id=18285, date=2026-01-20 06:29:29, file=37654be40c253c4f.jpg
[06:52:49] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:52:49] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:52:49] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:52:49] [GALLERY_DB] Raw datesent for msg 18306: '2026-01-20 16:30:15'
[06:52:49] [GALLERY_DB] ✅ Loaded 467 media messages
[06:52:49] [GALLERY] Filtered 467 -> 428 (only with local thumbnails)
[06:52:49] [GALLERY] First 5 after sort (newest first):
[06:52:49] [GALLERY] 0: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[06:52:49] [GALLERY] 1: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:52:49] [GALLERY] 2: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:52:49] [GALLERY] 3: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:52:49] [GALLERY] 4: id=18285, date=2026-01-20 06:29:29, file=37654be40c253c4f.jpg
[06:52:49] View will transition
[06:52:50] [CELL_UPLOAD] configure: msgId=18312, file=077bf4aba425ab65.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:52:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=077bf4aba425ab65.jpg, overlayExists=true
[06:52:50] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[06:52:50] Did transition
[06:52:51] [MENU] dismissAnyExistingMenu called
[06:52:51] [MENU] dismissAnyExistingMenu completed
[06:52:51] [CELL_UPLOAD] configure: msgId=18312, file=077bf4aba425ab65.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:52:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:52:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=077bf4aba425ab65.jpg, overlayExists=true
[06:52:52] [CAMERA] Switch-over factors: [2, 8]
[06:52:52] [CAMERA] Virtual device max zoom: 123.75
[06:52:52] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[06:52:52] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[06:52:52] [CAMERA] 2x: virtual device at zoom 4.0
[06:52:52] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[06:52:52] [CAMERA] 8x: virtual device at zoom 16.0
[06:52:52] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[06:52:52] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[06:52:52] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:52] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:52] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:52] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:52] [VOLUME] Starting volume button monitoring
[06:52:52] [VOLUME] Hidden MPVolumeView installed
[06:52:52] [VOLUME] Audio session active, initial volume: 0.65000004
[06:52:52] [VOLUME] Volume observation started
[06:52:52] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[06:52:52] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[06:52:53] [NETWORK] Status changed: connected
[06:52:53] [CAMERA] Configuring focus for Front Camera
[06:52:53] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[06:52:53] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[06:52:53] [NETWORK] Status changed: connected
[06:52:53] [CAMERA] Switched to continuous autofocus, lens position: 0.5803921
[06:52:54] [NETWORK] Status changed: connected
[06:52:55] [NETWORK] Status changed: connected
[06:52:55] [CAMERA] flipTapped - switching to: BACK
[06:52:55] [CAMERA] flipTapped - device: Back Triple Camera, activeFormat: 4032x3024
[06:52:55] [CAMERA] flipTapped - sessionPreset: AVCaptureSessionPresetPhoto
[06:52:55] [CAMERA] flipTapped - set initial zoom to 2.0
[06:52:55] [CAMERA] Configuring focus for Back Triple Camera
[06:52:55] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[06:52:55] [CAMERA] updateVideoOrientation - set to: 1 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[06:52:56] [NETWORK] Status changed: connected
[06:52:56] [CAMERA] Switched to continuous autofocus, lens position: 0.78039217
[06:52:57] [NETWORK] Status changed: connected
[06:52:59] View will transition
[06:52:59] [CAMERA] updateVideoOrientation - set to: 3 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[06:52:59] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 956.0, 280.0), camera: BACK
[06:52:59] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[06:52:59] Did transition
[06:52:59] [CAMERA] updateVideoOrientation - set to: 3 (1=portrait, 3=landscapeRight, 4=landscapeLeft)
[06:52:59] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 836.0, 440.0), camera: BACK
[06:53:07] [VOLUME] Volume changed from 0.65000004 to 0.6
[06:53:07] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[06:53:07] [HAPTIC] Triggering peek haptic for photo
[06:53:07] [VOLUME] Stopping volume button monitoring
[06:53:07] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:53:07] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:53:07] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:53:07] [GALLERY_DB] Raw datesent for msg 18306: '2026-01-20 16:30:15'
[06:53:07] [GALLERY_DB] ✅ Loaded 467 media messages
[06:53:07] [GALLERY] Filtered 467 -> 428 (only with local thumbnails)
[06:53:07] [GALLERY] First 5 after sort (newest first):
[06:53:07] [GALLERY] 0: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[06:53:07] [GALLERY] 1: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:53:07] [GALLERY] 2: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:53:07] [GALLERY] 3: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:53:07] [GALLERY] 4: id=18285, date=2026-01-20 06:29:29, file=37654be40c253c4f.jpg
[06:53:15] View will transition
[06:53:15] Did transition
[06:53:37] Chosen timer = 0
[06:53:37] [MEDIA_SEND] ========== NEW UPLOAD ==========
[06:53:37] [MEDIA_SEND] onSend called
[06:53:37] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/34B01539-AF88-4133-B36D-6F4AC9598731.jpg
[06:53:37] [MEDIA_SEND] Source file exists: true
[06:53:37] [MEDIA_SEND] Original filename: 34B01539-AF88-4133-B36D-6F4AC9598731.jpg
[06:53:37] [MEDIA_SEND] Random filename: 79f8421197610988.jpg
[06:53:37] [MEDIA_SEND] File extension: jpg
[06:53:37] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/79f8421197610988.jpg
[06:53:37] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_79f8421197610988.jpg
[06:53:37] [MEDIA_SEND] Source file size: 1702450 bytes (1.62 MB)
[06:53:37] [MEDIA_SEND] Copying file (<100MB)
[06:53:37] [MEDIA_SEND] File copied successfully
[06:53:37] [MEDIA_SEND] Destination file exists: true
[06:53:37] [MEDIA_SEND] Destination file size: 1702450 bytes
[06:53:37] [MEDIA_SEND] Creating thumbnail...
[06:53:37] [MEDIA_SEND] Thumbnail created in 0.03s
[06:53:37] [MEDIA_SEND] Thumbnail dimensions: (400.0, 300.0)
[06:53:37] [MEDIA_SEND] Thumbnail exists: true
[06:53:37] [MEDIA_SEND] Thumbnail file size: 8399 bytes
[06:53:37] [MEDIA_SEND] Sending message to server...
[06:53:37] [MEDIA_SEND] Caption: 'Good morning my love. Can't wake up !'
[06:53:37] [MEDIA_SEND] Timer: 0
[06:53:37] [MEDIA_SEND] Filename: 79f8421197610988.jpg
[06:53:37] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[06:53:37] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[06:53:37] [MEDIA_SEND] 📤 Creating media message: id=-1, file=79f8421197610988.jpg, isGiphy=false, upload_status=1 (pending)
[06:53:37] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[06:53:37] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[06:53:37] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18319, 18318, 18317, 18316]
[06:53:37] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:37] [CELL_UPLOAD] → not my message, setting complete
[06:53:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:37] [SCROLL_BTN] Showing button - 376pt from bottom > half 22pt
[06:53:37] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[06:53:37] [CELL_UPLOAD] configure: msgId=-1, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[06:53:37] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[06:53:37] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:37] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[06:53:37] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[06:53:37] [MEDIA_SEND] sendMessage API call completed
[06:53:37] [MEDIA_SEND] Starting THUMBNAIL upload: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[06:53:37] [UPLOAD_ENQUEUE] 📥 File: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[06:53:37] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[06:53:37] [UPLOAD_QUEUE] Enqueued upload id=609 for t_79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[06:53:37] [UPLOAD_DEBUG] Item ID: 609
[06:53:37] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] Random filename: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] Session ID: ILUIWU
[06:53:37] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[06:53:37] [UPLOAD_DEBUG] Retry count: 0
[06:53:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_79f8421197610988.jpg, status=uploading (2), progress=0.0%
[06:53:37] [UPLOAD_DEBUG] File exists: true
[06:53:37] [UPLOAD_DEBUG] File size: 8399 bytes (0.0 MB)
[06:53:37] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[06:53:37] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[06:53:37] [UPLOAD_DEBUG] --- startStandardUpload ---
[06:53:37] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[06:53:37] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:53:37] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[06:53:37] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/836ABD8D-29E0-4E17-8720-1D887F81FD70.upload
[06:53:37] [UPLOAD_DEBUG] File size: 8399 bytes, in-memory threshold: 10485760 bytes
[06:53:37] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[06:53:37] [GALLERY_DB] Raw datesent for msg -1: '2026-01-21 05:53:37'
[06:53:37] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:53:37] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:53:37] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (8881 bytes)
[06:53:37] [UPLOAD_DEBUG] Creating background upload task...
[06:53:37] [UPLOAD_DEBUG] Task created with identifier: 1
[06:53:37] [UPLOAD_DEBUG] Added to activeUploads dictionary
[06:53:37] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[06:53:37] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=1 | file=t_79f8421197610988.jpg | size=0.0MB | retries=0
[06:53:37] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[06:53:37] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[06:53:37] [UPLOAD_PROGRESS] t_79f8421197610988.jpg: 100% (0.0/0.0 MB) task=1
[06:53:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_79f8421197610988.jpg, status=uploading (2), progress=100.0%
[06:53:37] [GALLERY_DB] ✅ Loaded 468 media messages
[06:53:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18320,"session_id":"ILUIWU","message_type":1,"file_name":"79f8421197610988.jpg","datesent_utc":"2026-01-21 05:53:37"}
[06:53:37] [CHAT] receive_message.php JSON: ["message_type": 1, "ok": 1, "session_id": ILUIWU, "message_id": 18320, "file_name": 79f8421197610988.jpg, "datesent_utc": 2026-01-21 05:53:37]
[06:53:37] [DB_UPGRADE] Upgrading message ID: -1 → 18320, preserveOriginalDate=false
[06:53:37] [DB_UPGRADE] ✅ Upgraded -1 → 18320 with send_status=0, 1 row(s) affected
[06:53:37] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[06:53:37] [GALLERY] First 5 after sort (newest first):
[06:53:37] [GALLERY] 0: id=-1, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[06:53:37] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[06:53:37] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:53:37] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:53:37] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:53:37] [UPLOAD_RESPONSE] Started receiving response for task 1
[06:53:37] [UPLOAD_METRICS] Task 1 metrics:
[06:53:37] [UPLOAD_METRICS] Total time: 0.13s
[06:53:37] [UPLOAD_METRICS] Upload time: 0.00s
[06:53:37] [UPLOAD_METRICS] Response time: 0.00s
[06:53:37] [UPLOAD_METRICS] Network protocol: http/1.1
[06:53:37] [UPLOAD_METRICS] Proxy: no
[06:53:37] [UPLOAD_METRICS] Reused connection: no
[06:53:37] [UPLOAD_COMPLETE] ========== Task Completed ==========
[06:53:37] [UPLOAD_COMPLETE] Task ID: 1
[06:53:37] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[06:53:37] [UPLOAD_COMPLETE] Filename: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_79f8421197610988.jpg
[06:53:37] [UPLOAD_COMPLETE] Retry count: 0
[06:53:37] [UPLOAD_COMPLETE] HTTP Status: 200
[06:53:37] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Type"): application/json, AnyHashable("Date"): Wed, 21 Jan 2026 05:53:37 GMT, AnyHashable("Content-Length"): 215, AnyHashable("Server"): Apache/2.4.65 (Debian)]
[06:53:37] [UPLOAD_COMPLETE] Response body (215 bytes): {"ok":true,"file_name":"t_79f8421197610988.jpg","orig_name":"t_79f8421197610988.jpg","size":8399,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":8881}}
[06:53:37] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[06:53:37] [UPLOAD_COMPLETE] Server filename: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_VERIFY] Verifying file exists: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_VERIFY] ✅ File verified: t_79f8421197610988.jpg (size: 8399)
[06:53:37] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_79f8421197610988.jpg | id=609 | retries=0
[06:53:37] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[06:53:37] [UPLOAD_COMPLETE] ✅ File: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_COMPLETE] ✅ Queue ID: 609
[06:53:37] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[06:53:37] [UPLOAD_COMPLETE] ✅ Server filename: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[06:53:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_79f8421197610988.jpg, status=complete (0), progress=0.0%
[06:53:37] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=609
[06:53:37] [UPLOAD_STATUS] 📬 Received notification: file=t_79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_STATUS] 💾 Updating DB: file=t_79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_79f8421197610988.jpg not found in local_messages
[06:53:37] [UPLOAD_STATUS] 📬 Received notification: file=t_79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_STATUS] 💾 Updating DB: file=t_79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_79f8421197610988.jpg not found in local_messages
[06:53:37] [CLIENT_SIG] Event received: type=0 messageId=18320
[06:53:37] [WS_EVENT] Received event: type=0, messageId=18320
[06:53:37] [WS_EVENT] 📨 New message notification (msgId=18320) - triggering incremental refresh, currentMsgCount=51
[06:53:37] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[06:53:37] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18320
[06:53:37] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18320
[06:53:37] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18320
[06:53:37] ReloadData 9
[06:53:37] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:37] [CELL_UPLOAD] → not my message, setting complete
[06:53:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:37] [INCREMENTAL_SYNC] ✅ No new messages
[06:53:37] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[06:53:37] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[06:53:37] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:37] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[06:53:37] [UPLOAD_STATUS] 📬 Received notification: file=t_79f8421197610988.jpg, status=0 (complete)
[06:53:37] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_79f8421197610988.jpg
[06:53:37] [UPLOAD_STATUS] 💾 Updating DB: file=t_79f8421197610988.jpg, status=0 (complete)
[06:53:37] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_79f8421197610988.jpg not found in local_messages
[06:53:37] [MEDIA_SEND] Thumbnail uploaded successfully in 0.22s
[06:53:37] [MEDIA_SEND] Thumbnail server filename: t_79f8421197610988.jpg
[06:53:37] [MEDIA_SEND] Starting MAIN FILE upload: 79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[06:53:37] [UPLOAD_ENQUEUE] 📥 File: 79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/79f8421197610988.jpg
[06:53:37] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[06:53:37] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 1.6 MB
[06:53:37] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[06:53:37] [UPLOAD_QUEUE] Enqueued upload id=610 for 79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[06:53:37] [UPLOAD_DEBUG] Item ID: 610
[06:53:37] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] Random filename: 79f8421197610988.jpg
[06:53:37] [UPLOAD_DEBUG] Session ID: ILUIWU
[06:53:37] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[06:53:37] [UPLOAD_DEBUG] Retry count: 0
[06:53:37] [UPLOAD_NOTIFY] 📣 Posting notification: file=79f8421197610988.jpg, status=uploading (2), progress=0.0%
[06:53:37] [UPLOAD_STATUS] 📬 Received notification: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 1 → 2
[06:53:37] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[06:53:37] [UPLOAD_DEBUG] File exists: true
[06:53:37] [UPLOAD_STATUS] 💾 Updating DB: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:37] [UPLOAD_DEBUG] File size: 1702450 bytes (1.6 MB)
[06:53:37] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[06:53:37] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[06:53:37] [UPLOAD_DEBUG] --- startStandardUpload ---
[06:53:37] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[06:53:37] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[06:53:37] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/0561894D-7B85-4CCD-A0ED-19A37D5C3060.upload
[06:53:37] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=79f8421197610988.jpg
[06:53:37] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:37] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[06:53:37] [UPLOAD_DEBUG] File size: 1702450 bytes, in-memory threshold: 10485760 bytes
[06:53:37] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[06:53:37] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (1702926 bytes)
[06:53:37] [UPLOAD_DEBUG] Creating background upload task...
[06:53:37] [UPLOAD_DEBUG] Task created with identifier: 2
[06:53:37] [UPLOAD_DEBUG] Added to activeUploads dictionary
[06:53:37] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[06:53:37] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=2 | file=79f8421197610988.jpg | size=1.6MB | retries=0
[06:53:37] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[06:53:37] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[06:53:38] [UPLOAD_NOTIFY] 📣 Posting notification: file=79f8421197610988.jpg, status=uploading (2), progress=61.6%
[06:53:38] [UPLOAD_STATUS] 📬 Received notification: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:38] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[06:53:38] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[06:53:38] [UPLOAD_STATUS] 💾 Updating DB: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:38] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=79f8421197610988.jpg
[06:53:38] [MEDIA_SEND] Main upload progress: 61%
[06:53:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.615749598044777) for file=79f8421197610988.jpg, overlayExists=true
[06:53:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[06:53:38] [PROGRESS] Updated cell for 79f8421197610988.jpg: 61%
[06:53:38] [UPLOAD_PROGRESS] 79f8421197610988.jpg: 100% (1.6/1.6 MB) task=2
[06:53:38] [UPLOAD_NOTIFY] 📣 Posting notification: file=79f8421197610988.jpg, status=uploading (2), progress=100.0%
[06:53:38] [UPLOAD_STATUS] 📬 Received notification: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:38] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 2
[06:53:38] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=2
[06:53:38] [UPLOAD_STATUS] 💾 Updating DB: file=79f8421197610988.jpg, status=2 (uploading)
[06:53:38] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=79f8421197610988.jpg
[06:53:38] [MEDIA_SEND] Main upload progress: 100%
[06:53:38] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:38] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[06:53:38] [PROGRESS] Updated cell for 79f8421197610988.jpg: 100%
[06:53:40] [UPLOAD_RESPONSE] Started receiving response for task 2
[06:53:40] [UPLOAD_METRICS] Task 2 metrics:
[06:53:40] [UPLOAD_METRICS] Total time: 2.26s
[06:53:40] [UPLOAD_METRICS] Upload time: 0.30s
[06:53:40] [UPLOAD_METRICS] Response time: 0.00s
[06:53:40] [UPLOAD_METRICS] Network protocol: http/1.1
[06:53:40] [UPLOAD_METRICS] Proxy: no
[06:53:40] [UPLOAD_METRICS] Reused connection: yes
[06:53:40] [UPLOAD_COMPLETE] ========== Task Completed ==========
[06:53:40] [UPLOAD_COMPLETE] Task ID: 2
[06:53:40] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[06:53:40] [UPLOAD_COMPLETE] Filename: 79f8421197610988.jpg
[06:53:40] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/79f8421197610988.jpg
[06:53:40] [UPLOAD_COMPLETE] Retry count: 0
[06:53:40] [UPLOAD_COMPLETE] HTTP Status: 200
[06:53:40] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Content-Length"): 217, AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Content-Type"): application/json, AnyHashable("Date"): Wed, 21 Jan 2026 05:53:38 GMT, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Connection"): Keep-Alive]
[06:53:40] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"79f8421197610988.jpg","orig_name":"79f8421197610988.jpg","size":1702450,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":1702926}}
[06:53:40] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[06:53:40] [UPLOAD_COMPLETE] Server filename: 79f8421197610988.jpg
[06:53:40] [UPLOAD_VERIFY] Verifying file exists: 79f8421197610988.jpg
[06:53:40] [UPLOAD_VERIFY] ✅ File verified: 79f8421197610988.jpg (size: 1702450)
[06:53:40] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=79f8421197610988.jpg | id=610 | retries=0
[06:53:40] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[06:53:40] [UPLOAD_COMPLETE] ✅ File: 79f8421197610988.jpg
[06:53:40] [UPLOAD_COMPLETE] ✅ Queue ID: 610
[06:53:40] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[06:53:40] [UPLOAD_COMPLETE] ✅ Server filename: 79f8421197610988.jpg
[06:53:40] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[06:53:40] [UPLOAD_NOTIFY] 📣 Posting notification: file=79f8421197610988.jpg, status=complete (0), progress=0.0%
[06:53:40] [UPLOAD_STATUS] 📬 Received notification: file=79f8421197610988.jpg, status=0 (complete)
[06:53:40] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[0]: 2 → 0
[06:53:40] [UPLOAD_STATUS] 📝 Updated chatMessages[0]: status=0
[06:53:40] [UPLOAD_STATUS] 💾 Updating DB: file=79f8421197610988.jpg, status=0 (complete)
[06:53:40] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=610
[06:53:40] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=79f8421197610988.jpg
[06:53:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:40] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[06:53:40] [MEDIA_SEND] Server filename: 79f8421197610988.jpg
[06:53:40] [MEDIA_SEND] Main upload duration: 2.29s
[06:53:40] [MEDIA_SEND] Total upload duration: 2.51s
[06:53:40] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[06:53:40] [PROGRESS] Updated cell for 79f8421197610988.jpg: 100%
[06:53:45] [LIFECYCLE] App resigning active - cleared crash flag
[06:53:46] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[06:53:46] [SECURITY] Saved background timestamp
[06:53:46] [LIFECYCLE] App entering background - cleared crash flag
[06:53:46] [CLIENT_SIG] Disconnecting
[06:53:46] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[06:53:46] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[06:53:46] [WS] Canceling WebSocket for query connection to iosILUIWU
[06:53:46] In cleanupPeer
[06:53:46] In cleanupPeer
[06:53:46] [LIFECYCLE] WebRTC audio disabled
[06:53:46] [LIFECYCLE] AVAudioSession deactivated
[06:53:46] [LIFECYCLE] All connections stopped
[06:53:46] [CLIENT_SIG] WebSocket closed with code 1001
[06:53:46] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[06:53:46] [SERVER] Stopped reconnect polling
[06:53:46] Will request stop of video 0
[06:53:46] Will request stop of video 0
[06:53:46] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[06:53:46] [WS] Query connection error - cleaning up all agent connections and views
[06:53:46] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[06:53:46] [WS] Query connection failed - cleaning up all agent connections and views
[06:53: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/}
[06:53:46] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[06:53:46] [PIP] Removing 0 tracks from PiP for connection 0
[06:53:46] [PIP] ✅ All tracks removed for connection 0
[06:53:46] [PIP] Removing 0 tracks from PiP for connection 0
[06:53:46] [PIP] ✅ All tracks removed for connection 0
[06:53:46] [CLEANUP] ========================================
[06:53:46] [CLEANUP] Cleaning up all agent connections and views
[06:53:46] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[06:53:46] [CLEANUP] Stopped and removed 0 video connections
[06:53:46] [CLEANUP] Removed 0 video views
[06:53:46] [CLEANUP] Removed 0 feed scroll views
[06:53:46] [CLEANUP] Removed 0 status labels
[06:53:46] [CLEANUP] Reset agent query state
[06:53:46] [CLEANUP] Updated page indicator
[06:53:46] [CLEANUP] Rebuilt video layout
[06:53:46] [CLEANUP] ✅ All agent connections and views cleaned up
[06:53:46] [CLEANUP] ========================================
[06:53:46] [SERVER] Skipping reconnect polling - app is in background
[06:53:46] [WS] URLSession invalidated successfully
[06:53:46] [CLEANUP] ========================================
[06:53:46] [CLEANUP] Cleaning up all agent connections and views
[06:53:46] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[06:53:46] [CLEANUP] Stopped and removed 0 video connections
[06:53:46] [CLEANUP] Removed 0 video views
[06:53:46] [CLEANUP] Removed 0 feed scroll views
[06:53:46] [CLEANUP] Removed 0 status labels
[06:53:46] [CLEANUP] Reset agent query state
[06:53:46] [CLEANUP] Updated page indicator
[06:53:46] [CLEANUP] Rebuilt video layout
[06:53:46] [CLEANUP] ✅ All agent connections and views cleaned up
[06:53:46] [CLEANUP] ========================================
[06:53:46] [SERVER] Skipping reconnect polling - app is in background
[06:53:52] [SECURITY] Timeout check: elapsed=6.4050657749176025s, timeout=300.0s
[06:53:52] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[06:53:52] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:53:52] [LIFECYCLE] App entering foreground - restoring connections
[06:53:52] [UPLOAD_RETRY] No pending uploads to retry
[06:53:52] [LIFECYCLE] Merged 860 reactions from local DB
[06:53:52] [LIFECYCLE] WebRTC audio re-enabled
[06:53:52] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[06:53:52] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[06:53:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[06:53:52] [VIEWER] Reconnecting after background - querying agents
[06:53:52] [UNSENT_RETRY] Checking for unsent messages...
[06:53:52] [PENDING_UPLOAD] Total pending upload messages: 0
[06:53:52] [UNSENT_RETRY] No unsent messages found
[06:53:52] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[06:53:52] [WS] Opening session at ws://crivello.dyndns.org:8081/
[06:53:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[06:53:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18320, 18319, 18318, 18317, 18316]
[06:53:53] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → not my message, setting complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:53] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:53] [CLIENT_SIG] WebSocket opened
[06:53:53] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[06:53:53] [CLIENT_SIG] Connected! clientId=TQhm7VpO2R77gicW
[06:53:53] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[06:53:53] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:53:53] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[06:53:53] HELLO → sent (cached token, role=query)
[06:53:53] [SIG] hello_ok received for query connection - ready to query agents
[06:53:53] [SIG] get_agents request sent for sessionId=ILUIWU
[06:53:53] [SIG] get_agents request sent for sessionId=iosILUIWU
[06:53:53] [SERVER] Stopped reconnect polling
[06:53:53] [SIG] agents_list received: []
[06:53:53] [SIG] agents_list received: []
[06:53:53] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[06:53:53] [SECURITY] Within timeout - cleared background flag
[06:53:53] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[06:53:53] [PUSH] handlePollEventsNotification userInfo: [:]
[06:53:53] [PUSH] No message_id in userInfo
[06:53:53] [PUSH] No operation_type in userInfo
[06:53:53] [FAST_REFRESH] Evolution disabled - performing incremental sync
[06:53:53] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[06:53:53] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[06:53:53] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[06:53:53] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[06:53:53] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18320
[06:53:53] [INCREMENTAL_SYNC] ✅ No new messages
[06:53:53] [FAST_REFRESH] Incremental sync complete - 51 messages
[06:53:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18320, 18319, 18318, 18317, 18316]
[06:53:53] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → not my message, setting complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:53] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:53] [COMBINED_FETCH] Loaded 7086 read receipts, 856 messages with reactions
[06:53:53] [FOREGROUND] Enriched 0 messages with readBy data from server
[06:53:53] [LIFECYCLE] App resigning active - cleared crash flag
[06:53:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18320, 18319, 18318, 18317, 18316]
[06:53:53] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → not my message, setting complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:53] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:53] [COMBINED_FETCH] Loaded 7086 read receipts, 856 messages with reactions
[06:53:53] [FAST_REFRESH] Enriched 51 messages with readBy data
[06:53:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18320, 18319, 18318, 18317, 18316]
[06:53:54] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:54] [CELL_UPLOAD] → not my message, setting complete
[06:53:54] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:54] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:54] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:54] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:54] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[06:53:54] [SECURITY] Saved background timestamp
[06:53:54] [LIFECYCLE] App entering background - cleared crash flag
[06:53:54] [CLIENT_SIG] Disconnecting
[06:53:54] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[06:53:54] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[06:53:54] [WS] Canceling WebSocket for query connection to iosILUIWU
[06:53:54] In cleanupPeer
[06:53:54] In cleanupPeer
[06:53:54] [LIFECYCLE] WebRTC audio disabled
[06:53:54] [LIFECYCLE] AVAudioSession deactivated
[06:53:54] [LIFECYCLE] All connections stopped
[06:53:54] [CLIENT_SIG] WebSocket closed with code 1001
[06:53:54] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[06:53:54] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[06:53:54] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[06:53:54] [SERVER] Stopped reconnect polling
[06:53:54] Will request stop of video 0
[06:53:54] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[06:53:54] [WS] Query connection error - cleaning up all agent connections and views
[06:53:54] Will request stop of video 0
[06:53:54] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[06:53:54] [WS] Query connection failed - cleaning up all agent connections and views
[06:53:54] [APP_DISCONNECT] Scene disconnecting - logging pending uploads...
[06:53:56] [CRASH] No crash detected
[06:53:56] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[06:53:56] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[06:53:56] [GIPHY] SDK not available - using REST API fallback
[06:53:56] [BACKGROUND] Background fetch enabled
[06:53:56] [CLEANUP] No old timer messages to delete
[06:53:56] [SECURITY] Initial launch - within timeout (1.8291730880737305s < 300.0s)
[06:53:56] [AUTH] Starting PIN authentication
[06:53:56] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[06:53:56] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:53:56] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[06:53:56] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[06:53:56] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[06:53:56] [USER] ✅ User registered successfully
[06:53:56] [PUSH] User registration after token update: success
[06:53:56] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[06:53:56] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[06:53:56] [CLIENT_SIG] WebSocket opened
[06:53:56] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[06:53:56] [CLIENT_SIG] Connected! clientId=o3WhcJtc9wnXwhEl
[06:53:56] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[06:53:56] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[06:53:56] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18320)...
[06:53:56] [PRELOAD] No messages or parse error
[06:53:58] [PIN_AUTH] Correct PIN
[06:53:58] [SECURITY] Restored real session: ILUIWU
[06:53:58] [SECURITY] Restored real session: ILUIWU
[06:53:58] [SECURITY] Saved real session: ILUIWU
[06:53:58] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[06:53:58] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[06:53:58] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[06:53:58] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[06:53:58] [THEME] Applying current theme
[06:53:58] [CHAT] Applied day theme (mode: day)
[06:53:58] [SECURITY] Saved real session: ILUIWU
[06:53:58] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[06:53:58] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[06:53:58] [NETWORK] Network monitor started
[06:53:58] [NETWORK] Status changed: connected
[06:53:58] Did transition
[06:53:58] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[06:53:58] [VIEWER] Screen lock enabled - normal idle behavior
[06:53:58] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[06:53:58] [VCC] ========== VideoConnectionClass INIT ==========
[06:53:58] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[06:53:58] [DATA AUDIO] ========== setupWebRTC() START ==========
[06:53:58] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[06:53:58] [DATA AUDIO] Creating encoder/decoder factories...
[06:53:58] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[06:53:58] [CODEC] Viewer selected encoder: AV1 (best quality)
[06:53:58] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[06:53:58] [DATA AUDIO] ✅ Factory created
[06:53:58] [DATA AUDIO] RTCAudioSession locked
[06:53:58] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[06:53:58] [DATA AUDIO] RTCAudioSession unlocked
[06:53:58] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[06:53:58] [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"]
[06:53:58] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[06:53:58] [WS] Opening session at ws://crivello.dyndns.org:8081/
[06:53:58] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[06:53:58] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[06:53:58] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[06:53:58] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[06:53:58] Did transition
[06:53:58] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[06:53:58] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[06:53:58] [CHUNK] Merged 860 reactions synchronously
[06:53:58] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[06:53:58] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[06:53:58] [MIGRATION] No messages need sender_name backfill
[06:53:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[06:53:58] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[06:53:58] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[06:53:58] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[06:53:58] [USER] ✅ User registered successfully
[06:53:58] [USER] User registration successful
[06:53:58] [GALLERY_DB] ✅ Loaded 468 media messages
[06:53:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18320
[06:53:58] [INCREMENTAL_SYNC] ✅ No new messages
[06:53:58] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[06:53:58] [GALLERY] First 5 after sort (newest first):
[06:53:58] [GALLERY] 0: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[06:53:58] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[06:53:58] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[06:53:58] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[06:53:58] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[06:53:58] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[06:53:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18270, 18271, 18272, 18273, 18274]
[06:53:58] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[06:53:58] [CELL_UPLOAD] configure: msgId=18276, file=a9dc1013e9d5a3e6.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a9dc1013e9d5a3e6.jpg, overlayExists=true
[06:53:58] [SERVER] Starting reconnect polling (5s interval)
[06:53:58] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[06:53:58] [ICONS] Offset applied: -14.6
[06:53:58] [ICONS] New left margin: 11.2, New right margin: 11.3
[06:53:58] [ICONS] Chat center: (31.2, 87.0)
[06:53:58] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[06:53:58] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[06:53:58] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[06:53:58] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[06:53:58] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[06:53:58] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[06:53:58] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[06:53:58] [ICONS] Screen width: 440.0
[06:53:58] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:58] [CELL_UPLOAD] → not my message, setting complete
[06:53:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:58] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:53:58] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[06:53:58] [UNSENT_RETRY] Checking for unsent messages...
[06:53:58] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[06:53:58] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[06:53:58] [UPLOAD_RECOVERY] Session: ILUIWU
[06:53:58] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[06:53:58] [UPLOAD_RECOVERY] Checking recent media messages on server...
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18320, file=79f8421197610988.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[06:53:58] [UPLOAD_RECOVERY] Verifying 7 media files exist on server...
[06:53:58] [PENDING_UPLOAD] Total pending upload messages: 0
[06:53:58] [UNSENT_RETRY] No unsent messages found
[06:53:58] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[06:53:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[06:53:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[06:53:58] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[06:53:58] [UPLOAD_RECOVERY] ✅ All media files verified on server
[06:53:58] new_session POST ok: token len=157
[06:53:58] HELLO → sent (fetched token, role=query)
[06:53:58] [SIG] hello_ok received for query connection - ready to query agents
[06:53:58] [SIG] get_agents request sent for sessionId=ILUIWU
[06:53:58] [SIG] get_agents request sent for sessionId=iosILUIWU
[06:53:58] [SERVER] Stopped reconnect polling
[06:53:58] [SIG] agents_list received: []
[06:53:58] [SIG] agents_list received: []
[06:53:59] [COMBINED_FETCH] Loaded 7086 read receipts, 856 messages with reactions
[06:53:59] [READBY_ENRICH] Enriched 50 messages with readBy data
[06:53:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18270, 18271, 18272, 18273, 18274]
[06:53:59] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:59] [CELL_UPLOAD] → not my message, setting complete
[06:53:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[06:53:59] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[06:53:59] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[06:53:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[06:54:00] [MENU] dismissAnyExistingMenu called
[06:54:00] [MENU] dismissAnyExistingMenu completed
[06:54:17] [MENU] dismissAnyExistingMenu called
[06:54:17] [MENU] dismissAnyExistingMenu completed
[06:54:17] [MENU] dismissAnyExistingMenu called
[06:54:17] [MENU] dismissAnyExistingMenu completed
[06:54:20] [LIFECYCLE] App resigning active - cleared crash flag
[06:54:20] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[06:54:20] [SECURITY] Saved background timestamp
[06:54:20] [LIFECYCLE] App entering background - cleared crash flag
[06:54:20] [CLIENT_SIG] Disconnecting
[06:54:20] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[06:54:20] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[06:54:20] [WS] Canceling WebSocket for query connection to iosILUIWU
[06:54:20] In cleanupPeer
[06:54:20] In cleanupPeer
[06:54:20] [LIFECYCLE] WebRTC audio disabled
[06:54:20] [LIFECYCLE] AVAudioSession deactivated
[06:54:20] [LIFECYCLE] All connections stopped
[06:54:21] [CLIENT_SIG] WebSocket closed with code 1001
[06:54:21] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[06:54:21] [SERVER] Stopped reconnect polling
[06:54:21] Will request stop of video 0
[06:54:21] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[06:54:21] [WS] Query connection error - cleaning up all agent connections and views
[06:54:21] Will request stop of video 0
[06:54:21] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[06:54:21] [WS] Query connection failed - cleaning up all agent connections and views
[06:54:21] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[06:54:21] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[06:54:21] [PIP] Removing 0 tracks from PiP for connection 0
[06:54:21] [PIP] ✅ All tracks removed for connection 0
[06:54:21] [CLEANUP] ========================================
[06:54:21] [CLEANUP] Cleaning up all agent connections and views
[06:54:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[06:54:21] [CLEANUP] Stopped and removed 0 video connections
[06:54:21] [CLEANUP] Removed 0 video views
[06:54:21] [CLEANUP] Removed 0 feed scroll views
[06:54:21] [CLEANUP] Removed 0 status labels
[06:54:21] [CLEANUP] Reset agent query state
[06:54:21] [CLEANUP] Updated page indicator
[06:54:21] [CLEANUP] Rebuilt video layout
[06:54:21] [CLEANUP] ✅ All agent connections and views cleaned up
[06:54:21] [CLEANUP] ========================================
[06:54:21] [SERVER] Skipping reconnect polling - app is in background
[06:54:21] [WS] URLSession invalidated successfully
[06:54:21] [PIP] Removing 0 tracks from PiP for connection 0
[06:54:21] [PIP] ✅ All tracks removed for connection 0
[06:54:21] [CLEANUP] ========================================
[06:54:21] [CLEANUP] Cleaning up all agent connections and views
[06:54:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[06:54:21] [CLEANUP] Stopped and removed 0 video connections
[06:54:21] [CLEANUP] Removed 0 video views
[06:54:21] [CLEANUP] Removed 0 feed scroll views
[06:54:21] [CLEANUP] Removed 0 status labels
[06:54:21] [CLEANUP] Reset agent query state
[06:54:21] [CLEANUP] Updated page indicator
[06:54:21] [CLEANUP] Rebuilt video layout
[06:54:21] [CLEANUP] ✅ All agent connections and views cleaned up
[06:54:21] [CLEANUP] ========================================
[06:54:21] [SERVER] Skipping reconnect polling - app is in background
[07:13:49] [SECURITY] Timeout check: elapsed=1169.015704870224s, timeout=300.0s
[07:13:49] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[07:13:49] [AUTH] ✅ All guards passed, showing privacy cover
[07:13:49] [NETWORK] Status changed: connected
[07:13:49] [LIFECYCLE] App entering foreground - restoring connections
[07:13:49] [LIFECYCLE] Away > 2 minutes (1169s) - will scroll to bottom
[07:13:49] [UPLOAD_RETRY] No pending uploads to retry
[07:13:49] [LIFECYCLE] Merged 860 reactions from local DB
[07:13:49] [LIFECYCLE] WebRTC audio re-enabled
[07:13:49] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[07:13:49] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[07:13:49] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:13:49] [VIEWER] Reconnecting after background - querying agents
[07:13:49] [UNSENT_RETRY] Checking for unsent messages...
[07:13:49] [PENDING_UPLOAD] Total pending upload messages: 0
[07:13:49] [UNSENT_RETRY] No unsent messages found
[07:13:49] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:49] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:49] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[07:13:49] [NETWORK] Status changed: connected
[07:13:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18270, 18271, 18272, 18273, 18274]
[07:13:50] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → not my message, setting complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:50] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:50] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[07:13:50] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[07:13:50] [PUSH] handlePollEventsNotification userInfo: [:]
[07:13:50] [PUSH] No message_id in userInfo
[07:13:50] [PUSH] No operation_type in userInfo
[07:13:50] [FAST_REFRESH] Evolution disabled - performing incremental sync
[07:13:50] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[07:13:50] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[07:13:50] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[07:13:50] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[07:13:50] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18320
[07:13:50] [PUSH] Silent push received
[07:13:50] [PUSH_EMBED] 📩 Received embedded message: id=18322, type=0, sender=Esra
[07:13:50] [PUSH_EMBED] ✅ Saved message 18322 to local DB (sync)
[07:13:50] [PUSH_EMBED] Created new cache with embedded message 18322
[07:13:50] [PUSH_EMBED] Fetching evolution data for message 18322 in background
[07:13:50] [PUSH_EMBED] ✅ Fully processed message 18322
[07:13:50] [PUSH] Embedded message handled instantly from silent push
[07:13:50] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[07:13:50] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[07:13:50] [PUSH_UI] Inserted message 18322 into UI (now 51 messages)
[07:13:50] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[07:13:50] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18322, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 06:05:05";
"file_name" = "";
message = "It wasn\U2019t an easy for me too\Ud83e\Udd72\Ud83e\Udd72";
"message_id" = 18322;
"message_type" = 0;
"prev_session_message_id" = 18321;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0]
[07:13:50] [PUSH_EMBED_VC] Message 18322 already in memory - skipping
[07:13:50] [PUSH] ⚡ Embedded message handled directly in ViewController
[07:13:50] [PUSH] Parsed message_id: 18322
[07:13:50] [PUSH] Parsed operation_type: 0
[07:13:50] [PUSH] Taking direct action: opType=0, messageId=18322
[07:13:50] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18322
[07:13:50] [PUSH] ⚡ Message 18322 already in memory - skipping duplicate notification entirely
[07:13:50] [PUSH_EMBED] Got evolution data for message 18322, saving to local DB
[07:13:50] [PUSH_EMBED] Saved evolution data for message 18322
[07:13:50] [INCREMENTAL_SYNC] ✅ Found 2 new messages
[07:13:50] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=2
[07:13:50] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[07:13:50] [FAST_REFRESH] Incremental sync complete - 52 messages
[07:13:50] [CLIENT_SIG] WebSocket opened
[07:13:50] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[07:13:50] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:50] HELLO → sent (cached token, role=query)
[07:13:50] [CLIENT_SIG] Connected! clientId=LhmR9vxtCLaeax_S
[07:13:50] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:50] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:50] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:50] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:50] [CLEANUP] ========================================
[07:13:50] [CLEANUP] Cleaning up all agent connections and views
[07:13:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:50] [CLEANUP] Stopped and removed 0 video connections
[07:13:50] [CLEANUP] Removed 0 video views
[07:13:50] [CLEANUP] Removed 0 feed scroll views
[07:13:50] [CLEANUP] Removed 0 status labels
[07:13:50] [CLEANUP] Reset agent query state
[07:13:50] [CLEANUP] Updated page indicator
[07:13:50] [CLEANUP] Rebuilt video layout
[07:13:50] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:50] [CLEANUP] ========================================
[07:13:50] [SERVER] Starting reconnect polling (5s interval)
[07:13:50] [CLEANUP] ========================================
[07:13:50] [CLEANUP] Cleaning up all agent connections and views
[07:13:50] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:50] [CLEANUP] Stopped and removed 0 video connections
[07:13:50] [CLEANUP] Removed 0 video views
[07:13:50] [CLEANUP] Removed 0 feed scroll views
[07:13:50] [CLEANUP] Removed 0 status labels
[07:13:50] [CLEANUP] Reset agent query state
[07:13:50] [CLEANUP] Updated page indicator
[07:13:50] [CLEANUP] Rebuilt video layout
[07:13:50] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:50] [CLEANUP] ========================================
[07:13:50] [SERVER] Starting reconnect polling (5s interval)
[07:13:50] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[07:13:50] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:13:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18270, 18271, 18272, 18273, 18274]
[07:13:50] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → not my message, setting complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:50] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:50] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18320 → 18321
[07:13:50] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18321 → 18322
[07:13:50] [COMBINED_FETCH] Loaded 7088 read receipts, 858 messages with reactions
[07:13:50] [FOREGROUND] Enriched 3 messages with readBy data from server
[07:13:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18270, 18271, 18272, 18273, 18274]
[07:13:50] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → not my message, setting complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:50] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:50] [COMBINED_FETCH] Loaded 7088 read receipts, 858 messages with reactions
[07:13:50] [FAST_REFRESH] Enriched 52 messages with readBy data
[07:13:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18270, 18271, 18272, 18273, 18274]
[07:13:50] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → not my message, setting complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:50] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:51] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:51] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:51] [PIN_AUTH] Correct PIN
[07:13:52] [SECURITY] Restored real session: ILUIWU
[07:13:52] [SECURITY] Restored real session: ILUIWU
[07:13:52] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:52] HELLO → sent (cached token, role=query)
[07:13:52] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:52] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:52] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:52] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:52] [CLEANUP] ========================================
[07:13:52] [CLEANUP] Cleaning up all agent connections and views
[07:13:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:52] [CLEANUP] Stopped and removed 0 video connections
[07:13:52] [CLEANUP] Removed 0 video views
[07:13:52] [CLEANUP] Removed 0 feed scroll views
[07:13:52] [CLEANUP] Removed 0 status labels
[07:13:52] [CLEANUP] Reset agent query state
[07:13:52] [CLEANUP] Updated page indicator
[07:13:52] [CLEANUP] Rebuilt video layout
[07:13:52] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:52] [CLEANUP] ========================================
[07:13:52] [SERVER] Starting reconnect polling (5s interval)
[07:13:52] [CLEANUP] ========================================
[07:13:52] [CLEANUP] Cleaning up all agent connections and views
[07:13:52] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:52] [CLEANUP] Stopped and removed 0 video connections
[07:13:52] [CLEANUP] Removed 0 video views
[07:13:52] [CLEANUP] Removed 0 feed scroll views
[07:13:52] [CLEANUP] Removed 0 status labels
[07:13:52] [CLEANUP] Reset agent query state
[07:13:52] [CLEANUP] Updated page indicator
[07:13:52] [CLEANUP] Rebuilt video layout
[07:13:52] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:52] [CLEANUP] ========================================
[07:13:52] [SERVER] Starting reconnect polling (5s interval)
[07:13:52] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[07:13:52] [AUTH] UI update complete
[07:13:52] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[07:13:52] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[07:13:52] [FAKE MODE] Exiting fake mode, restoring real session
[07:13:52] [SECURITY] Restored real session: ILUIWU
[07:13:52] [SECURITY] Saved real session: ILUIWU
[07:13:52] [FAKE MODE] ✅ Restored real session: ILUIWU
[07:13:52] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[07:13:52] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:13:52] [FAKE MODE] Loaded 50 messages (limited to page size)
[07:13:52] [USER] ✅ User registered successfully
[07:13:52] [PUSH] User registration after token update: success
[07:13:52] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:52] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:52] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:52] [CELL_UPLOAD] → not my message, setting complete
[07:13:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18272, 18273, 18274, 18275, 18276]
[07:13:52] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:52] [CELL_UPLOAD] → not my message, setting complete
[07:13:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:52] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:52] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:52] [PUSH] Silent push received
[07:13:52] [PUSH_EMBED] No embedded message_data in notification
[07:13:52] [PUSH] No embedded data, pre-loading messages from server
[07:13:52] [PUSH_PRELOAD] Fetching messages for instant display cache
[07:13:52] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[07:13:52] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[07:13:52] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[07:13:52] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18321, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3]
[07:13:52] [PUSH] Parsed message_id: 18321
[07:13:52] [PUSH] Parsed operation_type: 3
[07:13:52] [PUSH] Taking direct action: opType=3, messageId=18321
[07:13:52] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18321
[07:13:52] [COMBINED_FETCH] Loaded 7088 read receipts, 858 messages with reactions
[07:13:52] [FAKE MODE] Enriched 50 messages with readBy data
[07:13:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18272, 18273, 18274, 18275, 18276]
[07:13:53] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:53] [CELL_UPLOAD] → not my message, setting complete
[07:13:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:13:53] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:13:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:13:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:13:53] [NETWORK] Status changed: connected
[07:13:53] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:53] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:53] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:53] HELLO → sent (cached token, role=query)
[07:13:53] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:53] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:53] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:53] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:53] [CLEANUP] ========================================
[07:13:53] [CLEANUP] Cleaning up all agent connections and views
[07:13:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:53] [CLEANUP] Stopped and removed 0 video connections
[07:13:53] [CLEANUP] Removed 0 video views
[07:13:53] [CLEANUP] Removed 0 feed scroll views
[07:13:53] [CLEANUP] Removed 0 status labels
[07:13:53] [CLEANUP] Reset agent query state
[07:13:53] [CLEANUP] Updated page indicator
[07:13:53] [CLEANUP] Rebuilt video layout
[07:13:53] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:53] [CLEANUP] ========================================
[07:13:53] [SERVER] Starting reconnect polling (5s interval)
[07:13:53] [CLEANUP] ========================================
[07:13:53] [CLEANUP] Cleaning up all agent connections and views
[07:13:53] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:53] [CLEANUP] Stopped and removed 0 video connections
[07:13:53] [CLEANUP] Removed 0 video views
[07:13:53] [CLEANUP] Removed 0 feed scroll views
[07:13:53] [CLEANUP] Removed 0 status labels
[07:13:53] [CLEANUP] Reset agent query state
[07:13:53] [CLEANUP] Updated page indicator
[07:13:53] [CLEANUP] Rebuilt video layout
[07:13:53] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:53] [CLEANUP] ========================================
[07:13:53] [SERVER] Starting reconnect polling (5s interval)
[07:13:54] [CLIENT_SIG] Event received: type=3 messageId=18321
[07:13:54] [WS_EVENT] Received event: type=3, messageId=18321
[07:13:54] [WS_EVENT] Read receipt for message 18321 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:13:54] [LOG] Long press on chat icon detected! Triggering log upload...
[07:13:55] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:55] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:55] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:55] HELLO → sent (cached token, role=query)
[07:13:55] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:55] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:55] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:55] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:55] [CLEANUP] ========================================
[07:13:55] [CLEANUP] Cleaning up all agent connections and views
[07:13:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:55] [CLEANUP] Stopped and removed 0 video connections
[07:13:55] [CLEANUP] Removed 0 video views
[07:13:55] [CLEANUP] Removed 0 feed scroll views
[07:13:55] [CLEANUP] Removed 0 status labels
[07:13:55] [CLEANUP] Reset agent query state
[07:13:55] [CLEANUP] Updated page indicator
[07:13:55] [CLEANUP] Rebuilt video layout
[07:13:55] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:55] [CLEANUP] ========================================
[07:13:55] [SERVER] Starting reconnect polling (5s interval)
[07:13:55] [CLEANUP] ========================================
[07:13:55] [CLEANUP] Cleaning up all agent connections and views
[07:13:55] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:55] [CLEANUP] Stopped and removed 0 video connections
[07:13:55] [CLEANUP] Removed 0 video views
[07:13:55] [CLEANUP] Removed 0 feed scroll views
[07:13:55] [CLEANUP] Removed 0 status labels
[07:13:55] [CLEANUP] Reset agent query state
[07:13:55] [CLEANUP] Updated page indicator
[07:13:55] [CLEANUP] Rebuilt video layout
[07:13:55] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:55] [CLEANUP] ========================================
[07:13:55] [SERVER] Starting reconnect polling (5s interval)
[07:13:57] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:57] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:57] [PUSH] Silent push received
[07:13:57] [PUSH_EMBED] No embedded message_data in notification
[07:13:57] [PUSH] No embedded data, pre-loading messages from server
[07:13:57] [PUSH_PRELOAD] Fetching messages for instant display cache
[07:13:57] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[07:13:57] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[07:13:57] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[07:13:57] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18322, AnyHashable("session_id"): ILUIWU]
[07:13:57] [PUSH] Parsed message_id: 18322
[07:13:57] [PUSH] Parsed operation_type: 3
[07:13:57] [PUSH] Taking direct action: opType=3, messageId=18322
[07:13:57] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18322
[07:13:57] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:57] HELLO → sent (cached token, role=query)
[07:13:57] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:57] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:57] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:57] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:57] [CLEANUP] ========================================
[07:13:57] [CLEANUP] Cleaning up all agent connections and views
[07:13:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:57] [CLEANUP] Stopped and removed 0 video connections
[07:13:57] [CLEANUP] Removed 0 video views
[07:13:57] [CLEANUP] Removed 0 feed scroll views
[07:13:57] [CLEANUP] Removed 0 status labels
[07:13:57] [CLEANUP] Reset agent query state
[07:13:57] [CLEANUP] Updated page indicator
[07:13:57] [CLEANUP] Rebuilt video layout
[07:13:57] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:57] [CLEANUP] ========================================
[07:13:57] [SERVER] Starting reconnect polling (5s interval)
[07:13:57] [CLEANUP] ========================================
[07:13:57] [CLEANUP] Cleaning up all agent connections and views
[07:13:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:57] [CLEANUP] Stopped and removed 0 video connections
[07:13:57] [CLEANUP] Removed 0 video views
[07:13:57] [CLEANUP] Removed 0 feed scroll views
[07:13:57] [CLEANUP] Removed 0 status labels
[07:13:57] [CLEANUP] Reset agent query state
[07:13:57] [CLEANUP] Updated page indicator
[07:13:57] [CLEANUP] Rebuilt video layout
[07:13:57] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:57] [CLEANUP] ========================================
[07:13:57] [SERVER] Starting reconnect polling (5s interval)
[07:13:59] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:59] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:13:59] [CLIENT_SIG] Event received: type=3 messageId=18322
[07:13:59] [WS_EVENT] Received event: type=3, messageId=18322
[07:13:59] [WS_EVENT] Read receipt for message 18322 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:13:59] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:13:59] HELLO → sent (cached token, role=query)
[07:13:59] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:13:59] [WS] Query connection failed - cleaning up all agent connections and views
[07:13:59] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:13:59] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:13:59] [CLEANUP] ========================================
[07:13:59] [CLEANUP] Cleaning up all agent connections and views
[07:13:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:59] [CLEANUP] Stopped and removed 0 video connections
[07:13:59] [CLEANUP] Removed 0 video views
[07:13:59] [CLEANUP] Removed 0 feed scroll views
[07:13:59] [CLEANUP] Removed 0 status labels
[07:13:59] [CLEANUP] Reset agent query state
[07:13:59] [CLEANUP] Updated page indicator
[07:13:59] [CLEANUP] Rebuilt video layout
[07:13:59] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:59] [CLEANUP] ========================================
[07:13:59] [SERVER] Starting reconnect polling (5s interval)
[07:13:59] [CLEANUP] ========================================
[07:13:59] [CLEANUP] Cleaning up all agent connections and views
[07:13:59] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:13:59] [CLEANUP] Stopped and removed 0 video connections
[07:13:59] [CLEANUP] Removed 0 video views
[07:13:59] [CLEANUP] Removed 0 feed scroll views
[07:13:59] [CLEANUP] Removed 0 status labels
[07:13:59] [CLEANUP] Reset agent query state
[07:13:59] [CLEANUP] Updated page indicator
[07:13:59] [CLEANUP] Rebuilt video layout
[07:13:59] [CLEANUP] ✅ All agent connections and views cleaned up
[07:13:59] [CLEANUP] ========================================
[07:13:59] [SERVER] Starting reconnect polling (5s interval)
[07:14:00] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:01] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:01] HELLO → sent (cached token, role=query)
[07:14:01] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:01] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:01] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:01] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:01] [CLEANUP] ========================================
[07:14:01] [CLEANUP] Cleaning up all agent connections and views
[07:14:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:01] [CLEANUP] Stopped and removed 0 video connections
[07:14:01] [CLEANUP] Removed 0 video views
[07:14:01] [CLEANUP] Removed 0 feed scroll views
[07:14:01] [CLEANUP] Removed 0 status labels
[07:14:01] [CLEANUP] Reset agent query state
[07:14:01] [CLEANUP] Updated page indicator
[07:14:01] [CLEANUP] Rebuilt video layout
[07:14:01] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:01] [CLEANUP] ========================================
[07:14:01] [SERVER] Starting reconnect polling (5s interval)
[07:14:01] [CLEANUP] ========================================
[07:14:01] [CLEANUP] Cleaning up all agent connections and views
[07:14:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:01] [CLEANUP] Stopped and removed 0 video connections
[07:14:01] [CLEANUP] Removed 0 video views
[07:14:01] [CLEANUP] Removed 0 feed scroll views
[07:14:01] [CLEANUP] Removed 0 status labels
[07:14:01] [CLEANUP] Reset agent query state
[07:14:01] [CLEANUP] Updated page indicator
[07:14:01] [CLEANUP] Rebuilt video layout
[07:14:01] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:01] [CLEANUP] ========================================
[07:14:01] [SERVER] Starting reconnect polling (5s interval)
[07:14:02] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:02] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:02] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:02] HELLO → sent (cached token, role=query)
[07:14:02] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:02] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:02] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:02] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:02] [CLEANUP] ========================================
[07:14:02] [CLEANUP] Cleaning up all agent connections and views
[07:14:02] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:02] [CLEANUP] Stopped and removed 0 video connections
[07:14:02] [CLEANUP] Removed 0 video views
[07:14:02] [CLEANUP] Removed 0 feed scroll views
[07:14:02] [CLEANUP] Removed 0 status labels
[07:14:02] [CLEANUP] Reset agent query state
[07:14:02] [CLEANUP] Updated page indicator
[07:14:02] [CLEANUP] Rebuilt video layout
[07:14:02] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:02] [CLEANUP] ========================================
[07:14:02] [SERVER] Starting reconnect polling (5s interval)
[07:14:02] [CLEANUP] ========================================
[07:14:02] [CLEANUP] Cleaning up all agent connections and views
[07:14:02] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:02] [CLEANUP] Stopped and removed 0 video connections
[07:14:02] [CLEANUP] Removed 0 video views
[07:14:02] [CLEANUP] Removed 0 feed scroll views
[07:14:02] [CLEANUP] Removed 0 status labels
[07:14:02] [CLEANUP] Reset agent query state
[07:14:02] [CLEANUP] Updated page indicator
[07:14:02] [CLEANUP] Rebuilt video layout
[07:14:02] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:02] [CLEANUP] ========================================
[07:14:02] [SERVER] Starting reconnect polling (5s interval)
[07:14:04] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:04] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:04] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:04] HELLO → sent (cached token, role=query)
[07:14:04] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:04] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:04] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:04] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:04] [CLEANUP] ========================================
[07:14:04] [CLEANUP] Cleaning up all agent connections and views
[07:14:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:04] [CLEANUP] Stopped and removed 0 video connections
[07:14:04] [CLEANUP] Removed 0 video views
[07:14:04] [CLEANUP] Removed 0 feed scroll views
[07:14:04] [CLEANUP] Removed 0 status labels
[07:14:04] [CLEANUP] Reset agent query state
[07:14:04] [CLEANUP] Updated page indicator
[07:14:04] [CLEANUP] Rebuilt video layout
[07:14:04] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:04] [CLEANUP] ========================================
[07:14:04] [SERVER] Starting reconnect polling (5s interval)
[07:14:04] [CLEANUP] ========================================
[07:14:04] [CLEANUP] Cleaning up all agent connections and views
[07:14:04] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:04] [CLEANUP] Stopped and removed 0 video connections
[07:14:04] [CLEANUP] Removed 0 video views
[07:14:04] [CLEANUP] Removed 0 feed scroll views
[07:14:04] [CLEANUP] Removed 0 status labels
[07:14:04] [CLEANUP] Reset agent query state
[07:14:04] [CLEANUP] Updated page indicator
[07:14:04] [CLEANUP] Rebuilt video layout
[07:14:04] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:04] [CLEANUP] ========================================
[07:14:04] [SERVER] Starting reconnect polling (5s interval)
[07:14:06] [LOG] Uploading log as '2026-01-21-07-14-ecran-blanc-apres-envoi-photo-Laurent.log' (180 KB) to server...
[07:14:06] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:06] HELLO → sent (cached token, role=query)
[07:14:06] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:06] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:06] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:06] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:06] [CLEANUP] ========================================
[07:14:06] [CLEANUP] Cleaning up all agent connections and views
[07:14:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:06] [CLEANUP] Stopped and removed 0 video connections
[07:14:06] [CLEANUP] Removed 0 video views
[07:14:06] [CLEANUP] Removed 0 feed scroll views
[07:14:06] [CLEANUP] Removed 0 status labels
[07:14:06] [CLEANUP] Reset agent query state
[07:14:06] [CLEANUP] Updated page indicator
[07:14:06] [CLEANUP] Rebuilt video layout
[07:14:06] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:06] [CLEANUP] ========================================
[07:14:06] [SERVER] Starting reconnect polling (5s interval)
[07:14:06] [CLEANUP] ========================================
[07:14:06] [CLEANUP] Cleaning up all agent connections and views
[07:14:06] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:06] [CLEANUP] Stopped and removed 0 video connections
[07:14:06] [CLEANUP] Removed 0 video views
[07:14:06] [CLEANUP] Removed 0 feed scroll views
[07:14:06] [CLEANUP] Removed 0 status labels
[07:14:06] [CLEANUP] Reset agent query state
[07:14:06] [CLEANUP] Updated page indicator
[07:14:06] [CLEANUP] Rebuilt video layout
[07:14:06] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:06] [CLEANUP] ========================================
[07:14:06] [SERVER] Starting reconnect polling (5s interval)
[07:14:06] [LOG] Upload HTTP status: 200
[07:14:06] [LOG] Upload successful: 2026-01-21-07-14-ecran-blanc-apres-envoi-photo-Laurent.log
[07:14:06] [LOG] Skipping cross-device log request (description doesn't end with '2')
[07:14:08] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:08] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:08] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:08] HELLO → sent (cached token, role=query)
[07:14:08] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:08] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:08] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:08] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:08] [CLEANUP] ========================================
[07:14:08] [CLEANUP] Cleaning up all agent connections and views
[07:14:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:08] [CLEANUP] Stopped and removed 0 video connections
[07:14:08] [CLEANUP] Removed 0 video views
[07:14:08] [CLEANUP] Removed 0 feed scroll views
[07:14:08] [CLEANUP] Removed 0 status labels
[07:14:08] [CLEANUP] Reset agent query state
[07:14:08] [CLEANUP] Updated page indicator
[07:14:08] [CLEANUP] Rebuilt video layout
[07:14:08] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:08] [CLEANUP] ========================================
[07:14:08] [SERVER] Starting reconnect polling (5s interval)
[07:14:08] [CLEANUP] ========================================
[07:14:08] [CLEANUP] Cleaning up all agent connections and views
[07:14:08] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:08] [CLEANUP] Stopped and removed 0 video connections
[07:14:08] [CLEANUP] Removed 0 video views
[07:14:08] [CLEANUP] Removed 0 feed scroll views
[07:14:08] [CLEANUP] Removed 0 status labels
[07:14:08] [CLEANUP] Reset agent query state
[07:14:08] [CLEANUP] Updated page indicator
[07:14:08] [CLEANUP] Rebuilt video layout
[07:14:08] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:08] [CLEANUP] ========================================
[07:14:08] [SERVER] Starting reconnect polling (5s interval)
[07:14:10] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:10] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:10] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:10] HELLO → sent (cached token, role=query)
[07:14:10] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:10] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:10] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:10] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:10] [CLEANUP] ========================================
[07:14:10] [CLEANUP] Cleaning up all agent connections and views
[07:14:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:10] [CLEANUP] Stopped and removed 0 video connections
[07:14:10] [CLEANUP] Removed 0 video views
[07:14:10] [CLEANUP] Removed 0 feed scroll views
[07:14:10] [CLEANUP] Removed 0 status labels
[07:14:10] [CLEANUP] Reset agent query state
[07:14:10] [CLEANUP] Updated page indicator
[07:14:10] [CLEANUP] Rebuilt video layout
[07:14:10] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:10] [CLEANUP] ========================================
[07:14:10] [SERVER] Starting reconnect polling (5s interval)
[07:14:10] [CLEANUP] ========================================
[07:14:10] [CLEANUP] Cleaning up all agent connections and views
[07:14:10] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:10] [CLEANUP] Stopped and removed 0 video connections
[07:14:10] [CLEANUP] Removed 0 video views
[07:14:10] [CLEANUP] Removed 0 feed scroll views
[07:14:10] [CLEANUP] Removed 0 status labels
[07:14:10] [CLEANUP] Reset agent query state
[07:14:10] [CLEANUP] Updated page indicator
[07:14:10] [CLEANUP] Rebuilt video layout
[07:14:10] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:10] [CLEANUP] ========================================
[07:14:10] [SERVER] Starting reconnect polling (5s interval)
[07:14:11] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:11] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:12] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:12] HELLO → sent (cached token, role=query)
[07:14:12] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:12] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:12] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:12] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:12] [CLEANUP] ========================================
[07:14:12] [CLEANUP] Cleaning up all agent connections and views
[07:14:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:12] [CLEANUP] Stopped and removed 0 video connections
[07:14:12] [CLEANUP] Removed 0 video views
[07:14:12] [CLEANUP] Removed 0 feed scroll views
[07:14:12] [CLEANUP] Removed 0 status labels
[07:14:12] [CLEANUP] Reset agent query state
[07:14:12] [CLEANUP] Updated page indicator
[07:14:12] [CLEANUP] Rebuilt video layout
[07:14:12] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:12] [CLEANUP] ========================================
[07:14:12] [SERVER] Starting reconnect polling (5s interval)
[07:14:12] [CLEANUP] ========================================
[07:14:12] [CLEANUP] Cleaning up all agent connections and views
[07:14:12] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:12] [CLEANUP] Stopped and removed 0 video connections
[07:14:12] [CLEANUP] Removed 0 video views
[07:14:12] [CLEANUP] Removed 0 feed scroll views
[07:14:12] [CLEANUP] Removed 0 status labels
[07:14:12] [CLEANUP] Reset agent query state
[07:14:12] [CLEANUP] Updated page indicator
[07:14:12] [CLEANUP] Rebuilt video layout
[07:14:12] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:12] [CLEANUP] ========================================
[07:14:12] [SERVER] Starting reconnect polling (5s interval)
[07:14:12] [SCROLL_BTN] Showing button - 310pt from bottom > half 223pt
[07:14:13] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:13] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:14] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:14] HELLO → sent (cached token, role=query)
[07:14:14] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:14] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:14] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:14] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:14] [CLEANUP] ========================================
[07:14:14] [CLEANUP] Cleaning up all agent connections and views
[07:14:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:14] [CLEANUP] Stopped and removed 0 video connections
[07:14:14] [CLEANUP] Removed 0 video views
[07:14:14] [CLEANUP] Removed 0 feed scroll views
[07:14:14] [CLEANUP] Removed 0 status labels
[07:14:14] [CLEANUP] Reset agent query state
[07:14:14] [CLEANUP] Updated page indicator
[07:14:14] [CLEANUP] Rebuilt video layout
[07:14:14] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:14] [CLEANUP] ========================================
[07:14:14] [SERVER] Starting reconnect polling (5s interval)
[07:14:14] [CLEANUP] ========================================
[07:14:14] [CLEANUP] Cleaning up all agent connections and views
[07:14:14] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:14] [CLEANUP] Stopped and removed 0 video connections
[07:14:14] [CLEANUP] Removed 0 video views
[07:14:14] [CLEANUP] Removed 0 feed scroll views
[07:14:14] [CLEANUP] Removed 0 status labels
[07:14:14] [CLEANUP] Reset agent query state
[07:14:14] [CLEANUP] Updated page indicator
[07:14:14] [CLEANUP] Rebuilt video layout
[07:14:14] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:14] [CLEANUP] ========================================
[07:14:14] [SERVER] Starting reconnect polling (5s interval)
[07:14:15] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:15] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:15] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:15] HELLO → sent (cached token, role=query)
[07:14:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:15] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:15] [CLEANUP] ========================================
[07:14:15] [CLEANUP] Cleaning up all agent connections and views
[07:14:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:15] [CLEANUP] Stopped and removed 0 video connections
[07:14:15] [CLEANUP] Removed 0 video views
[07:14:15] [CLEANUP] Removed 0 feed scroll views
[07:14:15] [CLEANUP] Removed 0 status labels
[07:14:15] [CLEANUP] Reset agent query state
[07:14:15] [CLEANUP] Updated page indicator
[07:14:15] [CLEANUP] Rebuilt video layout
[07:14:15] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:15] [CLEANUP] ========================================
[07:14:15] [SERVER] Starting reconnect polling (5s interval)
[07:14:15] [CLEANUP] ========================================
[07:14:15] [CLEANUP] Cleaning up all agent connections and views
[07:14:15] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:15] [CLEANUP] Stopped and removed 0 video connections
[07:14:15] [CLEANUP] Removed 0 video views
[07:14:15] [CLEANUP] Removed 0 feed scroll views
[07:14:15] [CLEANUP] Removed 0 status labels
[07:14:15] [CLEANUP] Reset agent query state
[07:14:15] [CLEANUP] Updated page indicator
[07:14:15] [CLEANUP] Rebuilt video layout
[07:14:15] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:15] [CLEANUP] ========================================
[07:14:15] [SERVER] Starting reconnect polling (5s interval)
[07:14:17] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:17] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:17] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:17] HELLO → sent (cached token, role=query)
[07:14:17] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:17] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:17] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:17] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:17] [CLEANUP] ========================================
[07:14:17] [CLEANUP] Cleaning up all agent connections and views
[07:14:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:17] [CLEANUP] Stopped and removed 0 video connections
[07:14:17] [CLEANUP] Removed 0 video views
[07:14:17] [CLEANUP] Removed 0 feed scroll views
[07:14:17] [CLEANUP] Removed 0 status labels
[07:14:17] [CLEANUP] Reset agent query state
[07:14:17] [CLEANUP] Updated page indicator
[07:14:17] [CLEANUP] Rebuilt video layout
[07:14:17] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:17] [CLEANUP] ========================================
[07:14:17] [SERVER] Starting reconnect polling (5s interval)
[07:14:17] [CLEANUP] ========================================
[07:14:17] [CLEANUP] Cleaning up all agent connections and views
[07:14:17] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:17] [CLEANUP] Stopped and removed 0 video connections
[07:14:17] [CLEANUP] Removed 0 video views
[07:14:17] [CLEANUP] Removed 0 feed scroll views
[07:14:17] [CLEANUP] Removed 0 status labels
[07:14:17] [CLEANUP] Reset agent query state
[07:14:17] [CLEANUP] Updated page indicator
[07:14:17] [CLEANUP] Rebuilt video layout
[07:14:17] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:17] [CLEANUP] ========================================
[07:14:17] [SERVER] Starting reconnect polling (5s interval)
[07:14:18] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[07:14:18] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[07:14:18] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[07:14:18] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18322, 18321, 18320, 18319]
[07:14:18] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:18] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:14:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:14:18] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[07:14:18] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[07:14:18] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:18] [CELL_UPLOAD] → not my message, setting complete
[07:14:18] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:14:19] [LIFECYCLE] App resigning active - cleared crash flag
[07:14:19] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:19] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:19] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:19] HELLO → sent (cached token, role=query)
[07:14:19] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:19] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:19] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:19] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:19] [CLEANUP] ========================================
[07:14:19] [CLEANUP] Cleaning up all agent connections and views
[07:14:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:19] [CLEANUP] Stopped and removed 0 video connections
[07:14:19] [CLEANUP] Removed 0 video views
[07:14:19] [CLEANUP] Removed 0 feed scroll views
[07:14:19] [CLEANUP] Removed 0 status labels
[07:14:19] [CLEANUP] Reset agent query state
[07:14:19] [CLEANUP] Updated page indicator
[07:14:19] [CLEANUP] Rebuilt video layout
[07:14:19] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:19] [CLEANUP] ========================================
[07:14:19] [SERVER] Starting reconnect polling (5s interval)
[07:14:19] [CLEANUP] ========================================
[07:14:19] [CLEANUP] Cleaning up all agent connections and views
[07:14:19] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:19] [CLEANUP] Stopped and removed 0 video connections
[07:14:19] [CLEANUP] Removed 0 video views
[07:14:19] [CLEANUP] Removed 0 feed scroll views
[07:14:19] [CLEANUP] Removed 0 status labels
[07:14:19] [CLEANUP] Reset agent query state
[07:14:19] [CLEANUP] Updated page indicator
[07:14:19] [CLEANUP] Rebuilt video layout
[07:14:19] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:19] [CLEANUP] ========================================
[07:14:19] [SERVER] Starting reconnect polling (5s interval)
[07:14:19] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[07:14:19] [SECURITY] Saved background timestamp
[07:14:19] [LIFECYCLE] App entering background - cleared crash flag
[07:14:19] [CLIENT_SIG] Disconnecting
[07:14:19] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[07:14:19] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[07:14:19] [WS] Canceling WebSocket for query connection to iosILUIWU
[07:14:19] In cleanupPeer
[07:14:19] In cleanupPeer
[07:14:19] [LIFECYCLE] WebRTC audio disabled
[07:14:19] [LIFECYCLE] AVAudioSession deactivated
[07:14:19] [LIFECYCLE] All connections stopped
[07:14:20] [CLIENT_SIG] WebSocket closed with code 1001
[07:14:20] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[07:14:20] [SERVER] Stopped reconnect polling
[07:14:20] Will request stop of video 0
[07:14:20] [WS] URLSession invalidated successfully
[07:14:20] Will request stop of video 0
[07:14:20] [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/}
[07:14:20] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[07:14:20] [PIP] Removing 0 tracks from PiP for connection 0
[07:14:20] [PIP] ✅ All tracks removed for connection 0
[07:14:20] [PIP] Removing 0 tracks from PiP for connection 0
[07:14:20] [PIP] ✅ All tracks removed for connection 0
[07:14:20] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18323,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 06:14:18"}
[07:14:20] [CHAT] receive_message.php JSON: ["message_id": 18323, "ok": 1, "session_id": ILUIWU, "datesent_utc": 2026-01-21 06:14:18, "file_name": , "message_type": 0]
[07:14:20] [DB_UPGRADE] Upgrading message ID: -1 → 18323, preserveOriginalDate=false
[07:14:20] [DB_UPGRADE] ✅ Upgraded -1 → 18323 with send_status=0, 1 row(s) affected
[07:14:20] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18323
[07:14:20] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18323
[07:14:20] ReloadData 9
[07:14:20] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:20] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:14:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:14:20] [SECURITY] Timeout check: elapsed=0.7000579833984375s, timeout=300.0s
[07:14:20] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[07:14:20] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:14:20] [LIFECYCLE] App entering foreground - restoring connections
[07:14:20] [UPLOAD_RETRY] No pending uploads to retry
[07:14:20] [LIFECYCLE] Merged 860 reactions from local DB
[07:14:20] [LIFECYCLE] WebRTC audio re-enabled
[07:14:20] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[07:14:20] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[07:14:20] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[07:14:20] [VIEWER] Reconnecting after background - querying agents
[07:14:20] [UNSENT_RETRY] Checking for unsent messages...
[07:14:20] [PENDING_UPLOAD] Total pending upload messages: 0
[07:14:20] [UNSENT_RETRY] No unsent messages found
[07:14:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18323, 18322, 18321, 18320, 18319]
[07:14:20] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:20] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:14:20] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:14:20] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[07:14:20] [SECURITY] Within timeout - cleared background flag
[07:14:20] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[07:14:20] [PUSH] handlePollEventsNotification userInfo: [:]
[07:14:20] [PUSH] No message_id in userInfo
[07:14:20] [PUSH] No operation_type in userInfo
[07:14:20] [FAST_REFRESH] Evolution disabled - performing incremental sync
[07:14:20] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[07:14:20] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[07:14:20] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[07:14:20] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[07:14:20] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18323
[07:14:20] [CLIENT_SIG] WebSocket opened
[07:14:20] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[07:14:20] [CLIENT_SIG] Connected! clientId=woPkkdyk73GxXlUq
[07:14:20] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[07:14:20] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:14:20] [INCREMENTAL_SYNC] ✅ No new messages
[07:14:20] [FAST_REFRESH] Incremental sync complete - 51 messages
[07:14:20] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18323, 18322, 18321, 18320, 18319]
[07:14:21] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:21] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:14:21] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:14:21] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:21] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:14:21] [COMBINED_FETCH] Loaded 7089 read receipts, 858 messages with reactions
[07:14:21] [FOREGROUND] Enriched 0 messages with readBy data from server
[07:14:21] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:21] [CELL_UPLOAD] → not my message, setting complete
[07:14:21] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:14:21] [LOCK] Lock button tapped - locking app immediately
[07:14:21] [LOCK] Received lock app notification
[07:14:21] [COMBINED_FETCH] Loaded 7089 read receipts, 858 messages with reactions
[07:14:21] [FAST_REFRESH] Enriched 51 messages with readBy data
[07:14:21] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[07:14:21] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:14:21] HELLO → sent (cached token, role=query)
[07:14:21] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:14:21] [WS] Query connection failed - cleaning up all agent connections and views
[07:14:21] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1000
[07:14:21] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:14:21] [CLEANUP] ========================================
[07:14:21] [CLEANUP] Cleaning up all agent connections and views
[07:14:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:21] [CLEANUP] Stopped and removed 0 video connections
[07:14:21] [CLEANUP] Removed 0 video views
[07:14:21] [CLEANUP] Removed 0 feed scroll views
[07:14:21] [CLEANUP] Removed 0 status labels
[07:14:21] [CLEANUP] Reset agent query state
[07:14:21] [CLEANUP] Updated page indicator
[07:14:21] [CLEANUP] Rebuilt video layout
[07:14:21] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:21] [CLEANUP] ========================================
[07:14:21] [SERVER] Starting reconnect polling (5s interval)
[07:14:21] [CLEANUP] ========================================
[07:14:21] [CLEANUP] Cleaning up all agent connections and views
[07:14:21] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[07:14:21] [CLEANUP] Stopped and removed 0 video connections
[07:14:21] [CLEANUP] Removed 0 video views
[07:14:21] [CLEANUP] Removed 0 feed scroll views
[07:14:21] [CLEANUP] Removed 0 status labels
[07:14:21] [CLEANUP] Reset agent query state
[07:14:21] [CLEANUP] Updated page indicator
[07:14:21] [CLEANUP] Rebuilt video layout
[07:14:21] [CLEANUP] ✅ All agent connections and views cleaned up
[07:14:21] [CLEANUP] ========================================
[07:14:21] [SERVER] Starting reconnect polling (5s interval)
[07:14:21] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18323, 18322, 18321, 18320, 18319]
[07:14:21] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:21] [CELL_UPLOAD] → not my message, setting complete
[07:14:21] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:14:21] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:14:21] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:14:21] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:14:21] [LIFECYCLE] App resigning active - cleared crash flag
[07:14:22] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[07:14:22] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[07:14:22] [LIFECYCLE] App entering background - cleared crash flag
[07:14:22] [CLIENT_SIG] Disconnecting
[07:14:22] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[07:14:22] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[07:14:22] [WS] Canceling WebSocket for query connection to iosILUIWU
[07:14:22] In cleanupPeer
[07:14:22] In cleanupPeer
[07:14:22] [LIFECYCLE] WebRTC audio disabled
[07:14:22] [LIFECYCLE] AVAudioSession deactivated
[07:14:22] [LIFECYCLE] All connections stopped
[07:14:22] [CLIENT_SIG] WebSocket closed with code 1001
[07:14:22] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[07:14:22] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[07:14:22] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[07:14:22] [SERVER] Stopped reconnect polling
[07:14:22] Will request stop of video 0
[07:14:22] Will request stop of video 0
[07:14:22] [WS] URLSession invalidated successfully
[07:14:22] [APP_DISCONNECT] Scene disconnecting - logging pending uploads...
[07:14:22] [APP_TERMINATE] ⚠️ 2 pending uploads in DB queue:
[07:14:22] [APP_TERMINATE] - id=335, file=t_21b86ebc5e802df4.jpg, status=uploading, retries=0, size=0.0MB
[07:14:22] [APP_TERMINATE] - id=474, file=1f0e8529cd56643f.mov, status=uploading, retries=0, size=0.0MB
[07:14:22] [LIFECYCLE] ViewController deallocated
[07:31:36] [CRASH] No crash detected
[07:31:36] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[07:31:36] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[07:31:36] [GIPHY] SDK not available - using REST API fallback
[07:31:36] [BACKGROUND] Background fetch enabled
[07:31:36] [CLEANUP] No old timer messages to delete
[07:31:36] [AUTH] Starting PIN authentication
[07:31:36] [PUSH] Silent push received
[07:31:36] [PUSH_EMBED] 📩 Received embedded message: id=18324, type=0, sender=Esra
[07:31:36] [PUSH_EMBED] ✅ Saved message 18324 to local DB (sync)
[07:31:36] [PUSH_EMBED] Created new cache with embedded message 18324
[07:31:36] [PUSH_EMBED] Fetching evolution data for message 18324 in background
[07:31:36] [PUSH_EMBED] ✅ Fully processed message 18324
[07:31:36] [PUSH] Embedded message handled instantly from silent push
[07:31:36] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[07:31:36] [PUSH_EMBED] Got evolution data for message 18324, saving to local DB
[07:31:36] [PUSH_EMBED] Saved evolution data for message 18324
[07:31:36] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[07:31:36] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:31:36] [USER] ✅ User registered successfully
[07:31:36] [PUSH] User registration after token update: success
[07:31:36] [PRELOAD] Cache has only 1 messages (from push) - will load full history
[07:31:36] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18324)...
[07:31:36] [PRELOAD] No messages or parse error
[07:31:37] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[07:31:37] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:31:37] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[07:31:37] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[07:31:37] [CLIENT_SIG] WebSocket opened
[07:31:37] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[07:31:37] [CLIENT_SIG] Connected! clientId=0mgZU2RdR_8TlkDm
[07:31:37] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[07:31:37] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[07:31:37] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:31:38] [PIN_AUTH] Correct PIN
[07:31:38] [SECURITY] Restored real session: ILUIWU
[07:31:38] [SECURITY] Restored real session: ILUIWU
[07:31:38] [SECURITY] Saved real session: ILUIWU
[07:31:38] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[07:31:38] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[07:31:38] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[07:31:38] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[07:31:38] [THEME] Applying current theme
[07:31:38] [CHAT] Applied day theme (mode: day)
[07:31:38] [SECURITY] Saved real session: ILUIWU
[07:31:38] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[07:31:38] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[07:31:38] [NETWORK] Network monitor started
[07:31:38] [NETWORK] Status changed: connected
[07:31:39] Did transition
[07:31:39] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[07:31:39] [VIEWER] Screen lock enabled - normal idle behavior
[07:31:39] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[07:31:39] [VCC] ========== VideoConnectionClass INIT ==========
[07:31:39] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[07:31:39] [DATA AUDIO] ========== setupWebRTC() START ==========
[07:31:39] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[07:31:39] [DATA AUDIO] Creating encoder/decoder factories...
[07:31:39] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[07:31:39] [CODEC] Viewer selected encoder: AV1 (best quality)
[07:31:39] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[07:31:39] [DATA AUDIO] ✅ Factory created
[07:31:39] [DATA AUDIO] RTCAudioSession locked
[07:31:39] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[07:31:39] [DATA AUDIO] RTCAudioSession unlocked
[07:31:39] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[07:31:39] [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"]
[07:31:39] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[07:31:39] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:31:39] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[07:31:39] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[07:31:39] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[07:31:39] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[07:31:39] Did transition
[07:31:39] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[07:31:39] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:31:39] [CHUNK] Merged 860 reactions synchronously
[07:31:39] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[07:31:39] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[07:31:39] [MIGRATION] No messages need sender_name backfill
[07:31:39] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[07:31:39] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[07:31:39] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[07:31:39] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[07:31:39] [USER] ✅ User registered successfully
[07:31:39] [USER] User registration successful
[07:31:39] [GALLERY_DB] ✅ Loaded 468 media messages
[07:31:39] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18324
[07:31:39] [INCREMENTAL_SYNC] ✅ No new messages
[07:31:39] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[07:31:39] [GALLERY] First 5 after sort (newest first):
[07:31:39] [GALLERY] 0: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[07:31:39] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[07:31:39] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[07:31:39] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[07:31:39] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[07:31:39] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[07:31:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18274, 18275, 18276, 18277, 18278]
[07:31:39] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[07:31:39] [CELL_UPLOAD] configure: msgId=18276, file=a9dc1013e9d5a3e6.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:31:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:31:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a9dc1013e9d5a3e6.jpg, overlayExists=true
[07:31:39] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:31:39] [CELL_UPLOAD] → not my message, setting complete
[07:31:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:31:39] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:31:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:31:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:31:39] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18323 → 18324
[07:31:39] [SERVER] Starting reconnect polling (5s interval)
[07:31:39] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[07:31:39] [ICONS] Offset applied: -14.6
[07:31:39] [ICONS] New left margin: 11.2, New right margin: 11.3
[07:31:39] [ICONS] Chat center: (31.2, 87.0)
[07:31:39] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[07:31:39] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[07:31:39] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[07:31:39] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[07:31:39] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[07:31:39] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[07:31:39] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[07:31:39] [ICONS] Screen width: 440.0
[07:31:39] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:31:39] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[07:31:39] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[07:31:39] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[07:31:39] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[07:31:39] [UNSENT_RETRY] Checking for unsent messages...
[07:31:39] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[07:31:39] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[07:31:39] [UPLOAD_RECOVERY] Session: ILUIWU
[07:31:39] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[07:31:39] [UPLOAD_RECOVERY] Checking recent media messages on server...
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18320, file=79f8421197610988.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[07:31:39] [UPLOAD_RECOVERY] Verifying 7 media files exist on server...
[07:31:39] [PENDING_UPLOAD] Total pending upload messages: 0
[07:31:39] [UNSENT_RETRY] No unsent messages found
[07:31:39] new_session POST ok: token len=157
[07:31:39] HELLO → sent (fetched token, role=query)
[07:31:39] [SIG] hello_ok received for query connection - ready to query agents
[07:31:39] [SIG] get_agents request sent for sessionId=ILUIWU
[07:31:39] [SIG] get_agents request sent for sessionId=iosILUIWU
[07:31:39] [SERVER] Stopped reconnect polling
[07:31:39] [SIG] agents_list received: []
[07:31:39] [SIG] agents_list received: []
[07:31:39] [UPLOAD_RECOVERY] ✅ All media files verified on server
[07:31:39] [COMBINED_FETCH] Loaded 7090 read receipts, 858 messages with reactions
[07:31:39] [READBY_ENRICH] Enriched 50 messages with readBy data
[07:31:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18274, 18275, 18276, 18277, 18278]
[07:31:39] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:31:39] [CELL_UPLOAD] → not my message, setting complete
[07:31:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:31:39] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:31:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:31:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:31:40] [NETWORK] Status changed: connected
[07:31:41] [PUSH] Silent push received
[07:31:41] [PUSH_EMBED] No embedded message_data in notification
[07:31:41] [PUSH] No embedded data, pre-loading messages from server
[07:31:41] [PUSH_PRELOAD] Fetching messages for instant display cache
[07:31:41] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[07:31:41] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[07:31:41] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[07:31:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18324, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}]
[07:31:41] [PUSH] Parsed message_id: 18324
[07:31:41] [PUSH] Parsed operation_type: 3
[07:31:41] [PUSH] Taking direct action: opType=3, messageId=18324
[07:31:41] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18324
[07:31:43] [CLIENT_SIG] Event received: type=3 messageId=18324
[07:31:43] [WS_EVENT] Received event: type=3, messageId=18324
[07:31:43] [WS_EVENT] Read receipt for message 18324 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:31:52] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[07:31:52] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[07:32:00] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[07:32:00] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[07:32:00] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[07:32:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18324, 18323, 18322, 18321]
[07:32:00] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:00] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[07:32:00] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[07:32:00] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:00] [CELL_UPLOAD] → not my message, setting complete
[07:32:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:32:02] [CLIENT_SIG] Event received: type=0 messageId=18325
[07:32:02] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18325,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 06:32:01"}
[07:32:02] [WS_EVENT] Received event: type=0, messageId=18325
[07:32:02] [WS_EVENT] 📨 New message notification (msgId=18325) - triggering incremental refresh, currentMsgCount=51
[07:32:02] [CHAT] receive_message.php JSON: ["message_id": 18325, "session_id": ILUIWU, "datesent_utc": 2026-01-21 06:32:01, "ok": 1, "message_type": 0, "file_name": ]
[07:32:02] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[07:32:02] [DB_UPGRADE] Upgrading message ID: -1 → 18325, preserveOriginalDate=false
[07:32:02] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18324
[07:32:02] [DB_UPGRADE] ✅ Upgraded -1 → 18325 with send_status=0, 1 row(s) affected
[07:32:02] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18325
[07:32:02] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18325
[07:32:02] ReloadData 9
[07:32:02] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[07:32:02] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:02] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:02] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:02] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[07:32:02] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[07:32:03] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18274, 18275, 18276, 18277, 18278]
[07:32:03] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:03] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:03] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:07] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[07:32:07] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[07:32:07] [SEND_MESSAGE] ✅ Added optimistic message id=-2 to arrays, newMsgCount=52
[07:32:07] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-2, 18325, 18324, 18323, 18322]
[07:32:07] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:07] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:07] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[07:32:07] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[07:32:07] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:07] [CELL_UPLOAD] → not my message, setting complete
[07:32:07] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:32:09] [MENU] dismissAnyExistingMenu called
[07:32:09] [MENU] dismissAnyExistingMenu completed
[07:32:09] [CLIENT_SIG] Event received: type=0 messageId=18326
[07:32:09] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18326,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 06:32:07"}
[07:32:09] [WS_EVENT] Received event: type=0, messageId=18326
[07:32:09] [WS_EVENT] 📨 New message notification (msgId=18326) - triggering incremental refresh, currentMsgCount=52
[07:32:09] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-21 06:32:07, "file_name": , "ok": 1, "message_type": 0, "session_id": ILUIWU, "message_id": 18326]
[07:32:09] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=52
[07:32:09] [DB_UPGRADE] Upgrading message ID: -2 → 18326, preserveOriginalDate=false
[07:32:09] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18325
[07:32:09] [DB_UPGRADE] ✅ Upgraded -2 → 18326 with send_status=0, 1 row(s) affected
[07:32:09] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -2 → 18326
[07:32:09] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -2 → 18326
[07:32:09] ReloadData 9
[07:32:09] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[07:32:09] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:09] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:09] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[07:32:09] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=52
[07:32:09] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:09] [CELL_UPLOAD] → not my message, setting complete
[07:32:09] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:32:10] [MENU] dismissAnyExistingMenu called
[07:32:10] [MENU] dismissAnyExistingMenu completed
[07:32:11] [SCROLL_BTN] Showing button - 382pt from bottom > half 379pt
[07:32:11] [MENU] dismissAnyExistingMenu called
[07:32:11] [MENU] dismissAnyExistingMenu completed
[07:32:11] [MENU] dismissAnyExistingMenu called
[07:32:11] [MENU] dismissAnyExistingMenu completed
[07:32:13] [LOCK] Lock button tapped - locking app immediately
[07:32:13] [LOCK] Received lock app notification
[07:32:14] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18274, 18275, 18276, 18277, 18278]
[07:32:14] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:32:14] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:32:14] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:32:14] [LIFECYCLE] App resigning active - cleared crash flag
[07:32:15] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[07:32:15] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[07:32:15] [LIFECYCLE] App entering background - cleared crash flag
[07:32:15] [CLIENT_SIG] Disconnecting
[07:32:15] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[07:32:15] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[07:32:15] [WS] Canceling WebSocket for query connection to iosILUIWU
[07:32:15] In cleanupPeer
[07:32:15] In cleanupPeer
[07:32:15] [LIFECYCLE] WebRTC audio disabled
[07:32:15] [LIFECYCLE] AVAudioSession deactivated
[07:32:15] [LIFECYCLE] All connections stopped
[07:32:15] [SERVER] Stopped reconnect polling
[07:32:15] Will request stop of video 0
[07:32:15] Will request stop of video 0
[07:32:15] [CLIENT_SIG] WebSocket closed with code 1001
[07:32:15] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[07:32:15] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001
[07:32:15] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:32: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/}
[07:32:15] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[07:32:15] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:32:15] [WS] Query connection failed - cleaning up all agent connections and views
[07:32:15] [APP_DISCONNECT] Scene disconnecting - logging pending uploads...
[07:32:15] [APP_TERMINATE] ⚠️ 2 pending uploads in DB queue:
[07:32:15] [APP_TERMINATE] - id=335, file=t_21b86ebc5e802df4.jpg, status=uploading, retries=0, size=0.0MB
[07:32:15] [APP_TERMINATE] - id=474, file=1f0e8529cd56643f.mov, status=uploading, retries=0, size=0.0MB
[07:32:15] [LIFECYCLE] ViewController deallocated
[07:44:27] [CRASH] No crash detected
[07:44:27] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[07:44:27] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[07:44:27] [GIPHY] SDK not available - using REST API fallback
[07:44:27] [BACKGROUND] Background fetch enabled
[07:44:27] [AUTH] Starting PIN authentication
[07:44:27] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[07:44:27] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:44:27] [CLEANUP] No old timer messages to delete
[07:44:27] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[07:44:27] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[07:44:27] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:44:27] [USER] ✅ User registered successfully
[07:44:27] [PUSH] User registration after token update: success
[07:44:27] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[07:44:27] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[07:44:27] [CLIENT_SIG] WebSocket opened
[07:44:27] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[07:44:27] [CLIENT_SIG] Connected! clientId=lrynIVgQ_bi1VK1_
[07:44:27] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[07:44:27] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[07:44:27] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18326)...
[07:44:27] [PRELOAD] No messages or parse error
[07:44:28] [PIN_AUTH] Correct PIN
[07:44:29] [SECURITY] Restored real session: ILUIWU
[07:44:29] [SECURITY] Restored real session: ILUIWU
[07:44:29] [SECURITY] Saved real session: ILUIWU
[07:44:29] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[07:44:29] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[07:44:29] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[07:44:29] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[07:44:29] [THEME] Applying current theme
[07:44:29] [CHAT] Applied day theme (mode: day)
[07:44:29] [SECURITY] Saved real session: ILUIWU
[07:44:29] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[07:44:29] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[07:44:29] [NETWORK] Network monitor started
[07:44:29] [NETWORK] Status changed: connected
[07:44:29] Did transition
[07:44:29] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[07:44:29] [VIEWER] Screen lock enabled - normal idle behavior
[07:44:29] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[07:44:29] [VCC] ========== VideoConnectionClass INIT ==========
[07:44:29] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[07:44:29] [DATA AUDIO] ========== setupWebRTC() START ==========
[07:44:29] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[07:44:29] [DATA AUDIO] Creating encoder/decoder factories...
[07:44:29] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[07:44:29] [CODEC] Viewer selected encoder: AV1 (best quality)
[07:44:29] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[07:44:29] [DATA AUDIO] ✅ Factory created
[07:44:29] [DATA AUDIO] RTCAudioSession locked
[07:44:29] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[07:44:29] [DATA AUDIO] RTCAudioSession unlocked
[07:44:29] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[07:44:29] [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"]
[07:44:29] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[07:44:29] [WS] Opening session at ws://crivello.dyndns.org:8081/
[07:44:29] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[07:44:29] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[07:44:29] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[07:44:29] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[07:44:29] Did transition
[07:44:29] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[07:44:29] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:44:29] [CHUNK] Merged 860 reactions synchronously
[07:44:29] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[07:44:29] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[07:44:29] [MIGRATION] No messages need sender_name backfill
[07:44:29] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[07:44:29] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[07:44:29] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[07:44:29] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[07:44:29] [USER] ✅ User registered successfully
[07:44:29] [USER] User registration successful
[07:44:29] [GALLERY_DB] ✅ Loaded 468 media messages
[07:44:29] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18326
[07:44:29] [INCREMENTAL_SYNC] ✅ No new messages
[07:44:29] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[07:44:29] [GALLERY] First 5 after sort (newest first):
[07:44:29] [GALLERY] 0: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[07:44:29] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[07:44:29] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[07:44:29] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[07:44:29] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[07:44:29] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[07:44:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:29] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[07:44:29] [CELL_UPLOAD] configure: msgId=18276, file=a9dc1013e9d5a3e6.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:29] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a9dc1013e9d5a3e6.jpg, overlayExists=true
[07:44:29] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:29] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:29] [SERVER] Starting reconnect polling (5s interval)
[07:44:29] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[07:44:29] [ICONS] Offset applied: -14.6
[07:44:29] [ICONS] New left margin: 11.2, New right margin: 11.3
[07:44:29] [ICONS] Chat center: (31.2, 87.0)
[07:44:29] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[07:44:29] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[07:44:29] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[07:44:29] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[07:44:29] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[07:44:29] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[07:44:29] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[07:44:29] [ICONS] Screen width: 440.0
[07:44:29] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[07:44:29] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[07:44:29] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[07:44:29] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[07:44:29] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[07:44:29] [UNSENT_RETRY] Checking for unsent messages...
[07:44:29] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[07:44:29] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[07:44:29] [UPLOAD_RECOVERY] Session: ILUIWU
[07:44:29] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[07:44:29] [UPLOAD_RECOVERY] Checking recent media messages on server...
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18320, file=79f8421197610988.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[07:44:29] [UPLOAD_RECOVERY] Verifying 7 media files exist on server...
[07:44:29] [PENDING_UPLOAD] Total pending upload messages: 0
[07:44:29] [UNSENT_RETRY] No unsent messages found
[07:44:29] new_session POST ok: token len=157
[07:44:29] HELLO → sent (fetched token, role=query)
[07:44:29] [SIG] hello_ok received for query connection - ready to query agents
[07:44:29] [SIG] get_agents request sent for sessionId=ILUIWU
[07:44:29] [SIG] get_agents request sent for sessionId=iosILUIWU
[07:44:29] [SERVER] Stopped reconnect polling
[07:44:29] [SIG] agents_list received: []
[07:44:29] [SIG] agents_list received: []
[07:44:29] [UPLOAD_RECOVERY] ✅ All media files verified on server
[07:44:29] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[07:44:29] [READBY_ENRICH] Enriched 50 messages with readBy data
[07:44:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:30] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:30] [CELL_UPLOAD] → not my message, setting complete
[07:44:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:44:30] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:31] [MENU] dismissAnyExistingMenu called
[07:44:31] [MENU] dismissAnyExistingMenu completed
[07:44:38] [LOCK] Lock button tapped - locking app immediately
[07:44:38] [LOCK] Received lock app notification
[07:44:42] [PIN_AUTH] Correct PIN
[07:44:42] [SECURITY] Restored real session: ILUIWU
[07:44:42] [SECURITY] Restored real session: ILUIWU
[07:44:42] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[07:44:42] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[07:44:42] [AUTH] UI update complete
[07:44:42] [FAKE MODE] Exiting fake mode, restoring real session
[07:44:42] [SECURITY] Restored real session: ILUIWU
[07:44:42] [SECURITY] Saved real session: ILUIWU
[07:44:42] [FAKE MODE] ✅ Restored real session: ILUIWU
[07:44:42] [FAKE MODE] Loaded 50 messages (limited to page size)
[07:44:42] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:42] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:42] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[07:44:42] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[07:44:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:42] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:42] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:42] [USER] ✅ User registered successfully
[07:44:42] [PUSH] User registration after token update: success
[07:44:43] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[07:44:43] [FAKE MODE] Enriched 50 messages with readBy data
[07:44:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:43] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:43] [CELL_UPLOAD] → not my message, setting complete
[07:44:43] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:44:43] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:43] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:43] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:44] [MENU] dismissAnyExistingMenu called
[07:44:44] [MENU] dismissAnyExistingMenu completed
[07:44:44] [SCROLL_BTN] Showing button - 380pt from bottom > half 379pt
[07:44:45] [MENU] dismissAnyExistingMenu called
[07:44:45] [MENU] dismissAnyExistingMenu completed
[07:44:48] [LIFECYCLE] App resigning active - cleared crash flag
[07:44:50] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=false
[07:44:50] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[07:44:50] [PUSH] handlePollEventsNotification userInfo: [:]
[07:44:50] [PUSH] No message_id in userInfo
[07:44:50] [PUSH] No operation_type in userInfo
[07:44:50] [FAST_REFRESH] Evolution disabled - performing incremental sync
[07:44:50] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[07:44:50] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[07:44:50] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[07:44:50] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[07:44:50] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18326
[07:44:50] [INCREMENTAL_SYNC] ✅ No new messages
[07:44:50] [FAST_REFRESH] Incremental sync complete - 50 messages
[07:44:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:50] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:50] [CELL_UPLOAD] → not my message, setting complete
[07:44:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:44:50] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:50] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:50] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:50] [LOCK] Lock button tapped - locking app immediately
[07:44:50] [LOCK] Received lock app notification
[07:44:50] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[07:44:50] [FAST_REFRESH] Enriched 50 messages with readBy data
[07:44:51] [LIFECYCLE] App resigning active - cleared crash flag
[07:44:51] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[07:44:51] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:51] [CELL_UPLOAD] → not my message, setting complete
[07:44:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[07:44:51] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[07:44:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[07:44:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[07:44:51] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[07:44:51] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[07:44:51] [LIFECYCLE] App entering background - cleared crash flag
[07:44:51] [CLIENT_SIG] Disconnecting
[07:44:51] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[07:44:51] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[07:44:51] [WS] Canceling WebSocket for query connection to iosILUIWU
[07:44:51] In cleanupPeer
[07:44:51] In cleanupPeer
[07:44:51] [LIFECYCLE] WebRTC audio disabled
[07:44:51] [LIFECYCLE] AVAudioSession deactivated
[07:44:51] [LIFECYCLE] All connections stopped
[07:44:51] [SERVER] Stopped reconnect polling
[07:44:51] [CLIENT_SIG] WebSocket closed with code 1001
[07:44:51] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[07:44:51] [WS] WebSocket ACTUALLY CLOSED - isQueryOnly=true, connectionStr=iosILUIWU, closeCode=1001
[07:44:51] [WS] Query connection to iosILUIWU closed - cleaning up all agent connections and views
[07:44:51] Will request stop of video 0
[07:44:51] Will request stop of video 0
[07:44:51] [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/}
[07:44:51] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[07:44:51] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[07:44:51] [WS] Query connection failed - cleaning up all agent connections and views
[07:44:51] [APP_DISCONNECT] Scene disconnecting - logging pending uploads...
[07:44:51] [APP_TERMINATE] ⚠️ 2 pending uploads in DB queue:
[07:44:51] [APP_TERMINATE] - id=335, file=t_21b86ebc5e802df4.jpg, status=uploading, retries=0, size=0.0MB
[07:44:51] [APP_TERMINATE] - id=474, file=1f0e8529cd56643f.mov, status=uploading, retries=0, size=0.0MB
[08:17:56] [CRASH] No crash detected
[08:17:56] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[08:17:56] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[08:17:56] [GIPHY] SDK not available - using REST API fallback
[08:17:56] [BACKGROUND] Background fetch enabled
[08:17:56] [AUTH] Starting PIN authentication
[08:17:56] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:17:56] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:17:56] [CLEANUP] No old timer messages to delete
[08:17:56] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[08:17:56] [CLIENT_SIG] WebSocket opened
[08:17:56] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:17:56] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[08:17:56] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:17:56] [CLIENT_SIG] Connected! clientId=PThjG8Gi37cTAsXj
[08:17:56] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:17:56] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:17:56] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":1,"removed_from_other_channels":0}
[08:17:56] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[08:17:56] [USER] ✅ User registered successfully
[08:17:56] [PUSH] User registration after token update: success
[08:17:56] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18326)...
[08:17:56] [PRELOAD] No messages or parse error
[08:17:57] [PIN_AUTH] Correct PIN
[08:17:57] [SECURITY] Restored real session: ILUIWU
[08:17:57] [SECURITY] Restored real session: ILUIWU
[08:17:58] [SECURITY] Saved real session: ILUIWU
[08:17:58] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[08:17:58] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:17:58] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[08:17:58] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[08:17:58] [THEME] Applying current theme
[08:17:58] [CHAT] Applied day theme (mode: day)
[08:17:58] [SECURITY] Saved real session: ILUIWU
[08:17:58] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:17:58] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:17:58] [NETWORK] Network monitor started
[08:17:58] [NETWORK] Status changed: connected
[08:17:58] Did transition
[08:17:58] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[08:17:58] [VIEWER] Screen lock enabled - normal idle behavior
[08:17:58] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[08:17:58] [VCC] ========== VideoConnectionClass INIT ==========
[08:17:58] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[08:17:58] [DATA AUDIO] ========== setupWebRTC() START ==========
[08:17:58] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[08:17:58] [DATA AUDIO] Creating encoder/decoder factories...
[08:17:58] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[08:17:58] [CODEC] Viewer selected encoder: AV1 (best quality)
[08:17:58] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[08:17:58] [DATA AUDIO] ✅ Factory created
[08:17:58] [DATA AUDIO] RTCAudioSession locked
[08:17:58] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[08:17:58] [DATA AUDIO] RTCAudioSession unlocked
[08:17:58] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[08:17:58] [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"]
[08:17:58] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[08:17:58] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:17:58] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[08:17:58] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[08:17:58] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[08:17:58] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[08:17:58] Did transition
[08:17:58] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[08:17:58] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[08:17:58] [CHUNK] Merged 860 reactions synchronously
[08:17:58] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[08:17:58] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[08:17:58] [MIGRATION] No messages need sender_name backfill
[08:17:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[08:17:58] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[08:17:58] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[08:17:58] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[08:17:58] [USER] ✅ User registered successfully
[08:17:58] [USER] User registration successful
[08:17:58] [GALLERY_DB] ✅ Loaded 468 media messages
[08:17:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18326
[08:17:58] [INCREMENTAL_SYNC] ✅ No new messages
[08:17:58] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[08:17:58] [GALLERY] First 5 after sort (newest first):
[08:17:58] [GALLERY] 0: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[08:17:58] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[08:17:58] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[08:17:58] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[08:17:58] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[08:17:58] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[08:17:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:17:58] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[08:17:58] [CELL_UPLOAD] configure: msgId=18276, file=a9dc1013e9d5a3e6.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:17:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:17:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a9dc1013e9d5a3e6.jpg, overlayExists=true
[08:17:58] [SERVER] Starting reconnect polling (5s interval)
[08:17:58] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[08:17:58] [ICONS] Offset applied: -14.6
[08:17:58] [ICONS] New left margin: 11.2, New right margin: 11.3
[08:17:58] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:17:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[08:17:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[08:17:58] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[08:17:58] [ICONS] Chat center: (31.2, 87.0)
[08:17:58] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[08:17:58] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[08:17:58] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[08:17:58] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[08:17:58] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[08:17:58] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[08:17:58] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[08:17:58] [ICONS] Screen width: 440.0
[08:17:58] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:17:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:17:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:17:58] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[08:17:58] [UNSENT_RETRY] Checking for unsent messages...
[08:17:58] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[08:17:58] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[08:17:58] [UPLOAD_RECOVERY] Session: ILUIWU
[08:17:58] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[08:17:58] [UPLOAD_RECOVERY] Checking recent media messages on server...
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18320, file=79f8421197610988.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[08:17:58] [UPLOAD_RECOVERY] Verifying 7 media files exist on server...
[08:17:58] [PENDING_UPLOAD] Total pending upload messages: 0
[08:17:58] [UNSENT_RETRY] No unsent messages found
[08:17:58] new_session POST ok: token len=157
[08:17:58] HELLO → sent (fetched token, role=query)
[08:17:58] [SIG] hello_ok received for query connection - ready to query agents
[08:17:58] [SIG] get_agents request sent for sessionId=ILUIWU
[08:17:58] [SIG] get_agents request sent for sessionId=iosILUIWU
[08:17:58] [SERVER] Stopped reconnect polling
[08:17:58] [SIG] agents_list received: []
[08:17:58] [SIG] agents_list received: []
[08:17:58] [UPLOAD_RECOVERY] ✅ All media files verified on server
[08:17:59] [MUTE] Status sent to server: muted=0, response code=200
[08:17:59] [MUTE] Status sent to server: muted=0, response code=200
[08:18:00] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[08:18:00] [READBY_ENRICH] Enriched 50 messages with readBy data
[08:18:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:18:00] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[08:18:00] [CELL_UPLOAD] → not my message, setting complete
[08:18:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[08:18:00] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:18:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:18:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:18:05] [LIFECYCLE] App resigning active - cleared crash flag
[08:18:05] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:18:05] [SECURITY] Saved background timestamp
[08:18:05] [LIFECYCLE] App entering background - cleared crash flag
[08:18:05] [CLIENT_SIG] Disconnecting
[08:18:05] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:18:05] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[08:18:05] [WS] Canceling WebSocket for query connection to iosILUIWU
[08:18:05] In cleanupPeer
[08:18:05] In cleanupPeer
[08:18:05] [LIFECYCLE] WebRTC audio disabled
[08:18:05] [LIFECYCLE] AVAudioSession deactivated
[08:18:05] [LIFECYCLE] All connections stopped
[08:18:05] [CLIENT_SIG] WebSocket closed with code 1001
[08:18:05] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:18:05] [SERVER] Stopped reconnect polling
[08:18:05] Will request stop of video 0
[08:18:05] Will request stop of video 0
[08:18:05] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:18:05] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:18:05] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[08:18:05] [WS] Query connection error - cleaning up all agent connections and views
[08:18:05] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[08:18:05] [WS] Query connection failed - cleaning up all agent connections and views
[08:18:05] [PIP] Removing 0 tracks from PiP for connection 0
[08:18:05] [PIP] ✅ All tracks removed for connection 0
[08:18:05] [PIP] Removing 0 tracks from PiP for connection 0
[08:18:05] [PIP] ✅ All tracks removed for connection 0
[08:18:05] [CLEANUP] ========================================
[08:18:05] [CLEANUP] Cleaning up all agent connections and views
[08:18:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:18:05] [CLEANUP] Stopped and removed 0 video connections
[08:18:05] [CLEANUP] Removed 0 video views
[08:18:05] [CLEANUP] Removed 0 feed scroll views
[08:18:05] [CLEANUP] Removed 0 status labels
[08:18:05] [CLEANUP] Reset agent query state
[08:18:05] [CLEANUP] Updated page indicator
[08:18:05] [CLEANUP] Rebuilt video layout
[08:18:05] [CLEANUP] ✅ All agent connections and views cleaned up
[08:18:05] [CLEANUP] ========================================
[08:18:05] [SERVER] Skipping reconnect polling - app is in background
[08:18:05] [WS] URLSession invalidated successfully
[08:18:05] [CLEANUP] ========================================
[08:18:05] [CLEANUP] Cleaning up all agent connections and views
[08:18:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:18:05] [CLEANUP] Stopped and removed 0 video connections
[08:18:05] [CLEANUP] Removed 0 video views
[08:18:05] [CLEANUP] Removed 0 feed scroll views
[08:18:05] [CLEANUP] Removed 0 status labels
[08:18:05] [CLEANUP] Reset agent query state
[08:18:05] [CLEANUP] Updated page indicator
[08:18:05] [CLEANUP] Rebuilt video layout
[08:18:05] [CLEANUP] ✅ All agent connections and views cleaned up
[08:18:05] [CLEANUP] ========================================
[08:18:05] [SERVER] Skipping reconnect polling - app is in background
[08:18:31] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[08:18:31] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:18:31] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:18:31] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:18:31] HELLO → sent (cached token, role=query)
[08:18:32] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[08:18:32] [WS] Query connection failed - cleaning up all agent connections and views
[08:18:32] [WS] WebSocket task completed with error - isQueryOnly=true: The operation couldn’t be completed. Software caused connection abort
[08:18:32] [WS] Query connection error - cleaning up all agent connections and views
[08:18:32] [CLEANUP] ========================================
[08:18:32] [CLEANUP] Cleaning up all agent connections and views
[08:18:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:18:32] [CLEANUP] Stopped and removed 0 video connections
[08:18:32] [CLEANUP] Removed 0 video views
[08:18:32] [CLEANUP] Removed 0 feed scroll views
[08:18:32] [CLEANUP] Removed 0 status labels
[08:18:32] [CLEANUP] Reset agent query state
[08:18:32] [CLEANUP] Updated page indicator
[08:18:32] [CLEANUP] Rebuilt video layout
[08:18:32] [CLEANUP] ✅ All agent connections and views cleaned up
[08:18:32] [CLEANUP] ========================================
[08:18:32] [SERVER] Skipping reconnect polling - app is in background
[08:18:32] [CLEANUP] ========================================
[08:18:32] [CLEANUP] Cleaning up all agent connections and views
[08:18:32] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:18:32] [CLEANUP] Stopped and removed 0 video connections
[08:18:32] [CLEANUP] Removed 0 video views
[08:18:32] [CLEANUP] Removed 0 feed scroll views
[08:18:32] [CLEANUP] Removed 0 status labels
[08:18:32] [CLEANUP] Reset agent query state
[08:18:32] [CLEANUP] Updated page indicator
[08:18:32] [CLEANUP] Rebuilt video layout
[08:18:32] [CLEANUP] ✅ All agent connections and views cleaned up
[08:18:32] [CLEANUP] ========================================
[08:18:32] [SERVER] Skipping reconnect polling - app is in background
[08:18:32] [CLIENT_SIG] WebSocket opened
[08:18:32] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:18:32] [CLIENT_SIG] Connected! clientId=fQpFAYjAK3L8qBWe
[08:18:32] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:18:32] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:19:00] [LAST_SEEN] Fetch error: The request timed out.
[08:19:00] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[08:19:00] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:19:00] [CLIENT_SIG] Task completed with error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <21230A4A-E1C7-4D36-B053-9D1790606E30>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <21230A4A-E1C7-4D36-B053-9D1790606E30>.<1>, NSLocalizedDescription=The network connection was lost.}
[08:19:00] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:19:00] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=89 "Operation canceled" UserInfo={NSDescription=Operation canceled}
[08:19:00] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:19:00] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:19:00] HELLO → sent (cached token, role=query)
[08:19:00] [SIG] hello_ok received for query connection - ready to query agents
[08:19:00] [SIG] get_agents request sent for sessionId=ILUIWU
[08:19:00] [SIG] get_agents request sent for sessionId=iosILUIWU
[08:19:00] [SERVER] Stopped reconnect polling
[08:19:00] [SIG] agents_list received: []
[08:19:00] [SIG] agents_list received: []
[08:19:01] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[08:19:01] [WS] Query connection failed - cleaning up all agent connections and views
[08:19:01] [WS] WebSocket task completed with error - isQueryOnly=true: The operation couldn’t be completed. Software caused connection abort
[08:19:01] [WS] Query connection error - cleaning up all agent connections and views
[08:19:01] [CLEANUP] ========================================
[08:19:01] [CLEANUP] Cleaning up all agent connections and views
[08:19:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:19:01] [CLEANUP] Stopped and removed 0 video connections
[08:19:01] [CLEANUP] Removed 0 video views
[08:19:01] [CLEANUP] Removed 0 feed scroll views
[08:19:01] [CLEANUP] Removed 0 status labels
[08:19:01] [CLEANUP] Reset agent query state
[08:19:01] [CLEANUP] Updated page indicator
[08:19:01] [CLEANUP] Rebuilt video layout
[08:19:01] [CLEANUP] ✅ All agent connections and views cleaned up
[08:19:01] [CLEANUP] ========================================
[08:19:01] [SERVER] Skipping reconnect polling - app is in background
[08:19:01] [CLEANUP] ========================================
[08:19:01] [CLEANUP] Cleaning up all agent connections and views
[08:19:01] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:19:01] [CLEANUP] Stopped and removed 0 video connections
[08:19:01] [CLEANUP] Removed 0 video views
[08:19:01] [CLEANUP] Removed 0 feed scroll views
[08:19:01] [CLEANUP] Removed 0 status labels
[08:19:01] [CLEANUP] Reset agent query state
[08:19:01] [CLEANUP] Updated page indicator
[08:19:01] [CLEANUP] Rebuilt video layout
[08:19:01] [CLEANUP] ✅ All agent connections and views cleaned up
[08:19:01] [CLEANUP] ========================================
[08:19:01] [SERVER] Skipping reconnect polling - app is in background
[08:21:03] [NETWORK] Status changed: connected
[08:21:03] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[08:21:03] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:21:03] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:21:03] [CLIENT_SIG] WebSocket opened
[08:21:03] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:21:03] HELLO → sent (cached token, role=query)
[08:21:03] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:21:03] [SIG] hello_ok received for query connection - ready to query agents
[08:21:03] [SIG] get_agents request sent for sessionId=ILUIWU
[08:21:03] [SIG] get_agents request sent for sessionId=iosILUIWU
[08:21:03] [CLIENT_SIG] Connected! clientId=TJVw1ePOKqHbizI6
[08:21:03] [SERVER] Stopped reconnect polling
[08:21:03] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:21:03] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:21:03] [SIG] agents_list received: []
[08:21:03] [SIG] agents_list received: []
[08:21:05] [SECURITY] Timeout check: elapsed=179.90742111206055s, timeout=300.0s
[08:21:05] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:21:05] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:21:05] [LIFECYCLE] App entering foreground - restoring connections
[08:21:05] [LIFECYCLE] Away > 2 minutes (179s) - will scroll to bottom
[08:21:05] [UPLOAD_RETRY] No pending uploads to retry
[08:21:05] [LIFECYCLE] Merged 860 reactions from local DB
[08:21:05] [LIFECYCLE] WebRTC audio re-enabled
[08:21:05] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:21:05] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:21:05] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:21:05] [VIEWER] Reconnecting after background - querying agents
[08:21:05] [UNSENT_RETRY] Checking for unsent messages...
[08:21:05] [PENDING_UPLOAD] Total pending upload messages: 0
[08:21:05] [UNSENT_RETRY] No unsent messages found
[08:21:05] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[08:21:05] [WS] Query connection failed - cleaning up all agent connections and views
[08:21:05] [WS] WebSocket task completed with error - isQueryOnly=true: The operation couldn’t be completed. Software caused connection abort
[08:21:05] [WS] Query connection error - cleaning up all agent connections and views
[08:21:05] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[08:21:05] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:21:05] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <9A44A1D0-F7A5-451D-BEF2-4D40088A0449>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <9A44A1D0-F7A5-451D-BEF2-4D40088A0449>.<1>}
[08:21:05] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:21:05] [CLEANUP] ========================================
[08:21:05] [CLEANUP] Cleaning up all agent connections and views
[08:21:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:21:05] [CLEANUP] Stopped and removed 0 video connections
[08:21:05] [CLEANUP] Removed 0 video views
[08:21:05] [CLEANUP] Removed 0 feed scroll views
[08:21:05] [CLEANUP] Removed 0 status labels
[08:21:05] [CLEANUP] Reset agent query state
[08:21:05] [CLEANUP] Updated page indicator
[08:21:05] [CLEANUP] Rebuilt video layout
[08:21:05] [CLEANUP] ✅ All agent connections and views cleaned up
[08:21:05] [CLEANUP] ========================================
[08:21:05] [SERVER] Starting reconnect polling (5s interval)
[08:21:05] [CLEANUP] ========================================
[08:21:05] [CLEANUP] Cleaning up all agent connections and views
[08:21:05] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:21:05] [CLEANUP] Stopped and removed 0 video connections
[08:21:05] [CLEANUP] Removed 0 video views
[08:21:05] [CLEANUP] Removed 0 feed scroll views
[08:21:05] [CLEANUP] Removed 0 status labels
[08:21:05] [CLEANUP] Reset agent query state
[08:21:05] [CLEANUP] Updated page indicator
[08:21:05] [CLEANUP] Rebuilt video layout
[08:21:05] [CLEANUP] ✅ All agent connections and views cleaned up
[08:21:05] [CLEANUP] ========================================
[08:21:05] [SERVER] Starting reconnect polling (5s interval)
[08:21:05] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:21:05] [SECURITY] Saved background timestamp
[08:21:05] [LIFECYCLE] App entering background - cleared crash flag
[08:21:05] [CLIENT_SIG] Disconnecting
[08:21:05] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:21:05] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[08:21:05] [WS] Canceling WebSocket for query connection to iosILUIWU
[08:21:05] In cleanupPeer
[08:21:05] In cleanupPeer
[08:21:05] [LIFECYCLE] WebRTC audio disabled
[08:21:05] [LIFECYCLE] AVAudioSession deactivated
[08:21:05] [LIFECYCLE] All connections stopped
[08:21:05] [SERVER] Stopped reconnect polling
[08:21:05] [WS] URLSession invalidated successfully
[08:21:05] Will request stop of video 0
[08:21:05] Will request stop of video 0
[08:21:05] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:21:05] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:21:05] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:21:05] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:21:05] [PIP] Removing 0 tracks from PiP for connection 0
[08:21:05] [PIP] ✅ All tracks removed for connection 0
[08:21:05] [PIP] Removing 0 tracks from PiP for connection 0
[08:21:05] [PIP] ✅ All tracks removed for connection 0
[08:22:38] [SECURITY] Timeout check: elapsed=93.38725280761719s, timeout=300.0s
[08:22:38] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:22:38] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:22:38] [LIFECYCLE] App entering foreground - restoring connections
[08:22:38] [NETWORK] Status changed: connected
[08:22:38] [UPLOAD_RETRY] No pending uploads to retry
[08:22:38] [LIFECYCLE] Merged 860 reactions from local DB
[08:22:38] [LIFECYCLE] WebRTC audio re-enabled
[08:22:38] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:22:38] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:22:38] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:22:38] [VIEWER] Reconnecting after background - querying agents
[08:22:38] [UNSENT_RETRY] Checking for unsent messages...
[08:22:38] [PENDING_UPLOAD] Total pending upload messages: 0
[08:22:38] [UNSENT_RETRY] No unsent messages found
[08:22:38] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[08:22:38] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:22:38] [FOREGROUND] ⚠️ readBy fetch returned empty but we have 28 sent messages - triggering full refresh
[08:22:38] [REFRESH_ALL] 🔄 refreshAllFromServer called from: foregroundReadByFallback, currentMsgCount=50
[08:22:38] [REFRESH_ALL] 📸 Captured 50 message IDs before request
[08:22:38] [REFRESH_ALL] 📡 Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[08:22:38] [CLIENT_SIG] WebSocket opened
[08:22:38] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:22:38] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:22:38] HELLO → sent (cached token, role=query)
[08:22:38] [CLIENT_SIG] Connected! clientId=gBTWflUMHa-8nnMP
[08:22:38] [SIG] hello_ok received for query connection - ready to query agents
[08:22:38] [SIG] get_agents request sent for sessionId=ILUIWU
[08:22:38] [SIG] get_agents request sent for sessionId=iosILUIWU
[08:22:38] [SERVER] Stopped reconnect polling
[08:22:38] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:22:38] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:22:38] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:22:38] [SIG] agents_list received: []
[08:22:38] [SIG] agents_list received: []
[08:22:38] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:38] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:38] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:38] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:22:38] [SECURITY] Within timeout - cleared background flag
[08:22:38] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:22:38] [PUSH] handlePollEventsNotification userInfo: [:]
[08:22:38] [PUSH] No message_id in userInfo
[08:22:38] [PUSH] No operation_type in userInfo
[08:22:38] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:22:38] [FAST_REFRESH] Already have 50 messages - skipping local DB load
[08:22:38] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:22:38] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:22:38] [INCREMENTAL_SYNC] ⚠️ Already reloading - skipping incremental refresh
[08:22:38] [FAST_REFRESH] Incremental sync complete - 50 messages
[08:22:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:39] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:39] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[08:22:39] [FOREGROUND] Enriched 2 messages with readBy data from server
[08:22:39] [PENDING_UPLOAD] Total pending upload messages: 0
[08:22:39] [PENDING_UPLOAD] Preserved 0 pending messages before server refresh
[08:22:39] [TIMER] Preserving 4 played timer IDs before DB refresh
[08:22:39] [TIMER] Restored 4 played timer flags after DB refresh
[08:22:39] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:39] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:39] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:39] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:40] DOWNLOADIIING t_A838C8A7-6ACB-4EC0-8A9C-B457DDC4006E.jpg
[08:22:40] DOWNLOADIIING t_203DADEC-DEED-4A33-908B-8F8E344461B1.jpg
[08:22:40] [PUSH] Silent push received
[08:22:40] [PUSH_EMBED] No embedded message_data in notification
[08:22:40] [PUSH] No embedded data, pre-loading messages from server
[08:22:40] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:22:40] DOWNLOADIIING t_1b1a78050ebe099b.jpg
[08:22:40] DOWNLOADIIING t_bae538c2a3076c11.jpg
[08:22:40] DOWNLOADIIING t_ee42d57ffd8ab767.jpg
[08:22:40] DOWNLOADIIING t_5cfd84d52271d308.jpg
[08:22:40] DOWNLOADIIING t_919f4df51be24b2c.jpg
[08:22:40] DOWNLOADIIING t_0f2dda66cccdeadf.jpg
[08:22:40] DOWNLOADIIING t_32675c319a37fee7.jpg
[08:22:40] DOWNLOADIIING t_a45f085b5a2c50aa.jpg
[08:22:40] DOWNLOADIIING t_7cd3ce3d7797eb3c.jpg
[08:22:40] DOWNLOADIIING t_abb65f630e55dc61.jpg
[08:22:40] DOWNLOADIIING t_2a4c7380908d6595.jpg
[08:22:40] DOWNLOADIIING t_1ee77a72ee5013e0.jpg
[08:22:40] DOWNLOADIIING t_02f48c94671cc64e.jpg
[08:22:40] DOWNLOADIIING t_d0fd8cabebf807d5.jpg
[08:22:40] DOWNLOADIIING t_364b0669ed2f3378.jpg
[08:22:40] DOWNLOADIIING t_7f3c34ff05eb7c95.jpg
[08:22:40] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[08:22:40] DOWNLOADIIING t_f4d9bbe2fc21d5ae.jpg
[08:22:40] DOWNLOADIIING t_e1d06c52c18e20ce.jpg
[08:22:40] DOWNLOADIIING t_722d39e0d91dd954.jpg
[08:22:40] DOWNLOADIIING t_97828ef5de49a612.jpg
[08:22:40] DOWNLOADIIING t_98986cbb2cd2ae48.jpg
[08:22:40] [CHANNEL_SWITCH] 📊 About to set loaded messages. Count=7092
[08:22:40] [REFRESH_ALL] 📊 Server returned 7092 messages
[08:22:40] [REFRESH_ALL] 📊 Final merge: server=7092, preserved=0, total=7092
[08:22:40] [REFRESH_ALL] 📊 Displaying 50 of 7092 messages, hasMore=true
[08:22:40] [COMBINED_FETCH] Loaded 7092 read receipts, 858 messages with reactions
[08:22:40] [FAST_REFRESH] Enriched 50 messages with readBy data
[08:22:40] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[08:22:40] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:22:40] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[08:22:40] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:22:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18325, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
[08:22:40] [PUSH] Parsed message_id: 18325
[08:22:40] [PUSH] Parsed operation_type: 3
[08:22:40] [PUSH] Taking direct action: opType=3, messageId=18325
[08:22:40] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18325
[08:22:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:40] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:40] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:41] [CAMERA] Switch-over factors: [2, 8]
[08:22:41] [CAMERA] Virtual device max zoom: 123.75
[08:22:41] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[08:22:41] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[08:22:41] [CAMERA] 2x: virtual device at zoom 4.0
[08:22:41] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[08:22:41] [CAMERA] 8x: virtual device at zoom 16.0
[08:22:41] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[08:22:41] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[08:22:41] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[08:22:41] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[08:22:41] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[08:22:41] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[08:22:41] [VOLUME] Starting volume button monitoring
[08:22:41] [VOLUME] Hidden MPVolumeView installed
[08:22:42] [VOLUME] Audio session active, initial volume: 0.55
[08:22:42] [VOLUME] Volume observation started
[08:22:42] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[08:22:42] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[08:22:42] ReloadData 14 (all 41 media thumbnails loaded) - applying tab 0 filtering
[08:22:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:42] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:42] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:43] [CAMERA] Configuring focus for Front Camera
[08:22:43] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[08:22:43] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[08:22:43] [CAMERA] Switched to continuous autofocus, lens position: 0.75686276
[08:22:44] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:22:47] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:22:47] [VOLUME] Volume changed from 0.55 to 0.45000002
[08:22:47] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[08:22:47] [HAPTIC] Triggering peek haptic for photo
[08:22:48] [VOLUME] Stopping volume button monitoring
[08:22:48] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[08:22:48] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[08:22:48] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[08:22:48] [GALLERY_DB] Raw datesent for msg 18312: '2026-01-20 18:15:55'
[08:22:48] [GALLERY_DB] ✅ Loaded 468 media messages
[08:22:48] [GALLERY] Filtered 468 -> 429 (only with local thumbnails)
[08:22:48] [GALLERY] First 5 after sort (newest first):
[08:22:48] [GALLERY] 0: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[08:22:48] [GALLERY] 1: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[08:22:48] [GALLERY] 2: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[08:22:48] [GALLERY] 3: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[08:22:48] [GALLERY] 4: id=18296, date=2026-01-20 09:02:00, file=e27abe61119a26c3.mov
[08:22:48] [NETWORK] Status changed: connected
[08:22:48] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[08:22:48] [WS] Query connection error - cleaning up all agent connections and views
[08:22:48] [CLEANUP] ========================================
[08:22:48] [CLEANUP] Cleaning up all agent connections and views
[08:22:48] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:22:48] [CLEANUP] Stopped and removed 0 video connections
[08:22:48] [CLEANUP] Removed 0 video views
[08:22:48] [CLEANUP] Removed 0 feed scroll views
[08:22:48] [CLEANUP] Removed 0 status labels
[08:22:48] [CLEANUP] Reset agent query state
[08:22:48] [CLEANUP] Updated page indicator
[08:22:48] [CLEANUP] Rebuilt video layout
[08:22:48] [CLEANUP] ✅ All agent connections and views cleaned up
[08:22:48] [CLEANUP] ========================================
[08:22:48] [SERVER] Starting reconnect polling (5s interval)
[08:22:49] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-21 07:22:49 +0000 - type: unknown, operation_type: 0, message_id: 18327, session_id: ILUIWU, state: 0
[08:22:49] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 18327, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 07:22:47";
"file_name" = "";
message = "Tired\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18327;
"message_type" = 0;
"prev_session_message_id" = 18326;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[08:22:49] [PUSH] App active - suppressing notification UI, posting internal event
[08:22:49] [PUSH_EMBED] 📩 Received embedded message: id=18327, type=0, sender=Esra
[08:22:49] [PUSH_EMBED] ✅ Saved message 18327 to local DB (sync)
[08:22:49] [PUSH_EMBED] Inserted message 18327 into existing cache (now 51 messages)
[08:22:49] [PUSH_EMBED] Fetching evolution data for message 18327 in background
[08:22:49] [PUSH_EMBED] ✅ Fully processed message 18327
[08:22:49] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18327, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 07:22:47";
"file_name" = "";
message = "Tired\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18327;
"message_type" = 0;
"prev_session_message_id" = 18326;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}]
[08:22:49] [PUSH_EMBED_VC] Processing embedded message: id=18327, type=0, sender=Esra, prevId=18326
[08:22:49] [PUSH_EMBED_VC] Inserted message 18327 into allMessagesWithReadBy (now 51 messages)
[08:22:49] [PUSH_EMBED_VC] ✅ Previous message 18326 exists in memory
[08:22:49] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:22:49] [PUSH] Parsed message_id: 18327
[08:22:49] [PUSH] Parsed operation_type: 0
[08:22:49] [PUSH] Taking direct action: opType=0, messageId=18327
[08:22:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18327
[08:22:49] [PUSH] ⚡ Message 18327 already in memory - skipping duplicate notification entirely
[08:22:49] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:22:49] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:22:49] [PUSH_UI] Message 18327 already in memory - skipping insert
[08:22:49] [PUSH_EMBED_VC] Saved message 18327 to local DB
[08:22:49] [PUSH] Silent push received
[08:22:49] [PUSH_EMBED] 📩 Received embedded message: id=18327, type=0, sender=Esra
[08:22:49] [PUSH_EMBED] ✅ Saved message 18327 to local DB (sync)
[08:22:49] [PUSH_EMBED] Fetching evolution data for message 18327 in background
[08:22:49] [PUSH_EMBED] ✅ Fully processed message 18327
[08:22:49] [PUSH] Embedded message handled instantly from silent push
[08:22:49] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:22:49] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:22:49] [PUSH_UI] Message 18327 already in memory - skipping insert
[08:22:49] [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_data"): {
datesent = "2026-01-21 07:22:47";
"file_name" = "";
message = "Tired\Ud83e\Udd23\Ud83e\Udd23";
"message_id" = 18327;
"message_type" = 0;
"prev_session_message_id" = 18326;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("message_id"): 18327]
[08:22:49] [PUSH_EMBED_VC] Message 18327 already in memory - skipping
[08:22:49] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:22:49] [PUSH] Parsed message_id: 18327
[08:22:49] [PUSH] Parsed operation_type: 0
[08:22:49] [PUSH] Taking direct action: opType=0, messageId=18327
[08:22:49] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18327
[08:22:49] [PUSH] ⚡ Message 18327 already in memory - skipping duplicate notification entirely
[08:22:49] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18327, 18276, 18277, 18278, 18279]
[08:22:49] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:49] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:49] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18326 → 18327
[08:22:49] [CELL_UPLOAD] configure: msgId=18319, file=69cc52974ecff2d4.png, senderId=EYE-SYSTEM-00000000-0000-0000-0000-000000000000, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:49] [CELL_UPLOAD] → not my message, setting complete
[08:22:49] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=69cc52974ecff2d4.png, overlayExists=true
[08:22:49] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:22:50] [CLIENT_SIG] Event received: type=0 messageId=18327
[08:22:50] [WS_EVENT] Received event: type=0, messageId=18327
[08:22:50] [WS_EVENT] 📨 New message notification (msgId=18327) - triggering incremental refresh, currentMsgCount=51
[08:22:50] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[08:22:50] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18327
[08:22:50] [PUSH_EMBED] Got evolution data for message 18327, saving to local DB
[08:22:50] [PUSH_EMBED] Saved evolution data for message 18327
[08:22:50] [INCREMENTAL_SYNC] ✅ No new messages
[08:22:50] [PUSH_EMBED] Got evolution data for message 18327, saving to local DB
[08:22:50] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[08:22:50] [PUSH_EMBED] Saved evolution data for message 18327
[08:22:51] [PUSH] Silent push received
[08:22:51] [PUSH_EMBED] No embedded message_data in notification
[08:22:51] [PUSH] No embedded data, pre-loading messages from server
[08:22:51] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:22:51] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:22:51] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [18276]
[08:22:51] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 1 from push)
[08:22:51] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:22:51] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:22:51] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18327, AnyHashable("session_id"): ILUIWU]
[08:22:51] [PUSH] Parsed message_id: 18327
[08:22:51] [PUSH] Parsed operation_type: 3
[08:22:51] [PUSH] Taking direct action: opType=3, messageId=18327
[08:22:51] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18327
[08:22:52] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:22:52] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:22:52] Chosen timer = 0
[08:22:52] [MEDIA_SEND] ========== NEW UPLOAD ==========
[08:22:52] [MEDIA_SEND] onSend called
[08:22:52] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/93DE9E00-0FE3-4458-A258-7BA5C86B55C6.jpg
[08:22:52] [MEDIA_SEND] Source file exists: true
[08:22:52] [MEDIA_SEND] Original filename: 93DE9E00-0FE3-4458-A258-7BA5C86B55C6.jpg
[08:22:52] [MEDIA_SEND] Random filename: 41e6d3f8b6fc3362.jpg
[08:22:52] [MEDIA_SEND] File extension: jpg
[08:22:52] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/41e6d3f8b6fc3362.jpg
[08:22:52] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_41e6d3f8b6fc3362.jpg
[08:22:52] [MEDIA_SEND] Source file size: 520064 bytes (0.50 MB)
[08:22:52] [MEDIA_SEND] Copying file (<100MB)
[08:22:52] [MEDIA_SEND] File copied successfully
[08:22:52] [MEDIA_SEND] Destination file exists: true
[08:22:52] [MEDIA_SEND] Destination file size: 520064 bytes
[08:22:52] [MEDIA_SEND] Creating thumbnail...
[08:22:52] [MEDIA_SEND] Thumbnail created in 0.02s
[08:22:52] [MEDIA_SEND] Thumbnail dimensions: (225.0, 400.0)
[08:22:52] [MEDIA_SEND] Thumbnail exists: true
[08:22:52] [MEDIA_SEND] Thumbnail file size: 29375 bytes
[08:22:52] [MEDIA_SEND] Sending message to server...
[08:22:52] [MEDIA_SEND] Caption: ''
[08:22:52] [MEDIA_SEND] Timer: 0
[08:22:52] [MEDIA_SEND] Filename: 41e6d3f8b6fc3362.jpg
[08:22:52] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[08:22:52] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=51, isReloading=false
[08:22:53] [MEDIA_SEND] 📤 Creating media message: id=-1, file=41e6d3f8b6fc3362.jpg, isGiphy=false, upload_status=1 (pending)
[08:22:53] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[08:22:53] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=52
[08:22:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[-1, 18327, 18326, 18325, 18324]
[08:22:53] [CELL_UPLOAD] configure: msgId=18320, file=79f8421197610988.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:22:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:22:53] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=79f8421197610988.jpg, overlayExists=true
[08:22:53] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:22:53] [CELL_UPLOAD] configure: msgId=-1, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[08:22:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[08:22:53] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:53] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[08:22:53] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:22:53] [MEDIA_SEND] sendMessage API call completed
[08:22:53] [MEDIA_SEND] Starting THUMBNAIL upload: t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[08:22:53] [UPLOAD_ENQUEUE] 📥 File: t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[08:22:53] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[08:22:53] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[08:22:53] [GALLERY_DB] Raw datesent for msg -1: '2026-01-21 07:22:52'
[08:22:53] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[08:22:53] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[08:22:53] [UPLOAD_QUEUE] Enqueued upload id=611 for t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[08:22:53] [UPLOAD_DEBUG] Item ID: 611
[08:22:53] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_DEBUG] Random filename: t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_DEBUG] Session ID: ILUIWU
[08:22:53] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[08:22:53] [UPLOAD_DEBUG] Retry count: 0
[08:22:53] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_41e6d3f8b6fc3362.jpg, status=uploading (2), progress=0.0%
[08:22:53] [UPLOAD_DEBUG] File exists: true
[08:22:53] [UPLOAD_DEBUG] File size: 29375 bytes (0.0 MB)
[08:22:53] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[08:22:53] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[08:22:53] [UPLOAD_DEBUG] --- startStandardUpload ---
[08:22:53] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[08:22:53] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[08:22:53] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/FF86F0D1-3519-4AE3-AA5B-4AC0940807F9.upload
[08:22:53] [UPLOAD_DEBUG] File size: 29375 bytes, in-memory threshold: 10485760 bytes
[08:22:53] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[08:22:53] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (29857 bytes)
[08:22:53] [UPLOAD_DEBUG] Creating background upload task...
[08:22:53] [UPLOAD_DEBUG] Task created with identifier: 1
[08:22:53] [UPLOAD_DEBUG] Added to activeUploads dictionary
[08:22:53] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[08:22:53] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=1 | file=t_41e6d3f8b6fc3362.jpg | size=0.0MB | retries=0
[08:22:53] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[08:22:53] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[08:22:53] [GALLERY_DB] ✅ Loaded 469 media messages
[08:22:53] [UPLOAD_PROGRESS] t_41e6d3f8b6fc3362.jpg: 100% (0.0/0.0 MB) task=1
[08:22:53] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_41e6d3f8b6fc3362.jpg, status=uploading (2), progress=100.0%
[08:22:53] [GALLERY] Filtered 469 -> 430 (only with local thumbnails)
[08:22:53] [GALLERY] First 5 after sort (newest first):
[08:22:53] [GALLERY] 0: id=-1, date=2026-01-21 07:22:52, file=41e6d3f8b6fc3362.jpg
[08:22:53] [GALLERY] 1: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[08:22:53] [GALLERY] 2: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[08:22:53] [GALLERY] 3: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[08:22:53] [GALLERY] 4: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[08:22:53] [UPLOAD_STATUS] 📬 Received notification: file=t_41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:53] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_STATUS] 💾 Updating DB: file=t_41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:53] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_41e6d3f8b6fc3362.jpg not found in local_messages
[08:22:53] [UPLOAD_STATUS] 📬 Received notification: file=t_41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:53] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_41e6d3f8b6fc3362.jpg
[08:22:53] [UPLOAD_STATUS] 💾 Updating DB: file=t_41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:53] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_41e6d3f8b6fc3362.jpg not found in local_messages
[08:22:53] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-21 07:22:53 +0000 - type: unknown, operation_type: 0, message_id: 18328, session_id: ILUIWU, state: 0
[08:22:53] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-21 07:22:51";
"file_name" = "";
message = "And you baby?";
"message_id" = 18328;
"message_type" = 0;
"prev_session_message_id" = 18327;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18328]
[08:22:53] [PUSH] App active - suppressing notification UI, posting internal event
[08:22:53] [PUSH_EMBED] 📩 Received embedded message: id=18328, type=0, sender=Esra
[08:22:53] [PUSH_EMBED] ✅ Saved message 18328 to local DB (sync)
[08:22:53] [PUSH_EMBED] Inserted message 18328 into existing cache (now 52 messages)
[08:22:53] [PUSH_EMBED] Fetching evolution data for message 18328 in background
[08:22:53] [PUSH_EMBED] ✅ Fully processed message 18328
[08:22:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_data"): {
datesent = "2026-01-21 07:22:51";
"file_name" = "";
message = "And you baby?";
"message_id" = 18328;
"message_type" = 0;
"prev_session_message_id" = 18327;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18328]
[08:22:53] [PUSH_EMBED_VC] Processing embedded message: id=18328, type=0, sender=Esra, prevId=18327
[08:22:53] [PUSH_EMBED_VC] Inserted message 18328 into allMessagesWithReadBy (now 53 messages)
[08:22:53] [PUSH_EMBED_VC] ✅ Previous message 18327 exists in memory
[08:22:53] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:22:53] [PUSH] Parsed message_id: 18328
[08:22:53] [PUSH] Parsed operation_type: 0
[08:22:53] [PUSH] Taking direct action: opType=0, messageId=18328
[08:22:53] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18328
[08:22:53] [PUSH] ⚡ Message 18328 already in memory - skipping duplicate notification entirely
[08:22:53] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:22:53] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:22:53] [PUSH_UI] Message 18328 already in memory - skipping insert
[08:22:53] [PUSH_EMBED_VC] Saved message 18328 to local DB
[08:22:53] [PUSH] Silent push received
[08:22:53] [PUSH_EMBED] 📩 Received embedded message: id=18328, type=0, sender=Esra
[08:22:53] [PUSH_EMBED] ✅ Saved message 18328 to local DB (sync)
[08:22:53] [PUSH_EMBED] Fetching evolution data for message 18328 in background
[08:22:53] [PUSH_EMBED] ✅ Fully processed message 18328
[08:22:53] [PUSH] Embedded message handled instantly from silent push
[08:22:53] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:22:53] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:22:53] [PUSH_UI] Message 18328 already in memory - skipping insert
[08:22:53] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18328, AnyHashable("message_data"): {
datesent = "2026-01-21 07:22:51";
"file_name" = "";
message = "And you baby?";
"message_id" = 18328;
"message_type" = 0;
"prev_session_message_id" = 18327;
"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]
[08:22:53] [PUSH_EMBED_VC] Message 18328 already in memory - skipping
[08:22:53] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:22:53] [PUSH] Parsed message_id: 18328
[08:22:53] [PUSH] Parsed operation_type: 0
[08:22:53] [PUSH] Taking direct action: opType=0, messageId=18328
[08:22:53] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18328
[08:22:53] [PUSH] ⚡ Message 18328 already in memory - skipping duplicate notification entirely
[08:22:53] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18328, -1, 18327, 18326, 18325]
[08:22:53] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18327 → 18328
[08:22:53] [CELL_UPLOAD] configure: msgId=-1, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[08:22:53] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[08:22:53] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:53] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[08:22:53] [SERVER] Polling - attempting to reconnect...
[08:22:54] [CLIENT_SIG] Event received: type=0 messageId=18328
[08:22:54] [WS_EVENT] Received event: type=0, messageId=18328
[08:22:54] [WS_EVENT] 📨 New message notification (msgId=18328) - triggering incremental refresh, currentMsgCount=53
[08:22:54] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=53
[08:22:54] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18328
[08:22:54] [CLIENT_SIG] Event received: type=0 messageId=18329
[08:22:54] [WS_EVENT] Received event: type=0, messageId=18329
[08:22:54] [WS_EVENT] 📨 New message notification (msgId=18329) - triggering incremental refresh, currentMsgCount=53
[08:22:54] [INCREMENTAL_SYNC] ⚠️ Already reloading - skipping incremental refresh
[08:22:54] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[08:22:54] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18329,"session_id":"ILUIWU","message_type":1,"file_name":"41e6d3f8b6fc3362.jpg","datesent_utc":"2026-01-21 07:22:53"}
[08:22:54] [CHAT] receive_message.php JSON: ["file_name": 41e6d3f8b6fc3362.jpg, "message_id": 18329, "ok": 1, "session_id": ILUIWU, "datesent_utc": 2026-01-21 07:22:53, "message_type": 1]
[08:22:54] [DB_UPGRADE] Upgrading message ID: -1 → 18329, preserveOriginalDate=false
[08:22:54] [DB_UPGRADE] ✅ Upgraded -1 → 18329 with send_status=0, 1 row(s) affected
[08:22:54] [SEND_UPGRADE] ✅ Updated chatMessages[1].id: -1 → 18329
[08:22:54] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[1].id: -1 → 18329
[08:22:54] ReloadData 9
[08:22:54] [UPLOAD_RESPONSE] Started receiving response for task 1
[08:22:54] [UPLOAD_METRICS] Task 1 metrics:
[08:22:54] [UPLOAD_METRICS] Total time: 1.10s
[08:22:54] [UPLOAD_METRICS] Upload time: 0.00s
[08:22:54] [UPLOAD_METRICS] Response time: 0.00s
[08:22:54] [UPLOAD_METRICS] Network protocol: http/1.1
[08:22:54] [UPLOAD_METRICS] Proxy: no
[08:22:54] [UPLOAD_METRICS] Reused connection: no
[08:22:54] [UPLOAD_COMPLETE] ========== Task Completed ==========
[08:22:54] [UPLOAD_COMPLETE] Task ID: 1
[08:22:54] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[08:22:54] [UPLOAD_COMPLETE] Filename: t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_COMPLETE] Retry count: 0
[08:22:54] [UPLOAD_COMPLETE] HTTP Status: 200
[08:22:54] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Connection"): Keep-Alive, AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Content-Length"): 217, AnyHashable("Date"): Wed, 21 Jan 2026 07:22:53 GMT, AnyHashable("Content-Type"): application/json]
[08:22:54] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_41e6d3f8b6fc3362.jpg","orig_name":"t_41e6d3f8b6fc3362.jpg","size":29375,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":29857}}
[08:22:54] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[08:22:54] [UPLOAD_COMPLETE] Server filename: t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_VERIFY] Verifying file exists: t_41e6d3f8b6fc3362.jpg
[08:22:54] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[08:22:54] [UPLOAD_VERIFY] ✅ File verified: t_41e6d3f8b6fc3362.jpg (size: 29375)
[08:22:54] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_41e6d3f8b6fc3362.jpg | id=611 | retries=0
[08:22:54] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[08:22:54] [UPLOAD_COMPLETE] ✅ File: t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_COMPLETE] ✅ Queue ID: 611
[08:22:54] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[08:22:54] [UPLOAD_COMPLETE] ✅ Server filename: t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[08:22:54] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_41e6d3f8b6fc3362.jpg, status=complete (0), progress=0.0%
[08:22:54] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=611
[08:22:54] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[08:22:54] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[08:22:54] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:54] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[08:22:54] [CLIENT_SIG] Event received: type=3 messageId=18327
[08:22:54] [WS_EVENT] Received event: type=3, messageId=18327
[08:22:54] [WS_EVENT] Read receipt for message 18327 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:22:54] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[08:22:54] [UPLOAD_STATUS] 📬 Received notification: file=t_41e6d3f8b6fc3362.jpg, status=0 (complete)
[08:22:54] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_STATUS] 💾 Updating DB: file=t_41e6d3f8b6fc3362.jpg, status=0 (complete)
[08:22:54] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_41e6d3f8b6fc3362.jpg not found in local_messages
[08:22:54] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=53
[08:22:54] [MEDIA_SEND] Thumbnail uploaded successfully in 1.17s
[08:22:54] [MEDIA_SEND] Thumbnail server filename: t_41e6d3f8b6fc3362.jpg
[08:22:54] [MEDIA_SEND] Starting MAIN FILE upload: 41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[08:22:54] [UPLOAD_ENQUEUE] 📥 File: 41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[08:22:54] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.5 MB
[08:22:54] [UPLOAD_QUEUE] Enqueued upload id=612 for 41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[08:22:54] [UPLOAD_DEBUG] Item ID: 612
[08:22:54] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_DEBUG] Random filename: 41e6d3f8b6fc3362.jpg
[08:22:54] [UPLOAD_DEBUG] Session ID: ILUIWU
[08:22:54] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[08:22:54] [UPLOAD_DEBUG] Retry count: 0
[08:22:54] [UPLOAD_NOTIFY] 📣 Posting notification: file=41e6d3f8b6fc3362.jpg, status=uploading (2), progress=0.0%
[08:22:54] [UPLOAD_STATUS] 📬 Received notification: file=41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:54] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[52]: 1 → 2
[08:22:54] [UPLOAD_STATUS] 📝 Updated chatMessages[1]: status=2
[08:22:54] [UPLOAD_DEBUG] File exists: true
[08:22:54] [UPLOAD_STATUS] 💾 Updating DB: file=41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:54] [UPLOAD_DEBUG] File size: 520064 bytes (0.5 MB)
[08:22:54] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[08:22:54] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[08:22:54] [UPLOAD_DEBUG] --- startStandardUpload ---
[08:22:54] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[08:22:54] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[08:22:54] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/A4964434-F61F-4030-B2DE-0484FA94FF72.upload
[08:22:54] [UPLOAD_DEBUG] File size: 520064 bytes, in-memory threshold: 10485760 bytes
[08:22:54] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[08:22:54] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=41e6d3f8b6fc3362.jpg
[08:22:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[08:22:54] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (520540 bytes)
[08:22:54] [UPLOAD_DEBUG] Creating background upload task...
[08:22:54] [UPLOAD_DEBUG] Task created with identifier: 2
[08:22:54] [UPLOAD_DEBUG] Added to activeUploads dictionary
[08:22:54] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[08:22:54] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=2 | file=41e6d3f8b6fc3362.jpg | size=0.5MB | retries=0
[08:22:54] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[08:22:54] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[08:22:54] [PUSH_EMBED] Got evolution data for message 18328, saving to local DB
[08:22:54] [PUSH_EMBED] Saved evolution data for message 18328
[08:22:54] [PUSH_EMBED] Got evolution data for message 18328, saving to local DB
[08:22:54] [PUSH_EMBED] Saved evolution data for message 18328
[08:22:54] [UPLOAD_PROGRESS] 41e6d3f8b6fc3362.jpg: 100% (0.5/0.5 MB) task=2
[08:22:54] [UPLOAD_NOTIFY] 📣 Posting notification: file=41e6d3f8b6fc3362.jpg, status=uploading (2), progress=100.0%
[08:22:54] [UPLOAD_STATUS] 📬 Received notification: file=41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:54] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[52]: 2 → 2
[08:22:54] [UPLOAD_STATUS] 📝 Updated chatMessages[1]: status=2
[08:22:54] [UPLOAD_STATUS] 💾 Updating DB: file=41e6d3f8b6fc3362.jpg, status=2 (uploading)
[08:22:54] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=41e6d3f8b6fc3362.jpg
[08:22:54] [MEDIA_SEND] Main upload progress: 100%
[08:22:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[08:22:54] [PROGRESS] Updated cell for 41e6d3f8b6fc3362.jpg: 100%
[08:22:54] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=53, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:22:54] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=2
[08:22:54] [CELL_UPLOAD] → has active progress=1.0, setting uploading
[08:22:54] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:54] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[08:22:55] [PUSH] Silent push received
[08:22:55] [PUSH_EMBED] No embedded message_data in notification
[08:22:55] [PUSH] No embedded data, pre-loading messages from server
[08:22:55] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:22:55] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:22:55] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [18278, 18277, 18276]
[08:22:55] [PUSH_PRELOAD] ⚡ Pre-cached 53 messages for instant display (preserved 3 from push)
[08:22:55] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:22:55] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18328, AnyHashable("operation_type"): 3]
[08:22:55] [PUSH] Parsed message_id: 18328
[08:22:55] [PUSH] Parsed operation_type: 3
[08:22:55] [PUSH] Taking direct action: opType=3, messageId=18328
[08:22:55] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18328
[08:22:56] [UPLOAD_RESPONSE] Started receiving response for task 2
[08:22:56] [UPLOAD_METRICS] Task 2 metrics:
[08:22:56] [UPLOAD_METRICS] Total time: 2.70s
[08:22:56] [UPLOAD_METRICS] Upload time: 0.49s
[08:22:56] [UPLOAD_METRICS] Response time: 0.00s
[08:22:56] [UPLOAD_METRICS] Network protocol: http/1.1
[08:22:56] [UPLOAD_METRICS] Proxy: no
[08:22:56] [UPLOAD_METRICS] Reused connection: yes
[08:22:56] [UPLOAD_COMPLETE] ========== Task Completed ==========
[08:22:56] [UPLOAD_COMPLETE] Task ID: 2
[08:22:56] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[08:22:56] [UPLOAD_COMPLETE] Filename: 41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_COMPLETE] Retry count: 0
[08:22:56] [UPLOAD_COMPLETE] HTTP Status: 200
[08:22:56] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Content-Length"): 215, AnyHashable("Date"): Wed, 21 Jan 2026 07:22:54 GMT, AnyHashable("Connection"): Keep-Alive, AnyHashable("Content-Type"): application/json, AnyHashable("Server"): Apache/2.4.65 (Debian)]
[08:22:56] [UPLOAD_COMPLETE] Response body (215 bytes): {"ok":true,"file_name":"41e6d3f8b6fc3362.jpg","orig_name":"41e6d3f8b6fc3362.jpg","size":520064,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":520540}}
[08:22:56] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[08:22:56] [UPLOAD_COMPLETE] Server filename: 41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_VERIFY] Verifying file exists: 41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_VERIFY] ✅ File verified: 41e6d3f8b6fc3362.jpg (size: 520064)
[08:22:56] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=41e6d3f8b6fc3362.jpg | id=612 | retries=0
[08:22:56] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[08:22:56] [UPLOAD_COMPLETE] ✅ File: 41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_COMPLETE] ✅ Queue ID: 612
[08:22:56] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[08:22:56] [UPLOAD_COMPLETE] ✅ Server filename: 41e6d3f8b6fc3362.jpg
[08:22:56] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[08:22:56] [UPLOAD_NOTIFY] 📣 Posting notification: file=41e6d3f8b6fc3362.jpg, status=complete (0), progress=0.0%
[08:22:56] [UPLOAD_STATUS] 📬 Received notification: file=41e6d3f8b6fc3362.jpg, status=0 (complete)
[08:22:56] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[52]: 2 → 0
[08:22:56] [UPLOAD_STATUS] 📝 Updated chatMessages[52]: status=0
[08:22:56] [UPLOAD_STATUS] 💾 Updating DB: file=41e6d3f8b6fc3362.jpg, status=0 (complete)
[08:22:56] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=612
[08:22:56] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=41e6d3f8b6fc3362.jpg
[08:22:56] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:22:56] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[08:22:56] [MEDIA_SEND] Server filename: 41e6d3f8b6fc3362.jpg
[08:22:56] [MEDIA_SEND] Main upload duration: 2.74s
[08:22:56] [MEDIA_SEND] Total upload duration: 3.91s
[08:22:56] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[08:22:56] [PROGRESS] Updated cell for 41e6d3f8b6fc3362.jpg: 100%
[08:22:57] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:22:57] [CLIENT_SIG] Event received: type=3 messageId=18328
[08:22:57] [WS_EVENT] Received event: type=3, messageId=18328
[08:22:57] [WS_EVENT] Read receipt for message 18328 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:22:57] [SCROLL_BTN] Showing button - 308pt from bottom > half 223pt
[08:22:58] [PUSH] Silent push received
[08:22:58] [PUSH_EMBED] No embedded message_data in notification
[08:22:58] [PUSH] No embedded data, pre-loading messages from server
[08:22:58] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:22:58] [SERVER] Polling - attempting to reconnect...
[08:22:58] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:22:58] [PRELOAD_CACHE] Preserving 3 push-inserted messages: [18278, 18277, 18276]
[08:22:58] [PUSH_PRELOAD] ⚡ Pre-cached 53 messages for instant display (preserved 3 from push)
[08:22:58] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:22:58] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18329, AnyHashable("session_id"): ILUIWU]
[08:22:58] [PUSH] Parsed message_id: 18329
[08:22:58] [PUSH] Parsed operation_type: 3
[08:22:58] [PUSH] Taking direct action: opType=3, messageId=18329
[08:22:58] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18329
[08:22:59] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:22:59] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:23:03] [SERVER] Polling - attempting to reconnect...
[08:23:08] [SERVER] Polling - attempting to reconnect...
[08:23:13] [SERVER] Polling - attempting to reconnect...
[08:23:18] [SERVER] Polling - attempting to reconnect...
[08:23:23] [SERVER] Polling - attempting to reconnect...
[08:23:28] [SERVER] Polling - attempting to reconnect...
[08:23:30] [NETWORK] Status changed: connected
[08:23:33] [SERVER] Polling - attempting to reconnect...
[08:23:35] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[08:23:35] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=53, isReloading=false
[08:23:35] [SEND_MESSAGE] ✅ Added optimistic message id=-2 to arrays, newMsgCount=54
[08:23:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[-2, 18329, 18328, 18327, 18326]
[08:23:35] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:23:35] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:23:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:23:35] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:23:35] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:23:36] [NETWORK] Status changed: connected
[08:23:37] [CLIENT_SIG] Event received: type=0 messageId=18330
[08:23:37] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18330,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 07:23:35"}
[08:23:37] [WS_EVENT] Received event: type=0, messageId=18330
[08:23:37] [WS_EVENT] 📨 New message notification (msgId=18330) - triggering incremental refresh, currentMsgCount=54
[08:23:37] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[08:23:37] [CHAT] receive_message.php JSON: ["file_name": , "session_id": ILUIWU, "message_type": 0, "message_id": 18330, "ok": 1, "datesent_utc": 2026-01-21 07:23:35]
[08:23:37] [DB_UPGRADE] Upgrading message ID: -2 → 18330, preserveOriginalDate=false
[08:23:37] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18329
[08:23:37] [DB_UPGRADE] ✅ Upgraded -2 → 18330 with send_status=0, 1 row(s) affected
[08:23:37] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -2 → 18330
[08:23:37] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -2 → 18330
[08:23:37] ReloadData 9
[08:23:37] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[08:23:37] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:23:37] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:23:37] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:23:37] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[08:23:37] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=54
[08:23:38] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:23:38] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:23:38] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:23:38] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:23:38] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:23:38] [SERVER] Polling - attempting to reconnect...
[08:23:40] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:23:40] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:23:40] [PUSH] Silent push received
[08:23:40] [PUSH_EMBED] No embedded message_data in notification
[08:23:40] [PUSH] No embedded data, pre-loading messages from server
[08:23:40] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:23:40] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:23:40] [PRELOAD_CACHE] Preserving 4 push-inserted messages: [18279, 18278, 18277, 18276]
[08:23:40] [PUSH_PRELOAD] ⚡ Pre-cached 54 messages for instant display (preserved 4 from push)
[08:23:40] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:23:40] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18330]
[08:23:40] [PUSH] Parsed message_id: 18330
[08:23:40] [PUSH] Parsed operation_type: 3
[08:23:40] [PUSH] Taking direct action: opType=3, messageId=18330
[08:23:40] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18330
[08:23:42] [CLIENT_SIG] Event received: type=3 messageId=18330
[08:23:42] [WS_EVENT] Received event: type=3, messageId=18330
[08:23:42] [WS_EVENT] Read receipt for message 18330 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:23:43] [SERVER] Polling - attempting to reconnect...
[08:23:48] [SERVER] Polling - attempting to reconnect...
[08:23:51] [LIFECYCLE] App resigning active - cleared crash flag
[08:23:51] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:23:51] [SECURITY] Saved background timestamp
[08:23:51] [LIFECYCLE] App entering background - cleared crash flag
[08:23:51] [CLIENT_SIG] Disconnecting
[08:23:51] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:23:51] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[08:23:51] [WS] Canceling WebSocket for query connection to iosILUIWU
[08:23:51] In cleanupPeer
[08:23:51] In cleanupPeer
[08:23:51] [LIFECYCLE] WebRTC audio disabled
[08:23:51] [LIFECYCLE] AVAudioSession deactivated
[08:23:51] [LIFECYCLE] All connections stopped
[08:23:51] [CLIENT_SIG] WebSocket closed with code 1001
[08:23:51] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:23:51] [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/}
[08:23:51] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:23:51] [SERVER] Stopped reconnect polling
[08:23:51] Will request stop of video 0
[08:23:51] [WS] URLSession invalidated successfully
[08:23:51] Will request stop of video 0
[08:23:51] [PIP] Removing 0 tracks from PiP for connection 0
[08:23:51] [PIP] ✅ All tracks removed for connection 0
[08:23:51] [PIP] Removing 0 tracks from PiP for connection 0
[08:23:51] [PIP] ✅ All tracks removed for connection 0
[08:24:57] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:24:57] [SECURITY] Timeout check: elapsed=66.0173659324646s, timeout=300.0s
[08:24:57] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:24:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:24:57] [LIFECYCLE] App entering foreground - restoring connections
[08:24:57] [NETWORK] Status changed: connected
[08:24:57] [UPLOAD_RETRY] No pending uploads to retry
[08:24:57] [LIFECYCLE] Merged 864 reactions from local DB
[08:24:57] [LIFECYCLE] WebRTC audio re-enabled
[08:24:57] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:24:57] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:24:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:24:57] [VIEWER] Reconnecting after background - querying agents
[08:24:57] [UNSENT_RETRY] Checking for unsent messages...
[08:24:57] [PENDING_UPLOAD] Total pending upload messages: 0
[08:24:57] [UNSENT_RETRY] No unsent messages found
[08:24:57] [WS] Connection failed: The operation couldn’t be completed. Software caused connection abort
[08:24:57] [WS] Query connection failed - cleaning up all agent connections and views
[08:24:57] [CLEANUP] ========================================
[08:24:57] [CLEANUP] Cleaning up all agent connections and views
[08:24:57] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:24:57] [CLEANUP] Stopped and removed 0 video connections
[08:24:57] [CLEANUP] Removed 0 video views
[08:24:57] [CLEANUP] Removed 0 feed scroll views
[08:24:57] [CLEANUP] Removed 0 status labels
[08:24:57] [CLEANUP] Reset agent query state
[08:24:57] [CLEANUP] Updated page indicator
[08:24:57] [CLEANUP] Rebuilt video layout
[08:24:57] [CLEANUP] ✅ All agent connections and views cleaned up
[08:24:57] [CLEANUP] ========================================
[08:24:57] [SERVER] Starting reconnect polling (5s interval)
[08:24:57] [CLIENT_SIG] WebSocket opened
[08:24:57] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:24:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:24:57] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:24:57] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:24:57] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:24:57] [CLIENT_SIG] Connected! clientId=ilYSYBKGL9Fu4AV4
[08:24:57] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:24:57] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:24:58] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:24:58] [SECURITY] Within timeout - cleared background flag
[08:24:58] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:24:58] [PUSH] handlePollEventsNotification userInfo: [:]
[08:24:58] [PUSH] No message_id in userInfo
[08:24:58] [PUSH] No operation_type in userInfo
[08:24:58] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:24:58] [FAST_REFRESH] Already have 54 messages - skipping local DB load
[08:24:58] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:24:58] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:24:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=54
[08:24:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18330
[08:24:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:24:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:24:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:24:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:24:58] [INCREMENTAL_SYNC] ✅ No new messages
[08:24:58] [FAST_REFRESH] Incremental sync complete - 54 messages
[08:24:59] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[08:24:59] [WS] Opening session at ws://crivello.dyndns.org:8081/
[08:24:59] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[08:24:59] HELLO → sent (cached token, role=query)
[08:24:59] [SIG] hello_ok received for query connection - ready to query agents
[08:24:59] [SIG] get_agents request sent for sessionId=ILUIWU
[08:24:59] [SIG] get_agents request sent for sessionId=iosILUIWU
[08:24:59] [SERVER] Stopped reconnect polling
[08:24:59] [SIG] agents_list received: []
[08:24:59] [SIG] agents_list received: []
[08:25:00] [COMBINED_FETCH] Loaded 7096 read receipts, 859 messages with reactions
[08:25:00] [FOREGROUND] Enriched 0 messages with readBy data from server
[08:25:00] [COMBINED_FETCH] Loaded 7096 read receipts, 859 messages with reactions
[08:25:00] [FAST_REFRESH] Enriched 54 messages with readBy data
[08:25:00] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[08:25:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=54, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:25:00] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:08] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[08:25:08] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=54, isReloading=false
[08:25:08] [SEND_MESSAGE] ✅ Added optimistic message id=-3 to arrays, newMsgCount=55
[08:25:08] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[-3, 18330, 18329, 18328, 18327]
[08:25:08] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:08] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:08] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:25:08] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:25:09] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[08:25:09] [WS] Query connection error - cleaning up all agent connections and views
[08:25:09] [CLEANUP] ========================================
[08:25:09] [CLEANUP] Cleaning up all agent connections and views
[08:25:09] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[08:25:09] [CLEANUP] Stopped and removed 0 video connections
[08:25:09] [CLEANUP] Removed 0 video views
[08:25:09] [CLEANUP] Removed 0 feed scroll views
[08:25:09] [CLEANUP] Removed 0 status labels
[08:25:09] [CLEANUP] Reset agent query state
[08:25:09] [CLEANUP] Updated page indicator
[08:25:09] [CLEANUP] Rebuilt video layout
[08:25:09] [CLEANUP] ✅ All agent connections and views cleaned up
[08:25:09] [CLEANUP] ========================================
[08:25:09] [SERVER] Starting reconnect polling (5s interval)
[08:25:10] [CLIENT_SIG] Event received: type=0 messageId=18331
[08:25:10] [WS_EVENT] Received event: type=0, messageId=18331
[08:25:10] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18331,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 07:25:08"}
[08:25:10] [WS_EVENT] 📨 New message notification (msgId=18331) - triggering incremental refresh, currentMsgCount=55
[08:25:10] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=55
[08:25:10] [CHAT] receive_message.php JSON: ["message_id": 18331, "ok": 1, "datesent_utc": 2026-01-21 07:25:08, "file_name": , "session_id": ILUIWU, "message_type": 0]
[08:25:10] [DB_UPGRADE] Upgrading message ID: -3 → 18331, preserveOriginalDate=false
[08:25:10] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18330
[08:25:10] [DB_UPGRADE] ✅ Upgraded -3 → 18331 with send_status=0, 1 row(s) affected
[08:25:10] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -3 → 18331
[08:25:10] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -3 → 18331
[08:25:10] ReloadData 9
[08:25:11] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:11] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:11] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[08:25:11] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[08:25:11] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=55
[08:25:11] [LIFECYCLE] App resigning active - cleared crash flag
[08:25:11] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=55, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:25:11] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:11] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:11] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:11] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:25:11] [SECURITY] Saved background timestamp
[08:25:11] [LIFECYCLE] App entering background - cleared crash flag
[08:25:11] [CLIENT_SIG] Disconnecting
[08:25:11] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:25:11] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=3
[08:25:11] [WS] Canceling WebSocket for query connection to iosILUIWU
[08:25:11] In cleanupPeer
[08:25:11] In cleanupPeer
[08:25:11] [LIFECYCLE] WebRTC audio disabled
[08:25:11] [LIFECYCLE] AVAudioSession deactivated
[08:25:11] [LIFECYCLE] All connections stopped
[08:25:12] [NETWORK] Status changed: connected
[08:25:12] [CLIENT_SIG] WebSocket closed with code 1001
[08:25:12] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:25:12] [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/}
[08:25:12] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:25:12] [SERVER] Stopped reconnect polling
[08:25:12] Will request stop of video 0
[08:25:12] [WS] URLSession invalidated successfully
[08:25:12] Will request stop of video 0
[08:25:12] [PIP] Removing 0 tracks from PiP for connection 0
[08:25:12] [PIP] ✅ All tracks removed for connection 0
[08:25:12] [PIP] Removing 0 tracks from PiP for connection 0
[08:25:12] [PIP] ✅ All tracks removed for connection 0
[08:25:25] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:25] [PUSH] Notification tapped - session_id: ILUIWU
[08:25:25] [PUSH] Max message_id before tap: 18331
[08:25:25] [PUSH] Stored pending session: ILUIWU
[08:25:25] [PUSH_EMBED] 📩 Received embedded message: id=18332, type=0, sender=Esra
[08:25:25] [PUSH_EMBED] ✅ Saved message 18332 to local DB (sync)
[08:25:25] [PUSH_EMBED] Inserted message 18332 into existing cache (now 55 messages)
[08:25:25] [PUSH_EMBED] Fetching evolution data for message 18332 in background
[08:25:25] [PUSH_EMBED] ✅ Fully processed message 18332
[08:25:25] [PUSH] Embedded message handled instantly on tap
[08:25:25] [PUSH] Fetching server messages since_id=18331 to catch coalesced notifications on tap
[08:25:25] [SECURITY] Timeout check: elapsed=13.903714179992676s, timeout=300.0s
[08:25:25] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:25:25] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18331 to catch coalesced notifications
[08:25:25] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:25:25] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:25] [LIFECYCLE] App entering foreground - restoring connections
[08:25:25] [UPLOAD_RETRY] No pending uploads to retry
[08:25:25] [LIFECYCLE] Merged 864 reactions from local DB
[08:25:25] [LIFECYCLE] WebRTC audio re-enabled
[08:25:25] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:25:25] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:25:25] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:25:25] [VIEWER] Reconnecting after background - querying agents
[08:25:25] [UNSENT_RETRY] Checking for unsent messages...
[08:25:25] [PENDING_UPLOAD] Total pending upload messages: 0
[08:25:25] [UNSENT_RETRY] No unsent messages found
[08:25:25] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:25:25] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:25:25] [PUSH_UI] Inserted message 18332 into UI (now 56 messages)
[08:25:25] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[08:25:25] [CLIENT_SIG] WebSocket opened
[08:25:25] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:25:25] [CLIENT_SIG] Connected! clientId=7zlgxRBiHGUkzeRP
[08:25:25] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:25:25] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:25] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:25] [PUSH_EMBED] No evolution data available for message 18332
[08:25:25] [PUSH_PRELOAD] Fetched 1 messages - caching for instant display
[08:25:25] [PRELOAD_CACHE] Preserving 54 push-inserted messages: [18330, 18329, 18328, 18327, 18326, 18325, 18324, 18323, 18322, 18321, 18320, 18319, 18318, 18317, 18316, 18315, 18313, 18312, 18311, 18310, 18309, 18308, 18307, 18306, 18305, 18304, 18303, 18302, 18301, 18300, 18299, 18298, 18297, 18296, 18295, 18294, 18293, 18292, 18291, 18290, 18289, 18288, 18287, 18286, 18285, 18284, 18283, 18282, 18281, 18280, 18279, 18278, 18277, 18276]
[08:25:25] [PUSH_PRELOAD] ⚡ Pre-cached 55 messages for instant display (preserved 54 from push)
[08:25:25] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:25:25] [PUSH] Server fetch on tap completed (success=true)
[08:25:25] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 07:25:20";
"file_name" = "";
message = "And you baby?";
"message_id" = 18332;
"message_type" = 0;
"prev_session_message_id" = 18331;
"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"): 18332, AnyHashable("operation_type"): 0]
[08:25:25] [PUSH_EMBED_VC] Message 18332 already in memory - skipping
[08:25:25] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:25:25] [PUSH] Parsed message_id: 18332
[08:25:25] [PUSH] Parsed operation_type: 0
[08:25:25] [PUSH] Taking direct action: opType=0, messageId=18332
[08:25:25] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18332
[08:25:25] [PUSH] ⚡ Message 18332 already in memory - skipping duplicate notification entirely
[08:25:25] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18332, 18276, 18277, 18278, 18279]
[08:25:26] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:26] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:26] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18331 → 18332
[08:25:26] [CLIENT_SIG] Event received: type=3 messageId=18329
[08:25:26] [WS_EVENT] Received event: type=3, messageId=18329
[08:25:26] [WS_EVENT] Read receipt for message 18329 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:26] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:25:26] [SECURITY] Within timeout - cleared background flag
[08:25:26] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:25:26] [PUSH] handlePollEventsNotification userInfo: [:]
[08:25:26] [PUSH] No message_id in userInfo
[08:25:26] [PUSH] No operation_type in userInfo
[08:25:26] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:25:26] [FAST_REFRESH] Already have 56 messages - skipping local DB load
[08:25:26] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:25:26] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:25:26] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=56
[08:25:26] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18332
[08:25:26] [PUSH] Silent push received
[08:25:26] [PUSH_EMBED] No embedded message_data in notification
[08:25:26] [PUSH] No embedded data, pre-loading messages from server
[08:25:26] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:26] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18332, 18276, 18277, 18278, 18279]
[08:25:26] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:26] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:26] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:26] [INCREMENTAL_SYNC] ✅ No new messages
[08:25:26] [FAST_REFRESH] Incremental sync complete - 56 messages
[08:25:26] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:25:26] [PRELOAD_CACHE] Preserving 6 push-inserted messages: [18281, 18280, 18279, 18278, 18277, 18276]
[08:25:26] [PUSH_PRELOAD] ⚡ Pre-cached 56 messages for instant display (preserved 6 from push)
[08:25:26] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:25:26] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("session_id"): ILUIWU, AnyHashable("message_id"): 18329]
[08:25:26] [PUSH] Parsed message_id: 18329
[08:25:26] [PUSH] Parsed operation_type: 3
[08:25:26] [PUSH] Taking direct action: opType=3, messageId=18329
[08:25:26] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18329
[08:25:26] [COMBINED_FETCH] Loaded 7098 read receipts, 859 messages with reactions
[08:25:26] [FOREGROUND] Enriched 2 messages with readBy data from server
[08:25:27] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18332, 18276, 18277, 18278, 18279]
[08:25:27] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:27] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:27] [COMBINED_FETCH] Loaded 7098 read receipts, 859 messages with reactions
[08:25:27] [FAST_REFRESH] Enriched 56 messages with readBy data
[08:25:27] [PUSH] Silent push received
[08:25:27] [PUSH_EMBED] No embedded message_data in notification
[08:25:27] [PUSH] No embedded data, pre-loading messages from server
[08:25:27] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:27] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:25:27] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=56, first5Ids=[18332, 18276, 18277, 18278, 18279]
[08:25:27] [PRELOAD_CACHE] Preserving 6 push-inserted messages: [18281, 18280, 18279, 18278, 18277, 18276]
[08:25:27] [PUSH_PRELOAD] ⚡ Pre-cached 56 messages for instant display (preserved 6 from push)
[08:25:27] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:27] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:27] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:27] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:25:27] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18332, AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}]
[08:25:27] [PUSH] Parsed message_id: 18332
[08:25:27] [PUSH] Parsed operation_type: 3
[08:25:27] [PUSH] Taking direct action: opType=3, messageId=18332
[08:25:27] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18332
[08:25:28] [MENU] dismissAnyExistingMenu called
[08:25:28] [MENU] dismissAnyExistingMenu completed
[08:25:29] [CLIENT_SIG] Event received: type=3 messageId=18332
[08:25:29] [WS_EVENT] Received event: type=3, messageId=18332
[08:25:29] [WS_EVENT] Read receipt for message 18332 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:29] [MENU] dismissAnyExistingMenu called
[08:25:29] [MENU] dismissAnyExistingMenu completed
[08:25:32] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:40] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:41] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-21 07:25:41 +0000 - type: unknown, operation_type: 0, message_id: 18333, session_id: ILUIWU, state: 0
[08:25:41] [PUSH_DEBUG] Full userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 07:25:40";
"file_name" = "";
message = "Gooooood to knooow\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18333;
"message_type" = 0;
"prev_session_message_id" = 18332;
"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"): 18333, AnyHashable("session_id"): ILUIWU]
[08:25:41] [PUSH] App active - suppressing notification UI, posting internal event
[08:25:41] [PUSH_EMBED] 📩 Received embedded message: id=18333, type=0, sender=Esra
[08:25:41] [PUSH_EMBED] ✅ Saved message 18333 to local DB (sync)
[08:25:41] [PUSH_EMBED] Inserted message 18333 into existing cache (now 57 messages)
[08:25:41] [PUSH_EMBED] Fetching evolution data for message 18333 in background
[08:25:41] [PUSH_EMBED] ✅ Fully processed message 18333
[08:25:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 07:25:40";
"file_name" = "";
message = "Gooooood to knooow\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18333;
"message_type" = 0;
"prev_session_message_id" = 18332;
"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"): 18333, AnyHashable("session_id"): ILUIWU]
[08:25:41] [PUSH_EMBED_VC] Processing embedded message: id=18333, type=0, sender=Esra, prevId=18332
[08:25:41] [PUSH_EMBED_VC] Inserted message 18333 into allMessagesWithReadBy (now 57 messages)
[08:25:41] [PUSH_EMBED_VC] ✅ Previous message 18332 exists in memory
[08:25:41] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:25:41] [PUSH] Parsed message_id: 18333
[08:25:41] [PUSH] Parsed operation_type: 0
[08:25:41] [PUSH] Taking direct action: opType=0, messageId=18333
[08:25:41] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18333
[08:25:41] [PUSH] ⚡ Message 18333 already in memory - skipping duplicate notification entirely
[08:25:41] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:25:41] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:25:41] [PUSH_UI] Message 18333 already in memory - skipping insert
[08:25:41] [PUSH_EMBED_VC] Saved message 18333 to local DB
[08:25:41] [PUSH] Silent push received
[08:25:41] [PUSH_EMBED] 📩 Received embedded message: id=18333, type=0, sender=Esra
[08:25:41] [PUSH_EMBED] ✅ Saved message 18333 to local DB (sync)
[08:25:41] [PUSH_EMBED] Fetching evolution data for message 18333 in background
[08:25:41] [PUSH_EMBED] ✅ Fully processed message 18333
[08:25:41] [PUSH] Embedded message handled instantly from silent push
[08:25:41] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:25:41] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:25:41] [PUSH_UI] Message 18333 already in memory - skipping insert
[08:25:41] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 0, AnyHashable("message_data"): {
datesent = "2026-01-21 07:25:40";
"file_name" = "";
message = "Gooooood to knooow\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13\Ud83e\Udd13";
"message_id" = 18333;
"message_type" = 0;
"prev_session_message_id" = 18332;
"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"): 18333, AnyHashable("session_id"): ILUIWU]
[08:25:41] [PUSH_EMBED_VC] Message 18333 already in memory - skipping
[08:25:41] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:25:41] [PUSH] Parsed message_id: 18333
[08:25:41] [PUSH] Parsed operation_type: 0
[08:25:41] [PUSH] Taking direct action: opType=0, messageId=18333
[08:25:41] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18333
[08:25:41] [PUSH] ⚡ Message 18333 already in memory - skipping duplicate notification entirely
[08:25:41] [PUSH_EMBED] Got evolution data for message 18333, saving to local DB
[08:25:41] [PUSH_EMBED] Saved evolution data for message 18333
[08:25:41] [PUSH_EMBED] Got evolution data for message 18333, saving to local DB
[08:25:41] [PUSH_EMBED] Saved evolution data for message 18333
[08:25:41] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=57, first5Ids=[18333, 18332, 18276, 18277, 18278]
[08:25:41] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:41] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:41] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:41] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18332 → 18333
[08:25:42] [CLIENT_SIG] Event received: type=0 messageId=18333
[08:25:42] [WS_EVENT] Received event: type=0, messageId=18333
[08:25:42] [WS_EVENT] 📨 New message notification (msgId=18333) - triggering incremental refresh, currentMsgCount=57
[08:25:42] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=57
[08:25:42] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18333
[08:25:42] [INCREMENTAL_SYNC] ✅ No new messages
[08:25:42] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=57
[08:25:44] [PUSH] Silent push received
[08:25:44] [PUSH_EMBED] No embedded message_data in notification
[08:25:44] [PUSH] No embedded data, pre-loading messages from server
[08:25:44] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:44] [LIFECYCLE] App resigning active - cleared crash flag
[08:25:44] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:25:44] [SECURITY] Saved background timestamp
[08:25:44] [LIFECYCLE] App entering background - cleared crash flag
[08:25:44] [CLIENT_SIG] Disconnecting
[08:25:44] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:25:44] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:25:44] In cleanupPeer
[08:25:44] In cleanupPeer
[08:25:44] [LIFECYCLE] WebRTC audio disabled
[08:25:44] [LIFECYCLE] AVAudioSession deactivated
[08:25:44] [LIFECYCLE] All connections stopped
[08:25:44] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:25:44] [PRELOAD_CACHE] Preserving 7 push-inserted messages: [18282, 18281, 18280, 18279, 18278, 18277, 18276]
[08:25:44] [PUSH_PRELOAD] ⚡ Pre-cached 57 messages for instant display (preserved 7 from push)
[08:25:44] [CLIENT_SIG] WebSocket closed with code 1001
[08:25:44] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:25:44] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:25:44] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:25:44] [SERVER] Stopped reconnect polling
[08:25:44] Will request stop of video 0
[08:25:44] Will request stop of video 0
[08:25:44] [PIP] Removing 0 tracks from PiP for connection 0
[08:25:44] [PIP] ✅ All tracks removed for connection 0
[08:25:44] [PIP] Removing 0 tracks from PiP for connection 0
[08:25:44] [PIP] ✅ All tracks removed for connection 0
[08:25:44] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:25:44] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18333, AnyHashable("aps"): {
"content-available" = 1;
}]
[08:25:44] [PUSH] Parsed message_id: 18333
[08:25:44] [PUSH] Parsed operation_type: 3
[08:25:44] [PUSH] Taking direct action: opType=3, messageId=18333
[08:25:44] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18333
[08:25:54] [PUSH] Silent push received
[08:25:54] [PUSH_EMBED] 📩 Received embedded message: id=18334, type=0, sender=Esra
[08:25:54] [PUSH_EMBED] ✅ Saved message 18334 to local DB (sync)
[08:25:54] [PUSH_EMBED] Inserted message 18334 into existing cache (now 58 messages)
[08:25:54] [PUSH_EMBED] Fetching evolution data for message 18334 in background
[08:25:54] [PUSH_EMBED] ✅ Fully processed message 18334
[08:25:54] [PUSH] Embedded message handled instantly from silent push
[08:25:54] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:54] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:25:54] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:25:54] [PUSH_UI] Inserted message 18334 into UI (now 58 messages)
[08:25:54] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18334, AnyHashable("message_data"): {
datesent = "2026-01-21 07:25:52";
"file_name" = "";
message = "My babyyyyyyy\Ud83e\Udd70";
"message_id" = 18334;
"message_type" = 0;
"prev_session_message_id" = 18333;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18329;
"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]
[08:25:54] [PUSH_EMBED_VC] Message 18334 already in memory - skipping
[08:25:54] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:25:54] [PUSH] Parsed message_id: 18334
[08:25:54] [PUSH] Parsed operation_type: 0
[08:25:54] [PUSH] Taking direct action: opType=0, messageId=18334
[08:25:54] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18334
[08:25:54] [PUSH] ⚡ Message 18334 already in memory - skipping duplicate notification entirely
[08:25:54] [CLIENT_SIG] WebSocket opened
[08:25:54] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:25:54] [PUSH_EMBED] Got evolution data for message 18334, saving to local DB
[08:25:54] [CLIENT_SIG] Connected! clientId=13fHPPLp32EcoKvf
[08:25:54] [PUSH_EMBED] Saved evolution data for message 18334
[08:25:54] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:25:54] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:54] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:25:55] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:55] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:55] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:55] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18333 → 18334
[08:25:55] [CLIENT_SIG] Event received: type=0 messageId=18334
[08:25:55] [WS_EVENT] Received event: type=0, messageId=18334
[08:25:55] [WS_EVENT] 📨 New message notification (msgId=18334) - triggering incremental refresh, currentMsgCount=58
[08:25:55] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=58
[08:25:55] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18334
[08:25:55] [INCREMENTAL_SYNC] ✅ No new messages
[08:25:55] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=58
[08:25:56] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[08:25:56] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:25:56] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <84F4E0EA-A0F0-4E72-B1F5-BE12731E9CDA>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <84F4E0EA-A0F0-4E72-B1F5-BE12731E9CDA>.<1>}
[08:25:56] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:25:57] [SECURITY] Timeout check: elapsed=13.190275192260742s, timeout=300.0s
[08:25:57] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:25:57] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:57] [LIFECYCLE] App entering foreground - restoring connections
[08:25:57] [UPLOAD_RETRY] No pending uploads to retry
[08:25:57] [LIFECYCLE] Merged 864 reactions from local DB
[08:25:57] [LIFECYCLE] WebRTC audio re-enabled
[08:25:57] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:25:57] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:25:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:25:57] [VIEWER] Reconnecting after background - querying agents
[08:25:57] [UNSENT_RETRY] Checking for unsent messages...
[08:25:57] [PENDING_UPLOAD] Total pending upload messages: 0
[08:25:57] [UNSENT_RETRY] No unsent messages found
[08:25:57] [PUSH] Notification tapped - session_id: ILUIWU
[08:25:57] [PUSH] Max message_id before tap: 18334
[08:25:57] [PUSH] Stored pending session: ILUIWU
[08:25:57] [PUSH_EMBED] 📩 Received embedded message: id=18334, type=0, sender=Esra
[08:25:57] [PUSH_EMBED] ✅ Saved message 18334 to local DB (sync)
[08:25:57] [PUSH_EMBED] Fetching evolution data for message 18334 in background
[08:25:57] [PUSH_EMBED] ✅ Fully processed message 18334
[08:25:57] [PUSH] Embedded message handled instantly on tap
[08:25:57] [PUSH] Fetching server messages since_id=18334 to catch coalesced notifications on tap
[08:25:57] [PUSH_PRELOAD] Fetching up to 50 messages since_id=18334 to catch coalesced notifications
[08:25:57] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:57] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[08:25:57] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[08:25:57] [PUSH_UI] Message 18334 already in memory - skipping insert
[08:25:57] [PUSH] Silent push received
[08:25:57] [PUSH_EMBED] No embedded message_data in notification
[08:25:57] [PUSH] No embedded data, pre-loading messages from server
[08:25:57] [PUSH_PRELOAD] Fetching messages for instant display cache
[08:25:57] [CLIENT_SIG] WebSocket opened
[08:25:57] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:25:57] [CLIENT_SIG] Connected! clientId=P_cs3Ri2ip2A9wPD
[08:25:57] [PUSH_EMBED] Got evolution data for message 18334, saving to local DB
[08:25:57] [PUSH_EMBED] Saved evolution data for message 18334
[08:25:57] [PUSH_PRELOAD] No messages or parse error
[08:25:57] [PUSH] Server fetch on tap completed (success=false)
[08:25:57] [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-21 07:25:52";
"file_name" = "";
message = "My babyyyyyyy\Ud83e\Udd70";
"message_id" = 18334;
"message_type" = 0;
"prev_session_message_id" = 18333;
"replied_message" = "";
"replied_sender_id" = "3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF";
"replied_sender_name" = Laurent;
"reply_to_id" = 18329;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18334]
[08:25:57] [PUSH_EMBED_VC] Message 18334 already in memory - skipping
[08:25:57] [PUSH] ⚡ Embedded message handled directly in ViewController
[08:25:57] [PUSH] Parsed message_id: 18334
[08:25:57] [PUSH] Parsed operation_type: 0
[08:25:57] [PUSH] Taking direct action: opType=0, messageId=18334
[08:25:57] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18334
[08:25:57] [PUSH] ⚡ Message 18334 already in memory - skipping duplicate notification entirely
[08:25:57] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:25:57] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[08:25:57] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:25:57] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:57] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:57] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:57] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[08:25:57] [PRELOAD_CACHE] Preserving 8 push-inserted messages: [18283, 18282, 18281, 18280, 18279, 18278, 18277, 18276]
[08:25:57] [PUSH_PRELOAD] ⚡ Pre-cached 58 messages for instant display (preserved 8 from push)
[08:25:57] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[08:25:57] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18334, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
[08:25:57] [PUSH] Parsed message_id: 18334
[08:25:57] [PUSH] Parsed operation_type: 3
[08:25:57] [PUSH] Taking direct action: opType=3, messageId=18334
[08:25:57] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18334
[08:25:58] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:25:58] [SECURITY] Within timeout - cleared background flag
[08:25:58] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:25:58] [PUSH] handlePollEventsNotification userInfo: [:]
[08:25:58] [PUSH] No message_id in userInfo
[08:25:58] [PUSH] No operation_type in userInfo
[08:25:58] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:25:58] [FAST_REFRESH] Already have 58 messages - skipping local DB load
[08:25:58] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:25:58] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:25:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=58
[08:25:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18334
[08:25:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:25:58] [INCREMENTAL_SYNC] ✅ No new messages
[08:25:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:58] [FAST_REFRESH] Incremental sync complete - 58 messages
[08:25:58] [COMBINED_FETCH] Loaded 7100 read receipts, 861 messages with reactions
[08:25:58] [FOREGROUND] Enriched 2 messages with readBy data from server
[08:25:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:25:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:25:59] [CLIENT_SIG] Event received: type=3 messageId=18334
[08:25:59] [WS_EVENT] Received event: type=3, messageId=18334
[08:25:59] [WS_EVENT] Read receipt for message 18334 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:25:59] [COMBINED_FETCH] Loaded 7100 read receipts, 861 messages with reactions
[08:25:59] [FAST_REFRESH] Enriched 58 messages with readBy data
[08:25:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:25:59] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:25:59] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:25:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:00] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:01] [MENU] dismissAnyExistingMenu called
[08:26:01] [MENU] dismissAnyExistingMenu completed
[08:26:01] [EMOJI_PICKER] Starting emoji picker for message 18333
[08:26:01] [MENU] Created button 'Reply' at index 0
[08:26:01] [MENU] Created button 'Copy' at index 1
[08:26:01] [MENU] Created button 'Delete' at index 2
[08:26:01] [MENU] Menu added at y=494.0
[08:26:01] [EMOJI_PICKER] ✅ Fetched 6 recent emojis
[08:26:01] [EMOJI_PICKER] ✅ Creating picker with 6 recent emojis
[08:26:01] [EMOJI_PICKER] ✅ Picker shown at y=382.0
[08:26:02] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:26:02] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[08:26:02] [NETWORK] Status changed: connected
[08:26:02] [REACTION] add ❤️ to message 18333 (alreadyReacted: false)
[08:26:02] [MENU] dismissAnyExistingMenu called
[08:26:02] [MENU] Found menu with tag 9999, removing
[08:26:02] [MENU] Removing blur effect
[08:26:02] [MENU] Removing floating message snapshot
[08:26:02] [MENU] Dismissing emoji picker
[08:26:02] [MENU] Recorded dismissal time for debounce
[08:26:02] [MENU] dismissAnyExistingMenu completed
[08:26:02] [REACTION] Added ❤️ reaction to message 18333
[08:26:03] [NETWORK] Status changed: connected
[08:26:06] [LIFECYCLE] App resigning active - cleared crash flag
[08:26:06] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:26:06] [SECURITY] Saved background timestamp
[08:26:06] [LIFECYCLE] App entering background - cleared crash flag
[08:26:06] [CLIENT_SIG] Disconnecting
[08:26:06] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:26:06] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:26:06] In cleanupPeer
[08:26:06] In cleanupPeer
[08:26:06] [LIFECYCLE] WebRTC audio disabled
[08:26:06] [LIFECYCLE] AVAudioSession deactivated
[08:26:06] [LIFECYCLE] All connections stopped
[08:26:06] [CLIENT_SIG] WebSocket closed with code 1001
[08:26:06] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:26:06] [SERVER] Stopped reconnect polling
[08:26:06] Will request stop of video 0
[08:26:06] Will request stop of video 0
[08:26:06] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:26:06] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:26:06] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:06] [PIP] ✅ All tracks removed for connection 0
[08:26:06] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:06] [PIP] ✅ All tracks removed for connection 0
[08:26:11] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:12] [CLIENT_SIG] WebSocket opened
[08:26:12] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:26:12] [CLIENT_SIG] Connected! clientId=jAk1KnulVczy_1rO
[08:26:12] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:26:12] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:27] [LAST_SEEN] Fetch error: The request timed out.
[08:26:27] [NETWORK] Status changed: connected
[08:26:27] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[08:26:27] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:26:27] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <80D1885D-71BE-4C63-B6E1-E65F7620D893>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <80D1885D-71BE-4C63-B6E1-E65F7620D893>.<1>}
[08:26:27] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:26:28] [SECURITY] Timeout check: elapsed=21.954957962036133s, timeout=300.0s
[08:26:28] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:26:28] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:28] [LIFECYCLE] App entering foreground - restoring connections
[08:26:28] [UPLOAD_RETRY] No pending uploads to retry
[08:26:28] [LIFECYCLE] Merged 865 reactions from local DB
[08:26:28] [LIFECYCLE] WebRTC audio re-enabled
[08:26:28] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:26:28] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:26:28] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:28] [VIEWER] Reconnecting after background - querying agents
[08:26:28] [UNSENT_RETRY] Checking for unsent messages...
[08:26:28] [PENDING_UPLOAD] Total pending upload messages: 0
[08:26:28] [UNSENT_RETRY] No unsent messages found
[08:26:28] [CLIENT_SIG] WebSocket opened
[08:26:28] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:26:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:28] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:28] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:28] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:28] [CLIENT_SIG] Connected! clientId=1cJrQiXgmHI4URNG
[08:26:28] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:26:28] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:28] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:26:28] [SECURITY] Within timeout - cleared background flag
[08:26:28] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:26:28] [PUSH] handlePollEventsNotification userInfo: [:]
[08:26:28] [PUSH] No message_id in userInfo
[08:26:28] [PUSH] No operation_type in userInfo
[08:26:28] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:26:28] [FAST_REFRESH] Already have 58 messages - skipping local DB load
[08:26:28] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:26:28] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:26:28] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=58
[08:26:28] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18334
[08:26:28] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:29] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:29] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:29] [INCREMENTAL_SYNC] ✅ No new messages
[08:26:29] [FAST_REFRESH] Incremental sync complete - 58 messages
[08:26:29] [COMBINED_FETCH] Loaded 7100 read receipts, 862 messages with reactions
[08:26:29] [FOREGROUND] Enriched 0 messages with readBy data from server
[08:26:29] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:29] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:29] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:29] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:30] [COMBINED_FETCH] Loaded 7100 read receipts, 862 messages with reactions
[08:26:30] [FAST_REFRESH] Enriched 58 messages with readBy data
[08:26:30] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:30] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:30] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:30] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:30] [MENU] dismissAnyExistingMenu called
[08:26:30] [MENU] dismissAnyExistingMenu completed
[08:26:31] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:33] [LIFECYCLE] App resigning active - cleared crash flag
[08:26:33] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:26:33] [SECURITY] Saved background timestamp
[08:26:33] [LIFECYCLE] App entering background - cleared crash flag
[08:26:33] [CLIENT_SIG] Disconnecting
[08:26:33] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:26:33] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:26:33] In cleanupPeer
[08:26:33] In cleanupPeer
[08:26:33] [LIFECYCLE] WebRTC audio disabled
[08:26:33] [LIFECYCLE] AVAudioSession deactivated
[08:26:33] [LIFECYCLE] All connections stopped
[08:26:33] [CLIENT_SIG] WebSocket closed with code 1001
[08:26:33] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:26:33] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:26:33] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:26:33] [SERVER] Stopped reconnect polling
[08:26:33] Will request stop of video 0
[08:26:33] Will request stop of video 0
[08:26:33] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:33] [PIP] ✅ All tracks removed for connection 0
[08:26:33] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:33] [PIP] ✅ All tracks removed for connection 0
[08:26:41] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:41] [CLIENT_SIG] WebSocket opened
[08:26:41] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:26:41] [SECURITY] Timeout check: elapsed=8.45603084564209s, timeout=300.0s
[08:26:41] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:26:41] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:41] [LIFECYCLE] App entering foreground - restoring connections
[08:26:41] [UPLOAD_RETRY] No pending uploads to retry
[08:26:41] [LIFECYCLE] Merged 865 reactions from local DB
[08:26:41] [LIFECYCLE] WebRTC audio re-enabled
[08:26:41] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:26:41] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:26:41] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:41] [VIEWER] Reconnecting after background - querying agents
[08:26:41] [UNSENT_RETRY] Checking for unsent messages...
[08:26:41] [PENDING_UPLOAD] Total pending upload messages: 0
[08:26:41] [UNSENT_RETRY] No unsent messages found
[08:26:41] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[08:26:41] [CLIENT_SIG] Reconnecting in 6.0s (attempt 3)
[08:26:41] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <83D4BE73-22C3-4F6F-B326-507925B9D638>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <83D4BE73-22C3-4F6F-B326-507925B9D638>.<1>}
[08:26:41] [CLIENT_SIG] Reconnecting in 8.0s (attempt 4)
[08:26:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:42] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:42] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:42] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:26:42] [SECURITY] Within timeout - cleared background flag
[08:26:42] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:26:42] [PUSH] handlePollEventsNotification userInfo: [:]
[08:26:42] [PUSH] No message_id in userInfo
[08:26:42] [PUSH] No operation_type in userInfo
[08:26:42] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:26:42] [FAST_REFRESH] Already have 58 messages - skipping local DB load
[08:26:42] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:26:42] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:26:42] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=58
[08:26:42] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18334
[08:26:42] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:42] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:42] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:42] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:42] [SCROLL_BTN] Showing button - 305pt from bottom > half 223pt
[08:26:42] [INCREMENTAL_SYNC] ✅ No new messages
[08:26:42] [FAST_REFRESH] Incremental sync complete - 58 messages
[08:26:43] [COMBINED_FETCH] Loaded 7100 read receipts, 862 messages with reactions
[08:26:43] [FOREGROUND] Enriched 0 messages with readBy data from server
[08:26:43] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:43] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:43] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:43] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:44] [CLIENT_SIG] Cannot send typing_start - not connected
[08:26:44] [COMBINED_FETCH] Loaded 7100 read receipts, 862 messages with reactions
[08:26:44] [FAST_REFRESH] Enriched 58 messages with readBy data
[08:26:44] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=58, first5Ids=[18334, 18333, 18332, 18276, 18277]
[08:26:44] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:44] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:44] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:49] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:50] [CLIENT_SIG] WebSocket opened
[08:26:50] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:26:50] [CLIENT_SIG] Connected! clientId=kyWAcOnP_6HIOzYK
[08:26:50] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:26:50] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:50] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[08:26:50] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=58, isReloading=false
[08:26:50] [SEND_MESSAGE] ✅ Added optimistic message id=-4 to arrays, newMsgCount=59
[08:26:50] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[-4, 18334, 18333, 18332, 18331]
[08:26:51] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:51] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:51] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:51] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:26:51] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:26:52] [CLIENT_SIG] Event received: type=0 messageId=18335
[08:26:52] [WS_EVENT] Received event: type=0, messageId=18335
[08:26:52] [WS_EVENT] 📨 New message notification (msgId=18335) - triggering incremental refresh, currentMsgCount=59
[08:26:52] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=59
[08:26:52] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18334
[08:26:52] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18335,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 07:26:51"}
[08:26:52] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "file_name": , "ok": 1, "datesent_utc": 2026-01-21 07:26:51, "message_id": 18335, "message_type": 0]
[08:26:52] [DB_UPGRADE] Upgrading message ID: -4 → 18335, preserveOriginalDate=false
[08:26:52] [DB_UPGRADE] ✅ Upgraded -4 → 18335 with send_status=0, 1 row(s) affected
[08:26:52] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -4 → 18335
[08:26:52] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -4 → 18335
[08:26:52] ReloadData 9
[08:26:52] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[08:26:52] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[08:26:52] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=59
[08:26:52] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:26:52] [MENU] dismissAnyExistingMenu called
[08:26:52] [MENU] dismissAnyExistingMenu completed
[08:26:52] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:52] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:52] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:53] [LIFECYCLE] App resigning active - cleared crash flag
[08:26:53] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:26:53] [SECURITY] Saved background timestamp
[08:26:53] [LIFECYCLE] App entering background - cleared crash flag
[08:26:53] [CLIENT_SIG] Disconnecting
[08:26:53] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:26:53] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:26:53] In cleanupPeer
[08:26:53] In cleanupPeer
[08:26:53] [LIFECYCLE] WebRTC audio disabled
[08:26:53] [LIFECYCLE] AVAudioSession deactivated
[08:26:53] [LIFECYCLE] All connections stopped
[08:26:53] [CLIENT_SIG] WebSocket closed with code 1001
[08:26:53] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:26:53] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:26:53] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:26:53] [SERVER] Stopped reconnect polling
[08:26:53] Will request stop of video 0
[08:26:53] Will request stop of video 0
[08:26:53] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:53] [PIP] ✅ All tracks removed for connection 0
[08:26:53] [PIP] Removing 0 tracks from PiP for connection 0
[08:26:53] [PIP] ✅ All tracks removed for connection 0
[08:26:55] [SECURITY] Timeout check: elapsed=2.0925209522247314s, timeout=300.0s
[08:26:55] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:26:55] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:55] [LIFECYCLE] App entering foreground - restoring connections
[08:26:55] [UPLOAD_RETRY] No pending uploads to retry
[08:26:55] [LIFECYCLE] Merged 865 reactions from local DB
[08:26:55] [LIFECYCLE] WebRTC audio re-enabled
[08:26:55] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:26:55] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:26:55] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:55] [VIEWER] Reconnecting after background - querying agents
[08:26:55] [UNSENT_RETRY] Checking for unsent messages...
[08:26:55] [PENDING_UPLOAD] Total pending upload messages: 0
[08:26:55] [UNSENT_RETRY] No unsent messages found
[08:26:55] [CLIENT_SIG] WebSocket opened
[08:26:55] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:26:55] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:26:55] [CLIENT_SIG] Connected! clientId=8QQeOp7nNgElgx70
[08:26:55] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:26:55] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:26:56] [SECURITY] sceneDidBecomeActive - isAuthenticated=true, didEnterBackground=true
[08:26:56] [SECURITY] Within timeout - cleared background flag
[08:26:56] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:26:56] [PUSH] handlePollEventsNotification userInfo: [:]
[08:26:56] [PUSH] No message_id in userInfo
[08:26:56] [PUSH] No operation_type in userInfo
[08:26:56] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:26:56] [FAST_REFRESH] Already have 59 messages - skipping local DB load
[08:26:56] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:26:56] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:26:56] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=59
[08:26:56] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18335
[08:26:56] [INCREMENTAL_SYNC] ✅ No new messages
[08:26:56] [FAST_REFRESH] Incremental sync complete - 59 messages
[08:26:56] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:26:56] [COMBINED_FETCH] Loaded 7101 read receipts, 862 messages with reactions
[08:26:56] [FOREGROUND] Enriched 0 messages with readBy data from server
[08:26:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=59, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:26:57] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[08:26:57] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=59, isReloading=false
[08:26:57] [SEND_MESSAGE] ✅ Added optimistic message id=-5 to arrays, newMsgCount=60
[08:26:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[-5, 18335, 18334, 18333, 18332]
[08:26:57] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:26:57] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:26:57] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:26:57] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:26:57] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:26:57] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:26:57] [NETWORK] Status changed: connected
[08:26:57] [COMBINED_FETCH] Loaded 7101 read receipts, 862 messages with reactions
[08:26:57] [FAST_REFRESH] Enriched 59 messages with readBy data
[08:26:57] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[-5, 18335, 18334, 18333, 18332]
[08:26:58] [CLIENT_SIG] Event received: type=0 messageId=18336
[08:26:58] [WS_EVENT] Received event: type=0, messageId=18336
[08:26:58] [WS_EVENT] 📨 New message notification (msgId=18336) - triggering incremental refresh, currentMsgCount=60
[08:26:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=60
[08:26:58] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18336,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 07:26:57"}
[08:26:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18335
[08:26:58] [CHAT] receive_message.php JSON: ["datesent_utc": 2026-01-21 07:26:57, "session_id": ILUIWU, "message_id": 18336, "file_name": , "ok": 1, "message_type": 0]
[08:26:58] [DB_UPGRADE] Upgrading message ID: -5 → 18336, preserveOriginalDate=false
[08:26:58] [DB_UPGRADE] ✅ Upgraded -5 → 18336 with send_status=0, 1 row(s) affected
[08:26:58] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -5 → 18336
[08:26:58] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -5 → 18336
[08:26:58] ReloadData 9
[08:26:58] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[08:26:58] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[08:26:58] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=60
[08:26:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=60, first5Ids=[18276, 18277, 18278, 18279, 18280]
[08:26:59] [REPLY_DEBUG] 📤 didTapSend - Sending message WITHOUT reply
[08:26:59] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=60, isReloading=false
[08:26:59] [SEND_MESSAGE] ✅ Added optimistic message id=-6 to arrays, newMsgCount=61
[08:26:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[-6, 18336, 18335, 18334, 18333]
[08:26:59] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[08:26:59] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[08:26:59] [NETWORK] Status changed: connected
[08:27:00] [CLIENT_SIG] Event received: type=0 messageId=18337
[08:27:00] [WS_EVENT] Received event: type=0, messageId=18337
[08:27:00] [WS_EVENT] 📨 New message notification (msgId=18337) - triggering incremental refresh, currentMsgCount=61
[08:27:00] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=61
[08:27:00] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18336
[08:27:00] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18337,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2026-01-21 07:26:59"}
[08:27:00] [CHAT] receive_message.php JSON: ["message_type": 0, "session_id": ILUIWU, "datesent_utc": 2026-01-21 07:26:59, "message_id": 18337, "file_name": , "ok": 1]
[08:27:00] [DB_UPGRADE] Upgrading message ID: -6 → 18337, preserveOriginalDate=false
[08:27:00] [DB_UPGRADE] ✅ Upgraded -6 → 18337 with send_status=0, 1 row(s) affected
[08:27:00] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -6 → 18337
[08:27:00] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -6 → 18337
[08:27:00] ReloadData 9
[08:27:01] [LIFECYCLE] App resigning active - cleared crash flag
[08:27:01] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:27:01] [SECURITY] Saved background timestamp
[08:27:01] [LIFECYCLE] App entering background - cleared crash flag
[08:27:01] [CLIENT_SIG] Disconnecting
[08:27:01] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:27:01] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:27:01] In cleanupPeer
[08:27:01] In cleanupPeer
[08:27:01] [LIFECYCLE] WebRTC audio disabled
[08:27:01] [LIFECYCLE] AVAudioSession deactivated
[08:27:01] [LIFECYCLE] All connections stopped
[08:27:01] [CLIENT_SIG] WebSocket closed with code 1001
[08:27:01] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:27: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/}
[08:27:01] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:27:01] [SERVER] Stopped reconnect polling
[08:27:01] Will request stop of video 0
[08:27:01] Will request stop of video 0
[08:27:01] [PIP] Removing 0 tracks from PiP for connection 0
[08:27:01] [PIP] ✅ All tracks removed for connection 0
[08:27:01] [PIP] Removing 0 tracks from PiP for connection 0
[08:27:01] [PIP] ✅ All tracks removed for connection 0
[08:30:24] [INCREMENTAL_SYNC] ❌ Error: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x12e483270 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <43709B4C-1BDA-4C9C-B1E1-0AF08C4CAF7E>.<144>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <43709B4C-1BDA-4C9C-B1E1-0AF08C4CAF7E>.<144>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF&since_id=18336, NSErrorFailingURLKey=https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF&since_id=18336, _kCFStreamErrorDomainKey=4}
[08:30:24] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:30:24] [NETWORK] Status changed: connected
[08:30:24] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=61
[08:30:25] [CLIENT_SIG] WebSocket opened
[08:30:25] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:30:25] [CLIENT_SIG] Connected! clientId=SS202AoVT8OWEJPm
[08:30:25] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort}
[08:30:25] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:30:25] [CLIENT_SIG] Task completed with error: Error Domain=NSPOSIXErrorDomain Code=53 "Software caused connection abort" UserInfo={NSDescription=Software caused connection abort, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <66167CAB-6E31-43BF-A7C4-9DF188C5CED6>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <66167CAB-6E31-43BF-A7C4-9DF188C5CED6>.<1>}
[08:30:25] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:33:42] [NETWORK] Status changed: connected
[08:33:42] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:34:58] [SECURITY] Timeout check: elapsed=477.59185099601746s, timeout=300.0s
[08:34:58] [SECURITY] sceneWillEnterForeground - timeout exceeded, showing lock screen immediately
[08:34:58] [AUTH] ✅ All guards passed, showing privacy cover
[08:34:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:34:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:34:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:34:58] [LIFECYCLE] App entering foreground - restoring connections
[08:34:58] [LIFECYCLE] Away > 2 minutes (477s) - will scroll to bottom
[08:34:58] [UPLOAD_RETRY] No pending uploads to retry
[08:34:58] [LIFECYCLE] Merged 865 reactions from local DB
[08:34:58] [LIFECYCLE] WebRTC audio re-enabled
[08:34:58] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:34:58] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:34:58] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:34:58] [VIEWER] Reconnecting after background - querying agents
[08:34:58] [UNSENT_RETRY] Checking for unsent messages...
[08:34:58] [PENDING_UPLOAD] Total pending upload messages: 0
[08:34:58] [UNSENT_RETRY] No unsent messages found
[08:34:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18337, 18336, 18335, 18334, 18333]
[08:34:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:34:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:34:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:34:59] [COMBINED_FETCH] Loaded 7103 read receipts, 862 messages with reactions
[08:34:59] [FOREGROUND] Enriched 0 messages with readBy data from server
[08:35:00] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18337, 18336, 18335, 18334, 18333]
[08:35:00] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:35:00] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:35:00] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:35:00] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[08:35:00] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[08:35:00] [LIFECYCLE] App entering background - cleared crash flag
[08:35:00] [CLIENT_SIG] Disconnecting
[08:35:00] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:35:00] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:35:00] In cleanupPeer
[08:35:00] In cleanupPeer
[08:35:00] [LIFECYCLE] WebRTC audio disabled
[08:35:00] [LIFECYCLE] AVAudioSession deactivated
[08:35:00] [LIFECYCLE] All connections stopped
[08:35:00] [CLIENT_SIG] Task completed with error: Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <B9D38EFF-5A42-4145-9210-74E1ADDCB837>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <B9D38EFF-5A42-4145-9210-74E1ADDCB837>.<1>, NSLocalizedDescription=cancelled}
[08:35:00] [CLIENT_SIG] Reconnecting in 6.0s (attempt 3)
[08:35:00] [CLIENT_SIG] Receive error: Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSLocalizedDescription=cancelled, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[08:35:00] [CLIENT_SIG] Reconnecting in 8.0s (attempt 4)
[08:35:00] [SERVER] Stopped reconnect polling
[08:35:00] Will request stop of video 0
[08:35:00] Will request stop of video 0
[08:35:00] [PIP] Removing 0 tracks from PiP for connection 0
[08:35:00] [PIP] ✅ All tracks removed for connection 0
[08:35:00] [PIP] Removing 0 tracks from PiP for connection 0
[08:35:00] [PIP] ✅ All tracks removed for connection 0
[08:53:32] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:53:32] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:53:32] [LIFECYCLE] App entering foreground - restoring connections
[08:53:32] [LIFECYCLE] Away > 2 minutes (1111s) - will scroll to bottom
[08:53:32] [UPLOAD_RETRY] No pending uploads to retry
[08:53:32] [LIFECYCLE] Merged 865 reactions from local DB
[08:53:32] [LIFECYCLE] WebRTC audio re-enabled
[08:53:32] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[08:53:32] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[08:53:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:53:32] [VIEWER] Reconnecting after background - querying agents
[08:53:32] [UNSENT_RETRY] Checking for unsent messages...
[08:53:32] [PENDING_UPLOAD] Total pending upload messages: 0
[08:53:32] [UNSENT_RETRY] No unsent messages found
[08:53:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:53:32] [CLIENT_SIG] WebSocket opened
[08:53:32] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[08:53:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18337, 18336, 18335, 18334, 18333]
[08:53:32] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:53:32] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:53:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:53:32] [CLIENT_SIG] Connected! clientId=j3pvvDwbCIpjfG8N
[08:53:32] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[08:53:32] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[08:53:32] [PUSH] handlePollEventsNotification userInfo: [:]
[08:53:32] [PUSH] No message_id in userInfo
[08:53:32] [PUSH] No operation_type in userInfo
[08:53:32] [FAST_REFRESH] Evolution disabled - performing incremental sync
[08:53:32] [FAST_REFRESH] Already have 61 messages - skipping local DB load
[08:53:32] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[08:53:32] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[08:53:32] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=61
[08:53:32] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18337
[08:53:32] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[08:53:32] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[08:53:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=61, first5Ids=[18337, 18336, 18335, 18334, 18333]
[08:53:32] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:53:32] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:53:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:53:32] [INCREMENTAL_SYNC] ✅ No new messages
[08:53:32] [FAST_REFRESH] Incremental sync complete - 61 messages
[08:53:33] [PIN_AUTH] Correct PIN
[08:53:33] [SECURITY] Restored real session: ILUIWU
[08:53:33] [SECURITY] Restored real session: ILUIWU
[08:53:33] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[08:53:33] [AUTH] Away > 2 minutes (1113s) - will scroll to bottom
[08:53:33] [AUTH] UI update complete
[08:53:33] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[08:53:33] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[08:53:33] [FAKE MODE] Exiting fake mode, restoring real session
[08:53:33] [SECURITY] Restored real session: ILUIWU
[08:53:33] [SECURITY] Saved real session: ILUIWU
[08:53:33] [FAKE MODE] ✅ Restored real session: ILUIWU
[08:53:33] [FAKE MODE] Loaded 50 messages (limited to page size)
[08:53:33] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:53:33] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:53:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:53:34] [SCROLL_BTN] Showing button - 282pt from bottom > half 223pt
[08:53:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18287, 18288, 18289, 18290, 18291]
[08:53:34] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[08:53:34] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[08:53:34] [USER] ✅ User registered successfully
[08:53:34] [PUSH] User registration after token update: success
[08:53:34] [COMBINED_FETCH] Loaded 7103 read receipts, 862 messages with reactions
[08:53:34] [FOREGROUND] Enriched 47 messages with readBy data from server
[08:53:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18287, 18288, 18289, 18290, 18291]
[08:53:34] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:53:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:53:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:53:35] [COMBINED_FETCH] Loaded 7103 read receipts, 862 messages with reactions
[08:53:35] [FAKE MODE] Enriched 50 messages with readBy data
[08:53:35] [COMBINED_FETCH] Loaded 7103 read receipts, 862 messages with reactions
[08:53:35] [FAST_REFRESH] Enriched 50 messages with readBy data
[08:53:35] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[08:53:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18287, 18288, 18289, 18290, 18291]
[08:53:36] [MENU] dismissAnyExistingMenu called
[08:53:36] [MENU] dismissAnyExistingMenu completed
[08:53:36] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[08:53:36] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[08:53:36] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[08:53:36] [SCROLL_BTN] Showing button - 226pt from bottom > half 223pt
[08:53:37] [MENU] dismissAnyExistingMenu called
[08:53:37] [MENU] dismissAnyExistingMenu completed
[08:53:42] [LIFECYCLE] App resigning active - cleared crash flag
[08:53:42] [SECURITY] sceneDidEnterBackground - isAuthenticated=true
[08:53:42] [SECURITY] Saved background timestamp
[08:53:42] [LIFECYCLE] App entering background - cleared crash flag
[08:53:42] [CLIENT_SIG] Disconnecting
[08:53:42] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[08:53:42] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=-1
[08:53:42] In cleanupPeer
[08:53:42] In cleanupPeer
[08:53:42] [LIFECYCLE] WebRTC audio disabled
[08:53:42] [LIFECYCLE] AVAudioSession deactivated
[08:53:42] [LIFECYCLE] All connections stopped
[08:53:43] [CLIENT_SIG] WebSocket closed with code 1001
[08:53:43] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[08:53:43] [SERVER] Stopped reconnect polling
[08:53:43] Will request stop of video 0
[08:53:43] Will request stop of video 0
[08:53:43] [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/}
[08:53:43] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[08:53:43] [PIP] Removing 0 tracks from PiP for connection 0
[08:53:43] [PIP] ✅ All tracks removed for connection 0
[08:53:43] [PIP] Removing 0 tracks from PiP for connection 0
[08:53:43] [PIP] ✅ All tracks removed for connection 0
[09:28:56] [CRASH] No crash detected
[09:28:56] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[09:28:56] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[09:28:56] [GIPHY] SDK not available - using REST API fallback
[09:28:56] [BACKGROUND] Background fetch enabled
[09:28:56] [SECURITY] Initial launch - timeout exceeded (2113.5697059631348s > 300.0s)
[09:28:56] [AUTH] Starting PIN authentication
[09:28:56] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[09:28:56] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:28:56] [CLEANUP] ✅ Deleted 4 timer messages older than 24h
[09:28:56] [PUSH] APNs token: 6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c
[09:28:56] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[09:28:56] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[09:28:56] [CLIENT_SIG] WebSocket opened
[09:28:56] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[09:28:56] [PRELOAD] ⚡ Starting message pre-load during authentication (since_id=18337)...
[09:28:56] [CLIENT_SIG] Connected! clientId=gBqTepSB2-K8EOG1
[09:28:56] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[09:28:56] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:28:56] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[09:28:56] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[09:28:56] [USER] ✅ User registered successfully
[09:28:56] [PUSH] User registration after token update: success
[09:28:56] [PRELOAD] No messages or parse error
[09:28:58] [PIN_AUTH] Correct PIN
[09:28:58] [SECURITY] Restored real session: ILUIWU
[09:28:58] [SECURITY] Restored real session: ILUIWU
[09:28:58] [SECURITY] Saved real session: ILUIWU
[09:28:58] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[09:28:58] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[09:28:58] Documents Directory: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents
[09:28:58] [THEME] Applying current theme
[09:28:58] [CHAT] Applied day theme (mode: day)
[09:28:58] [SECURITY] Saved real session: ILUIWU
[09:28:58] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[09:28:58] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[09:28:58] [NETWORK] Network monitor started
[09:28:58] [NETWORK] Status changed: connected
[09:28:58] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[09:28:58] Did transition
[09:28:58] [MODE] 🔍 updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[09:28:58] [VIEWER] Screen lock enabled - normal idle behavior
[09:28:58] [QUERY] 🔍 Creating query connection for iOS slave: iosILUIWU
[09:28:58] [VCC] ========== VideoConnectionClass INIT ==========
[09:28:58] [VCC] Session: iosILUIWU, ViewIdx: 0, AgentId: nil
[09:28:58] [DATA AUDIO] ========== setupWebRTC() START ==========
[09:28:58] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[09:28:58] [DATA AUDIO] Creating encoder/decoder factories...
[09:28:58] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[09:28:58] [CODEC] Viewer selected encoder: AV1 (best quality)
[09:28:58] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[09:28:58] [DATA AUDIO] ✅ Factory created
[09:28:58] [DATA AUDIO] RTCAudioSession locked
[09:28:58] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[09:28:58] [DATA AUDIO] RTCAudioSession unlocked
[09:28:58] [DATA AUDIO] Skipping AVAudioSession config - handled by DataChannelAudioPlayer
[09:28:58] [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"]
[09:28:58] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[09:28:58] [WS] Opening session at ws://crivello.dyndns.org:8081/
[09:28:58] [QUERY] ✅ tempQueryConnection created for iosILUIWU
[09:28:58] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[09:28:58] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[09:28:58] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[09:28:58] Did transition
[09:28:58] [TABLEVIEW] cellForRowAt index 0 out of bounds (count=0)
[09:28:58] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[09:28:58] [CHUNK] Merged 865 reactions synchronously
[09:28:58] [RELOAD_TAB] ⏳ Already pending, waiting for debounce
[09:28:58] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[09:28:58] [MIGRATION] No messages need sender_name backfill
[09:28:58] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[09:28:58] [GALLERY_DB] Raw datesent for msg 18329: '2026-01-21 07:22:53'
[09:28:58] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[09:28:58] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[09:28:58] [GALLERY_DB] ✅ Loaded 469 media messages
[09:28:58] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18337
[09:28:58] [GALLERY] Filtered 469 -> 430 (only with local thumbnails)
[09:28:58] [GALLERY] First 5 after sort (newest first):
[09:28:58] [GALLERY] 0: id=18329, date=2026-01-21 07:22:53, file=41e6d3f8b6fc3362.jpg
[09:28:58] [GALLERY] 1: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[09:28:58] [GALLERY] 2: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[09:28:58] [GALLERY] 3: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[09:28:58] [GALLERY] 4: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[09:28:58] [SCROLL_BTN] Showing button - 32pt from bottom > half 22pt
[09:28:58] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:28:58] [EMOJI] ✅ Loaded 451 emoji-to-GIF mappings
[09:28:58] [SERVER] Starting reconnect polling (5s interval)
[09:28:58] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[09:28:58] [ICONS] Offset applied: -14.6
[09:28:58] [ICONS] New left margin: 11.2, New right margin: 11.3
[09:28:58] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[09:28:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[09:28:58] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[09:28:58] Token POST → https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[09:28:58] [ICONS] Chat center: (31.2, 87.0)
[09:28:58] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[09:28:58] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[09:28:58] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[09:28:58] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[09:28:58] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[09:28:58] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[09:28:58] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[09:28:58] [ICONS] Screen width: 440.0
[09:28:58] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:28:58] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:28:58] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[09:28:58] [USER] ✅ User registered successfully
[09:28:58] [USER] User registration successful
[09:28:58] [INCREMENTAL_SYNC] ✅ No new messages
[09:28:58] [PURGE] ⚠️ Media cache purge DISABLED for debugging
[09:28:58] [UNSENT_RETRY] Checking for unsent messages...
[09:28:58] [UPLOAD_RECOVERY] ========== CHECKING FOR MISSING UPLOADS ==========
[09:28:58] [UPLOAD_RECOVERY] User ID: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF
[09:28:58] [UPLOAD_RECOVERY] Session: ILUIWU
[09:28:58] [UPLOAD_RECOVERY] ✅ No stuck uploads found
[09:28:58] [UPLOAD_RECOVERY] Checking recent media messages on server...
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18329, file=41e6d3f8b6fc3362.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18320, file=79f8421197610988.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18312, file=077bf4aba425ab65.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18306, file=8c29dab4be6eb199.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18296, file=e27abe61119a26c3.mov, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18276, file=a9dc1013e9d5a3e6.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18267, file=e30710a6fc631f7e.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] 📋 Recent media: msgId=18202, file=74db1eca8b92424a.jpg, upload_status=complete
[09:28:58] [UPLOAD_RECOVERY] Verifying 8 media files exist on server...
[09:28:58] [PENDING_UPLOAD] Total pending upload messages: 0
[09:28:58] [UNSENT_RETRY] No unsent messages found
[09:28:58] new_session POST ok: token len=157
[09:28:58] HELLO → sent (fetched token, role=query)
[09:28:58] [SIG] hello_ok received for query connection - ready to query agents
[09:28:58] [SIG] get_agents request sent for sessionId=ILUIWU
[09:28:58] [SIG] get_agents request sent for sessionId=iosILUIWU
[09:28:58] [SERVER] Stopped reconnect polling
[09:28:58] [SIG] agents_list received: []
[09:28:58] [SIG] agents_list received: []
[09:28:58] [UPLOAD_RECOVERY] ✅ All media files verified on server
[09:28:59] [COMBINED_FETCH] Loaded 7103 read receipts, 862 messages with reactions
[09:28:59] [READBY_ENRICH] Enriched 50 messages with readBy data
[09:28:59] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:28:59] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:28:59] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:28:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[09:29:01] [CAMERA] Switch-over factors: [2, 8]
[09:29:01] [CAMERA] Virtual device max zoom: 123.75
[09:29:01] [CAMERA] 0.5x: virtual device at zoom 1.0 (ultra-wide)
[09:29:01] [CAMERA] 1x: virtual device at zoom 2.0 (wide angle, macro enabled)
[09:29:01] [CAMERA] 2x: virtual device at zoom 4.0
[09:29:01] [CAMERA] 4x: virtual device at zoom 8.0 (telephoto)
[09:29:01] [CAMERA] 8x: virtual device at zoom 16.0
[09:29:01] [CAMERA] Discovered 5 lenses: ["0.5x=1.0", "1x=2.0", "2x=4.0", "4x=8.0", "8x=16.0"]
[09:29:01] [CAMERA] Using device: Front Camera (AVCaptureDeviceTypeBuiltInWideAngleCamera)
[09:29:01] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[09:29:01] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[09:29:01] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[09:29:01] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[09:29:01] [VOLUME] Starting volume button monitoring
[09:29:01] [VOLUME] Hidden MPVolumeView installed
[09:29:01] [VOLUME] Audio session active, initial volume: 0.15
[09:29:01] [VOLUME] Volume observation started
[09:29:01] [CAMERA] updateVideoOrientation - no connection or orientation not supported
[09:29:01] [CAMERA] viewDidLayoutSubviews - previewView.bounds: (0.0, 0.0, 440.0, 796.0), camera: FRONT
[09:29:01] [CAMERA] Configuring focus for Front Camera
[09:29:01] [CAMERA] Focus configured: mode=1, subjectAreaMonitoring=true
[09:29:02] [CAMERA] setupPreviewLayer - previewView.bounds: (0.0, 0.0, 440.0, 796.0), previewLayer.frame: (0.0, 0.0, 440.0, 796.0)
[09:29:02] [CAMERA] Switched to continuous autofocus, lens position: 0.6666666
[09:29:10] [HAPTIC] triggerHapticFeedback called - mode: photo, isRecording: false
[09:29:10] [HAPTIC] Triggering peek haptic for photo
[09:29:10] [VOLUME] Stopping volume button monitoring
[09:29:10] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[09:29:10] [GALLERY_DB] Raw datesent for msg 18329: '2026-01-21 07:22:53'
[09:29:10] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[09:29:10] [GALLERY_DB] Raw datesent for msg 18319: '2026-01-21 01:00:44'
[09:29:10] [GALLERY_DB] ✅ Loaded 469 media messages
[09:29:10] [GALLERY] Filtered 469 -> 430 (only with local thumbnails)
[09:29:10] [GALLERY] First 5 after sort (newest first):
[09:29:10] [GALLERY] 0: id=18329, date=2026-01-21 07:22:53, file=41e6d3f8b6fc3362.jpg
[09:29:10] [GALLERY] 1: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[09:29:10] [GALLERY] 2: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[09:29:10] [GALLERY] 3: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[09:29:10] [GALLERY] 4: id=18306, date=2026-01-20 16:30:15, file=8c29dab4be6eb199.jpg
[09:29:12] Chosen timer = 0
[09:29:12] [MEDIA_SEND] ========== NEW UPLOAD ==========
[09:29:12] [MEDIA_SEND] onSend called
[09:29:12] [MEDIA_SEND] Source URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/43D12DCD-AC2A-4886-8010-DC076A1DC37C.jpg
[09:29:12] [MEDIA_SEND] Source file exists: true
[09:29:12] [MEDIA_SEND] Original filename: 43D12DCD-AC2A-4886-8010-DC076A1DC37C.jpg
[09:29:12] [MEDIA_SEND] Random filename: 587faef97c05d266.jpg
[09:29:12] [MEDIA_SEND] File extension: jpg
[09:29:12] [MEDIA_SEND] Local media path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/587faef97c05d266.jpg
[09:29:12] [MEDIA_SEND] Local thumbnail path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_587faef97c05d266.jpg
[09:29:12] [MEDIA_SEND] Source file size: 697575 bytes (0.67 MB)
[09:29:12] [MEDIA_SEND] Copying file (<100MB)
[09:29:12] [MEDIA_SEND] File copied successfully
[09:29:12] [MEDIA_SEND] Destination file exists: true
[09:29:12] [MEDIA_SEND] Destination file size: 697575 bytes
[09:29:12] [MEDIA_SEND] Creating thumbnail...
[09:29:12] [MEDIA_SEND] Thumbnail created in 0.02s
[09:29:12] [MEDIA_SEND] Thumbnail dimensions: (225.0, 400.0)
[09:29:12] [MEDIA_SEND] Thumbnail exists: true
[09:29:12] [MEDIA_SEND] Thumbnail file size: 24354 bytes
[09:29:12] [MEDIA_SEND] Sending message to server...
[09:29:12] [MEDIA_SEND] Caption: ''
[09:29:12] [MEDIA_SEND] Timer: 0
[09:29:12] [MEDIA_SEND] Filename: 587faef97c05d266.jpg
[09:29:12] [MEDIA_FLOW] ⚠️ Message sent BEFORE upload starts - if app dies now, file won't be uploaded!
[09:29:12] [SEND_MESSAGE] 📤 Sending message, currentMsgCount=50, isReloading=false
[09:29:12] [MEDIA_SEND] 📤 Creating media message: id=-1, file=587faef97c05d266.jpg, isGiphy=false, upload_status=1 (pending)
[09:29:12] [MEDIA_SEND] 💾 Inserted to DB with upload_status=1
[09:29:12] [SEND_MESSAGE] ✅ Added optimistic message id=-1 to arrays, newMsgCount=51
[09:29:12] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[-1, 18337, 18336, 18335, 18334]
[09:29:12] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:12] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:12] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[09:29:12] [REPLY_DEBUG] ❌ cancelReply called - clearing messageToReplyTo
[09:29:12] [CELL_UPLOAD] configure: msgId=-1, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[09:29:12] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[09:29:12] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:12] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[09:29:12] [REPLY_DEBUG] ⚠️ sendMessage HTTP BODY - No reply message captured
[09:29:12] [MEDIA_SEND] sendMessage API call completed
[09:29:12] [MEDIA_SEND] Starting THUMBNAIL upload: t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[09:29:12] [UPLOAD_ENQUEUE] 📥 File: t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[09:29:12] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.0 MB
[09:29:12] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[09:29:12] [GALLERY_DB] Raw datesent for msg -1: '2026-01-21 08:29:12'
[09:29:12] [UPLOAD_QUEUE] Enqueued upload id=613 for t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[09:29:12] [UPLOAD_DEBUG] Item ID: 613
[09:29:12] [GALLERY_DB] Raw datesent for msg 18329: '2026-01-21 07:22:53'
[09:29:12] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_DEBUG] Random filename: t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_DEBUG] Session ID: ILUIWU
[09:29:12] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[09:29:12] [UPLOAD_DEBUG] Retry count: 0
[09:29:12] [GALLERY_DB] Raw datesent for msg 18320: '2026-01-21 05:53:37'
[09:29:12] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_587faef97c05d266.jpg, status=uploading (2), progress=0.0%
[09:29:12] [UPLOAD_DEBUG] File exists: true
[09:29:12] [UPLOAD_DEBUG] File size: 24354 bytes (0.0 MB)
[09:29:12] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[09:29:12] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[09:29:12] [UPLOAD_DEBUG] --- startStandardUpload ---
[09:29:12] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[09:29:12] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[09:29:12] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/25E477AD-AA63-4379-AD47-6B69D01A283C.upload
[09:29:12] [UPLOAD_DEBUG] File size: 24354 bytes, in-memory threshold: 10485760 bytes
[09:29:12] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[09:29:12] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (24836 bytes)
[09:29:12] [UPLOAD_DEBUG] Creating background upload task...
[09:29:12] [UPLOAD_DEBUG] Task created with identifier: 1
[09:29:12] [UPLOAD_DEBUG] Added to activeUploads dictionary
[09:29:12] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[09:29:12] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=1 | file=t_587faef97c05d266.jpg | size=0.0MB | retries=0
[09:29:12] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[09:29:12] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[09:29:12] [GALLERY_DB] ✅ Loaded 470 media messages
[09:29:12] [GALLERY] Filtered 470 -> 431 (only with local thumbnails)
[09:29:12] [GALLERY] First 5 after sort (newest first):
[09:29:12] [GALLERY] 0: id=-1, date=2026-01-21 08:29:12, file=587faef97c05d266.jpg
[09:29:12] [GALLERY] 1: id=18329, date=2026-01-21 07:22:53, file=41e6d3f8b6fc3362.jpg
[09:29:12] [GALLERY] 2: id=18320, date=2026-01-21 05:53:37, file=79f8421197610988.jpg
[09:29:12] [GALLERY] 3: id=18319, date=2026-01-21 01:00:44, file=69cc52974ecff2d4.png
[09:29:12] [GALLERY] 4: id=18312, date=2026-01-20 18:15:55, file=077bf4aba425ab65.jpg
[09:29:12] [UPLOAD_STATUS] 📬 Received notification: file=t_587faef97c05d266.jpg, status=2 (uploading)
[09:29:12] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_587faef97c05d266.jpg
[09:29:12] [UPLOAD_STATUS] 💾 Updating DB: file=t_587faef97c05d266.jpg, status=2 (uploading)
[09:29:12] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_587faef97c05d266.jpg not found in local_messages
[09:29:13] [UPLOAD_PROGRESS] t_587faef97c05d266.jpg: 100% (0.0/0.0 MB) task=1
[09:29:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_587faef97c05d266.jpg, status=uploading (2), progress=100.0%
[09:29:13] [UPLOAD_STATUS] 📬 Received notification: file=t_587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_STATUS] 💾 Updating DB: file=t_587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_587faef97c05d266.jpg not found in local_messages
[09:29:13] [CLIENT_SIG] Event received: type=0 messageId=18338
[09:29:13] [WS_EVENT] Received event: type=0, messageId=18338
[09:29:13] [WS_EVENT] 📨 New message notification (msgId=18338) - triggering incremental refresh, currentMsgCount=51
[09:29:13] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[09:29:13] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18337
[09:29:13] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":18338,"session_id":"ILUIWU","message_type":1,"file_name":"587faef97c05d266.jpg","datesent_utc":"2026-01-21 08:29:13"}
[09:29:13] [CHAT] receive_message.php JSON: ["session_id": ILUIWU, "file_name": 587faef97c05d266.jpg, "datesent_utc": 2026-01-21 08:29:13, "message_id": 18338, "message_type": 1, "ok": 1]
[09:29:13] [DB_UPGRADE] Upgrading message ID: -1 → 18338, preserveOriginalDate=false
[09:29:13] [DB_UPGRADE] ✅ Upgraded -1 → 18338 with send_status=0, 1 row(s) affected
[09:29:13] [SEND_UPGRADE] ✅ Updated chatMessages[0].id: -1 → 18338
[09:29:13] [SEND_UPGRADE] ✅ Updated allMessagesWithReadBy[0].id: -1 → 18338
[09:29:13] ReloadData 9
[09:29:13] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[09:29:13] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[09:29:13] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[09:29:13] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:13] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[09:29:13] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[09:29:13] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[09:29:13] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:29:13] [UPLOAD_RESPONSE] Started receiving response for task 1
[09:29:13] [UPLOAD_METRICS] Task 1 metrics:
[09:29:13] [UPLOAD_METRICS] Total time: 1.12s
[09:29:13] [UPLOAD_METRICS] Upload time: 0.00s
[09:29:13] [UPLOAD_METRICS] Response time: 0.00s
[09:29:13] [UPLOAD_METRICS] Network protocol: http/1.1
[09:29:13] [UPLOAD_METRICS] Proxy: no
[09:29:13] [UPLOAD_METRICS] Reused connection: no
[09:29:13] [UPLOAD_COMPLETE] ========== Task Completed ==========
[09:29:13] [UPLOAD_COMPLETE] Task ID: 1
[09:29:13] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[09:29:13] [UPLOAD_COMPLETE] Filename: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_COMPLETE] Retry count: 0
[09:29:13] [UPLOAD_COMPLETE] HTTP Status: 200
[09:29:13] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Date"): Wed, 21 Jan 2026 08:29:13 GMT, AnyHashable("Keep-Alive"): timeout=5, max=100, AnyHashable("Content-Length"): 217, AnyHashable("Content-Type"): application/json, AnyHashable("Connection"): Keep-Alive]
[09:29:13] [UPLOAD_COMPLETE] Response body (217 bytes): {"ok":true,"file_name":"t_587faef97c05d266.jpg","orig_name":"t_587faef97c05d266.jpg","size":24354,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":24836}}
[09:29:13] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[09:29:13] [UPLOAD_COMPLETE] Server filename: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_VERIFY] Verifying file exists: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_VERIFY] ✅ File verified: t_587faef97c05d266.jpg (size: 24354)
[09:29:13] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=t_587faef97c05d266.jpg | id=613 | retries=0
[09:29:13] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[09:29:13] [UPLOAD_COMPLETE] ✅ File: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_COMPLETE] ✅ Queue ID: 613
[09:29:13] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[09:29:13] [UPLOAD_COMPLETE] ✅ Server filename: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[09:29:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=t_587faef97c05d266.jpg, status=complete (0), progress=0.0%
[09:29:13] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=613
[09:29:13] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=1
[09:29:13] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=1 → pending
[09:29:13] [CELL_UPLOAD] setUploadStatus(pending, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:13] [CELL_UPLOAD] → pending: overlay.isHidden=false, alpha=1.0
[09:29:13] [UPLOAD_STATUS] 📬 Received notification: file=t_587faef97c05d266.jpg, status=0 (complete)
[09:29:13] [UPLOAD_STATUS] ⚠️ File not found in memory arrays: t_587faef97c05d266.jpg
[09:29:13] [UPLOAD_STATUS] 💾 Updating DB: file=t_587faef97c05d266.jpg, status=0 (complete)
[09:29:13] [UPLOAD_STATUS] ⚠️ DB update: 0 rows affected - file=t_587faef97c05d266.jpg not found in local_messages
[09:29:13] [MEDIA_SEND] Thumbnail uploaded successfully in 1.19s
[09:29:13] [MEDIA_SEND] Thumbnail server filename: t_587faef97c05d266.jpg
[09:29:13] [MEDIA_SEND] Starting MAIN FILE upload: 587faef97c05d266.jpg
[09:29:13] [UPLOAD_ENQUEUE] 📥 ========== ENQUEUE UPLOAD ==========
[09:29:13] [UPLOAD_ENQUEUE] 📥 File: 587faef97c05d266.jpg
[09:29:13] [UPLOAD_ENQUEUE] 📥 Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/587faef97c05d266.jpg
[09:29:13] [UPLOAD_ENQUEUE] 📥 Session: ILUIWU
[09:29:13] [UPLOAD_ENQUEUE] 📥 File exists: true, size: 0.7 MB
[09:29:13] [UPLOAD_QUEUE] Enqueued upload id=614 for 587faef97c05d266.jpg
[09:29:13] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[09:29:13] [UPLOAD_DEBUG] Item ID: 614
[09:29:13] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/587faef97c05d266.jpg
[09:29:13] [UPLOAD_DEBUG] Random filename: 587faef97c05d266.jpg
[09:29:13] [UPLOAD_DEBUG] Session ID: ILUIWU
[09:29:13] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[09:29:13] [UPLOAD_DEBUG] Retry count: 0
[09:29:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=587faef97c05d266.jpg, status=uploading (2), progress=0.0%
[09:29:13] [UPLOAD_STATUS] 📬 Received notification: file=587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_DEBUG] File exists: true
[09:29:13] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[50]: 1 → 2
[09:29:13] [UPLOAD_STATUS] 📝 Updated chatMessages[50]: status=2
[09:29:13] [UPLOAD_STATUS] 💾 Updating DB: file=587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_DEBUG] File size: 697575 bytes (0.7 MB)
[09:29:13] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[09:29:13] [UPLOAD_DEBUG] → Using STANDARD upload (file <= threshold)
[09:29:13] [UPLOAD_DEBUG] --- startStandardUpload ---
[09:29:13] [UPLOAD_DEBUG] Upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_media.php
[09:29:13] [UPLOAD_DEBUG] File extension: jpg, MIME type: image/jpeg
[09:29:13] [UPLOAD_DEBUG] Temp file URL: /private/var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/tmp/0121177E-E189-4FF1-82FE-238CC370593D.upload
[09:29:13] [UPLOAD_DEBUG] File size: 697575 bytes, in-memory threshold: 10485760 bytes
[09:29:13] [UPLOAD_DEBUG] Creating multipart body (in-memory mode)...
[09:29:13] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=587faef97c05d266.jpg
[09:29:13] [CELL_UPLOAD] setUploadStatus(uploading, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:13] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[09:29:13] [UPLOAD_DEBUG] ✓ In-memory body written to temp file (698051 bytes)
[09:29:13] [UPLOAD_DEBUG] Creating background upload task...
[09:29:13] [UPLOAD_DEBUG] Task created with identifier: 2
[09:29:13] [UPLOAD_DEBUG] Added to activeUploads dictionary
[09:29:13] [UPLOAD_DEBUG] Updated DB status to 'uploading'
[09:29:13] [UPLOAD_LIFECYCLE] 🚀 STARTED | task=2 | file=587faef97c05d266.jpg | size=0.7MB | retries=0
[09:29:13] [UPLOAD_DEBUG] ✓ Task resumed - upload should be in progress now
[09:29:13] [UPLOAD_DEBUG] ========== UPLOAD STARTED ==========
[09:29:13] [UPLOAD_PROGRESS] 587faef97c05d266.jpg: 100% (0.7/0.7 MB) task=2
[09:29:13] [UPLOAD_NOTIFY] 📣 Posting notification: file=587faef97c05d266.jpg, status=uploading (2), progress=100.0%
[09:29:13] [UPLOAD_STATUS] 📬 Received notification: file=587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[50]: 2 → 2
[09:29:13] [UPLOAD_STATUS] 📝 Updated chatMessages[50]: status=2
[09:29:13] [UPLOAD_STATUS] 💾 Updating DB: file=587faef97c05d266.jpg, status=2 (uploading)
[09:29:13] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=587faef97c05d266.jpg
[09:29:13] [MEDIA_SEND] Main upload progress: 100%
[09:29:13] [CELL_UPLOAD] setUploadStatus(uploading, progress=1.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:13] [CELL_UPLOAD] → uploading: circularProgress visible, overlay.isHidden=false
[09:29:13] [PROGRESS] Updated cell for 587faef97c05d266.jpg: 100%
[09:29:16] [UPLOAD_RESPONSE] Started receiving response for task 2
[09:29:16] [UPLOAD_METRICS] Task 2 metrics:
[09:29:16] [UPLOAD_METRICS] Total time: 3.40s
[09:29:16] [UPLOAD_METRICS] Upload time: 1.34s
[09:29:16] [UPLOAD_METRICS] Response time: 0.00s
[09:29:16] [UPLOAD_METRICS] Network protocol: http/1.1
[09:29:16] [UPLOAD_METRICS] Proxy: no
[09:29:16] [UPLOAD_METRICS] Reused connection: yes
[09:29:16] [UPLOAD_COMPLETE] ========== Task Completed ==========
[09:29:16] [UPLOAD_COMPLETE] Task ID: 2
[09:29:16] [UPLOAD_COMPLETE] Task state: 3 (0=running, 1=suspended, 2=canceling, 3=completed)
[09:29:16] [UPLOAD_COMPLETE] Filename: 587faef97c05d266.jpg
[09:29:16] [UPLOAD_COMPLETE] Local path: /var/mobile/Containers/Data/Application/BCEE3A1D-777A-4FA7-8430-4ADDB19C5FAA/Documents/MediaCache/587faef97c05d266.jpg
[09:29:16] [UPLOAD_COMPLETE] Retry count: 0
[09:29:16] [UPLOAD_COMPLETE] HTTP Status: 200
[09:29:16] [UPLOAD_COMPLETE] Response headers: [AnyHashable("Keep-Alive"): timeout=5, max=99, AnyHashable("Content-Type"): application/json, AnyHashable("Content-Length"): 215, AnyHashable("Server"): Apache/2.4.65 (Debian), AnyHashable("Date"): Wed, 21 Jan 2026 08:29:13 GMT, AnyHashable("Connection"): Keep-Alive]
[09:29:16] [UPLOAD_COMPLETE] Response body (215 bytes): {"ok":true,"file_name":"587faef97c05d266.jpg","orig_name":"587faef97c05d266.jpg","size":697575,"env":{"file_uploads":"1","upload_max_filesize":"5G","post_max_size":"10G","upload_tmp_dir":"","content_length":698051}}
[09:29:16] [UPLOAD_COMPLETE] ✅ Server confirmed upload OK
[09:29:16] [UPLOAD_COMPLETE] Server filename: 587faef97c05d266.jpg
[09:29:16] [UPLOAD_VERIFY] Verifying file exists: 587faef97c05d266.jpg
[09:29:17] [UPLOAD_VERIFY] ✅ File verified: 587faef97c05d266.jpg (size: 697575)
[09:29:17] [UPLOAD_LIFECYCLE] ✅ COMPLETED | file=587faef97c05d266.jpg | id=614 | retries=0
[09:29:17] [UPLOAD_COMPLETE] ✅ ========== UPLOAD COMPLETED ==========
[09:29:17] [UPLOAD_COMPLETE] ✅ File: 587faef97c05d266.jpg
[09:29:17] [UPLOAD_COMPLETE] ✅ Queue ID: 614
[09:29:17] [UPLOAD_COMPLETE] ✅ Session: ILUIWU
[09:29:17] [UPLOAD_COMPLETE] ✅ Server filename: 587faef97c05d266.jpg
[09:29:17] [UPLOAD_COMPLETE] ✅ Posting .complete status notification
[09:29:17] [UPLOAD_NOTIFY] 📣 Posting notification: file=587faef97c05d266.jpg, status=complete (0), progress=0.0%
[09:29:17] [UPLOAD_STATUS] 📬 Received notification: file=587faef97c05d266.jpg, status=0 (complete)
[09:29:17] [UPLOAD_STATUS] 📝 Updated allMessagesWithReadBy[50]: 2 → 0
[09:29:17] [UPLOAD_STATUS] 📝 Updated chatMessages[50]: status=0
[09:29:17] [UPLOAD_STATUS] 💾 Updating DB: file=587faef97c05d266.jpg, status=0 (complete)
[09:29:17] [UPLOAD_COMPLETE] ✅ Upload queue DB updated to 'completed' for id=614
[09:29:17] [UPLOAD_STATUS] ✅ DB updated: 1 row(s) affected for file=587faef97c05d266.jpg
[09:29:17] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:17] [MEDIA_SEND] MAIN FILE UPLOADED SUCCESSFULLY
[09:29:17] [MEDIA_SEND] Server filename: 587faef97c05d266.jpg
[09:29:17] [MEDIA_SEND] Main upload duration: 3.52s
[09:29:17] [MEDIA_SEND] Total upload duration: 4.71s
[09:29:17] [MEDIA_SEND] ========== UPLOAD COMPLETE ==========
[09:29:17] [PROGRESS] Updated cell for 587faef97c05d266.jpg: 100%
[09:29:18] [CLIENT_SIG] Client connected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[09:29:19] [LOCK] Lock button tapped - locking app immediately
[09:29:19] [LOCK] Received lock app notification
[09:29:20] [PUSH] Silent push received
[09:29:20] [PUSH_EMBED] No embedded message_data in notification
[09:29:20] [PUSH] No embedded data, pre-loading messages from server
[09:29:20] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:20] [PUSH] Silent push received
[09:29:20] [PUSH_EMBED] No embedded message_data in notification
[09:29:20] [PUSH] No embedded data, pre-loading messages from server
[09:29:20] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:21] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:21] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[09:29:21] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:21] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[09:29:21] [PUSH] Silent push received
[09:29:21] [PUSH_EMBED] No embedded message_data in notification
[09:29:21] [PUSH] No embedded data, pre-loading messages from server
[09:29:21] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:21] [PUSH] Silent push received
[09:29:21] [PUSH_EMBED] No embedded message_data in notification
[09:29:21] [PUSH] No embedded data, pre-loading messages from server
[09:29:21] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18338, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[09:29:21] [PUSH] Parsed message_id: 18338
[09:29:21] [PUSH] Parsed operation_type: 3
[09:29:21] [PUSH] Taking direct action: opType=3, messageId=18338
[09:29:21] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18338
[09:29:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18335, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[09:29:21] [PUSH] Parsed message_id: 18335
[09:29:21] [PUSH] Parsed operation_type: 3
[09:29:21] [PUSH] Taking direct action: opType=3, messageId=18335
[09:29:21] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18335
[09:29:21] [LIFECYCLE] App resigning active - cleared crash flag
[09:29:21] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:21] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[09:29:21] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:21] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[09:29:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18336, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
[09:29:21] [PUSH] Parsed message_id: 18336
[09:29:21] [PUSH] Parsed operation_type: 3
[09:29:21] [PUSH] Taking direct action: opType=3, messageId=18336
[09:29:21] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18336
[09:29:21] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:21] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("operation_type"): 3, AnyHashable("message_id"): 18337, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("session_id"): ILUIWU]
[09:29:21] [PUSH] Parsed message_id: 18337
[09:29:21] [PUSH] Parsed operation_type: 3
[09:29:21] [PUSH] Taking direct action: opType=3, messageId=18337
[09:29:21] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18337
[09:29:22] [SECURITY] sceneDidEnterBackground - isAuthenticated=false
[09:29:22] [SECURITY] ⚠️ NOT saving timestamp - isAuthenticated is false
[09:29:22] [LIFECYCLE] App entering background - cleared crash flag
[09:29:22] [CLIENT_SIG] Disconnecting
[09:29:22] [LIFECYCLE] App entering background - disconnecting connections and stopping audio
[09:29:22] [WS] stopSignalingAndPeer called - isQueryOnly=true, connectionStr=iosILUIWU, wsState=0
[09:29:22] [WS] Canceling WebSocket for query connection to iosILUIWU
[09:29:22] In cleanupPeer
[09:29:22] In cleanupPeer
[09:29:22] [LIFECYCLE] WebRTC audio disabled
[09:29:22] [LIFECYCLE] AVAudioSession deactivated
[09:29:22] [LIFECYCLE] All connections stopped
[09:29:22] [CLIENT_SIG] WebSocket closed with code 1001
[09:29:22] [CLIENT_SIG] Reconnecting in 2.0s (attempt 1)
[09:29:22] [SERVER] Stopped reconnect polling
[09:29:22] Will request stop of video 0
[09:29:22] [WS] WebSocket task completed with error - isQueryOnly=true: cancelled
[09:29:22] [WS] Query connection error - cleaning up all agent connections and views
[09:29:22] Will request stop of video 0
[09:29:22] [WS] Connection failed: The operation couldn’t be completed. Socket is not connected
[09:29:22] [WS] Query connection failed - cleaning up all agent connections and views
[09:29:22] [CLIENT_SIG] Receive error: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=http://crivello.dyndns.org:8081/, NSErrorFailingURLKey=http://crivello.dyndns.org:8081/}
[09:29:22] [CLIENT_SIG] Reconnecting in 4.0s (attempt 2)
[09:29:22] [PIP] Removing 0 tracks from PiP for connection 0
[09:29:22] [PIP] ✅ All tracks removed for connection 0
[09:29:22] [CLEANUP] ========================================
[09:29:22] [CLEANUP] Cleaning up all agent connections and views
[09:29:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[09:29:22] [CLEANUP] Stopped and removed 0 video connections
[09:29:22] [CLEANUP] Removed 0 video views
[09:29:22] [CLEANUP] Removed 0 feed scroll views
[09:29:22] [CLEANUP] Removed 0 status labels
[09:29:22] [CLEANUP] Reset agent query state
[09:29:22] [CLEANUP] Updated page indicator
[09:29:22] [CLEANUP] Rebuilt video layout
[09:29:22] [CLEANUP] ✅ All agent connections and views cleaned up
[09:29:22] [CLEANUP] ========================================
[09:29:22] [SERVER] Skipping reconnect polling - app is in background
[09:29:22] [PIP] Removing 0 tracks from PiP for connection 0
[09:29:22] [PIP] ✅ All tracks removed for connection 0
[09:29:22] [WS] URLSession invalidated successfully
[09:29:22] [CLEANUP] ========================================
[09:29:22] [CLEANUP] Cleaning up all agent connections and views
[09:29:22] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[09:29:22] [CLEANUP] Stopped and removed 0 video connections
[09:29:22] [CLEANUP] Removed 0 video views
[09:29:22] [CLEANUP] Removed 0 feed scroll views
[09:29:22] [CLEANUP] Removed 0 status labels
[09:29:22] [CLEANUP] Reset agent query state
[09:29:22] [CLEANUP] Updated page indicator
[09:29:22] [CLEANUP] Rebuilt video layout
[09:29:22] [CLEANUP] ✅ All agent connections and views cleaned up
[09:29:22] [CLEANUP] ========================================
[09:29:22] [SERVER] Skipping reconnect polling - app is in background
[09:29:32] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[09:29:32] [CLIENT_SIG] Connecting to session ILUIWU as Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:29:32] [LIFECYCLE] App entering foreground - restoring connections
[09:29:32] [UPLOAD_RETRY] No pending uploads to retry
[09:29:32] [LIFECYCLE] Merged 865 reactions from local DB
[09:29:32] [LIFECYCLE] WebRTC audio re-enabled
[09:29:32] [AUDIO] ✅ Chat mode - audio will be managed by WebRTCViewer (no microphone)
[09:29:32] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[09:29:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[09:29:32] [VIEWER] Reconnecting after background - querying agents
[09:29:32] [UNSENT_RETRY] Checking for unsent messages...
[09:29:32] [PENDING_UPLOAD] Total pending upload messages: 0
[09:29:32] [UNSENT_RETRY] No unsent messages found
[09:29:32] [WS] Creating new WebSocket - isQueryOnly=true, connectionStr=iosILUIWU
[09:29:32] [WS] Opening session at ws://crivello.dyndns.org:8081/
[09:29:32] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[09:29:32] [CLIENT_SIG] WebSocket opened
[09:29:32] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[09:29:32] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[09:29:32] HELLO → sent (cached token, role=query)
[09:29:32] [CLIENT_SIG] Connected! clientId=Bl-TUIjnByISWS1v
[09:29:32] [CLIENT_SIG] Received 2 clients for session 'ILUIWU' (my session: 'ILUIWU')
[09:29:32] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[09:29:32] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:29:32] [SIG] hello_ok received for query connection - ready to query agents
[09:29:32] [SIG] get_agents request sent for sessionId=ILUIWU
[09:29:32] [SIG] get_agents request sent for sessionId=iosILUIWU
[09:29:32] [SERVER] Stopped reconnect polling
[09:29:32] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:29:32] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:32] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:32] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:32] [SIG] agents_list received: []
[09:29:32] [SIG] agents_list received: []
[09:29:32] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[09:29:32] [PUSH_DEBUG] 🟢 App became ACTIVE - resetting badges and triggering pollEventsNow
[09:29:32] [PUSH] handlePollEventsNotification userInfo: [:]
[09:29:32] [PUSH] No message_id in userInfo
[09:29:32] [PUSH] No operation_type in userInfo
[09:29:32] [FAST_REFRESH] Evolution disabled - performing incremental sync
[09:29:32] [FAST_REFRESH] Already have 51 messages - skipping local DB load
[09:29:32] [FAST_REFRESH] About to call reloadMessagesForCurrentTab(), isMainThread=true, viewLoaded=true
[09:29:32] [FAST_REFRESH] reloadMessagesForCurrentTab() called successfully
[09:29:32] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=51
[09:29:32] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18338
[09:29:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:29:33] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[09:29:33] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:33] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:33] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[09:29:33] [FAST_REFRESH] Incremental sync complete - 52 messages
[09:29:33] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=52, first5Ids=[18287, 18288, 18289, 18290, 18291]
[09:29:33] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:33] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:33] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:33] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18338 → 18339
[09:29:33] [PUSH] Silent push received
[09:29:33] [PUSH_EMBED] 📩 Received embedded message: id=18339, type=0, sender=Esra
[09:29:34] [PUSH_EMBED] ✅ Saved message 18339 to local DB (sync)
[09:29:34] [PUSH_EMBED] Inserted message 18339 into existing cache (now 51 messages)
[09:29:34] [PUSH_EMBED] Fetching evolution data for message 18339 in background
[09:29:34] [PUSH_EMBED] ✅ Fully processed message 18339
[09:29:34] [PUSH] Embedded message handled instantly from silent push
[09:29:34] [PUSH_UI] 🔔 handlePushMessageReceived CALLED
[09:29:34] [PUSH_UI_BLACKOUT] blackoutView=false, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, type=0
[09:29:34] [PUSH_UI] Message 18339 already in memory - skipping insert
[09:29:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 1;
"content-available" = 1;
sound = default;
}, AnyHashable("session_id"): ILUIWU, AnyHashable("message_data"): {
datesent = "2026-01-21 08:29:26";
"file_name" = "";
message = "\Ud83d\Ude0d\Ud83d\Ude0d\Ud83d\Ude0d\Ud83d\Ude0d\Ud83d\Ude0d\Ud83d\Ude0d";
"message_id" = 18339;
"message_type" = 0;
"prev_session_message_id" = 18338;
"sender_id" = "EDAD55A1-003F-415D-AA60-672B34B504FE";
"sender_name" = Esra;
"session_id" = ILUIWU;
timer = 0;
}, AnyHashable("operation_type"): 0, AnyHashable("message_id"): 18339]
[09:29:34] [PUSH_EMBED_VC] Message 18339 already in memory - skipping
[09:29:34] [PUSH] ⚡ Embedded message handled directly in ViewController
[09:29:34] [PUSH] Parsed message_id: 18339
[09:29:34] [PUSH] Parsed operation_type: 0
[09:29:34] [PUSH] Taking direct action: opType=0, messageId=18339
[09:29:34] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18339
[09:29:34] [PUSH] ⚡ Message 18339 already in memory - skipping duplicate notification entirely
[09:29:34] [PUSH_EMBED] Got evolution data for message 18339, saving to local DB
[09:29:34] [PUSH_EMBED] Saved evolution data for message 18339
[09:29:34] [PIN_AUTH] Correct PIN
[09:29:34] [SECURITY] Restored real session: ILUIWU
[09:29:34] [SECURITY] Restored real session: ILUIWU
[09:29:34] [LOCK] ✅ PIN auth callback - setting isAuthenticated = true
[09:29:34] [AUTH] Authentication completed - updating UI only (data already fetched in foreground handler)
[09:29:34] [AUTH] Cache had 51 messages, maxExistingId=18339, inserted 0 truly new
[09:29:34] [AUTH] UI update complete
[09:29:34] [FAKE MODE] Exiting fake mode, restoring real session
[09:29:34] [SECURITY] Restored real session: ILUIWU
[09:29:34] [SECURITY] Saved real session: ILUIWU
[09:29:34] [FAKE MODE] ✅ Restored real session: ILUIWU
[09:29:34] [FAKE MODE] Loaded 50 messages (limited to page size)
[09:29:34] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18289, 18290, 18291, 18292, 18293]
[09:29:34] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"6c0571d5e4b29f63eac8424c26f3737968330e20febf8cd9a320b0952fc80c1c","role":"viewer","muted":0,"removed_from_other_channels":0}
[09:29:34] [USER] Registering user: 3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, name: Laurent
[09:29:34] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:34] [COMBINED_FETCH] Loaded 7105 read receipts, 862 messages with reactions
[09:29:34] [FOREGROUND] Enriched 49 messages with readBy data from server
[09:29:34] [USER] ✅ User registered successfully
[09:29:34] [PUSH] User registration after token update: success
[09:29:34] [PUSH] Silent push received
[09:29:34] [PUSH_EMBED] No embedded message_data in notification
[09:29:34] [PUSH] No embedded data, pre-loading messages from server
[09:29:34] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:34] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18289, 18290, 18291, 18292, 18293]
[09:29:34] [CELL_UPLOAD] configure: msgId=18329, file=41e6d3f8b6fc3362.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=41e6d3f8b6fc3362.jpg, overlayExists=true
[09:29:34] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:34] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:34] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:34] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:34] [PUSH_PRELOAD] ⚡ Pre-cached 50 messages for instant display (preserved 0 from push)
[09:29:34] [COMBINED_FETCH] Loaded 7105 read receipts, 862 messages with reactions
[09:29:34] [FAST_REFRESH] Enriched 50 messages with readBy data
[09:29:34] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:34] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("message_id"): 18339, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3]
[09:29:34] [PUSH] Parsed message_id: 18339
[09:29:34] [PUSH] Parsed operation_type: 3
[09:29:34] [PUSH] Taking direct action: opType=3, messageId=18339
[09:29:34] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18339
[09:29:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18289, 18290, 18291, 18292, 18293]
[09:29:35] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:35] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:35] [COMBINED_FETCH] Loaded 7105 read receipts, 862 messages with reactions
[09:29:35] [FAKE MODE] Enriched 50 messages with readBy data
[09:29:35] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=50, first5Ids=[18289, 18290, 18291, 18292, 18293]
[09:29:35] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:35] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:35] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:36] [CLIENT_SIG] Event received: type=3 messageId=18339
[09:29:36] [WS_EVENT] Received event: type=3, messageId=18339
[09:29:36] [WS_EVENT] Read receipt for message 18339 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:29:37] [CLIENT_SIG] Typing start from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[09:29:40] [CLIENT_SIG] Event received: type=0 messageId=18340
[09:29:40] [WS_EVENT] Received event: type=0, messageId=18340
[09:29:40] [WS_EVENT] 📨 New message notification (msgId=18340) - triggering incremental refresh, currentMsgCount=50
[09:29:40] [INCREMENTAL_SYNC] 🔄 Starting incremental refresh, currentMsgCount=50
[09:29:40] [INCREMENTAL_SYNC] 📡 Fetching messages since ID 18339
[09:29:40] [INCREMENTAL_SYNC] ✅ Found 1 new messages
[09:29:40] DOWNLOADIIING t_a4f205035ad487c7.jpg
[09:29:40] [BLACKOUT_DEBUG] blackoutView=nil, newMessages.count=1
[09:29:40] [WS_EVENT] ✅ Incremental refresh complete, newMsgCount=51
[09:29:40] [RELOAD_TAB] 🔄 reloadMessagesForCurrentTab called, allMsgsCount=51, first5Ids=[18289, 18290, 18291, 18292, 18293]
[09:29:40] [CELL_UPLOAD] configure: msgId=18338, file=587faef97c05d266.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=true, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:40] [CELL_UPLOAD] → no active progress, using msg.uploadStatus=0 → complete
[09:29:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=587faef97c05d266.jpg, overlayExists=true
[09:29:40] [CELL_UPLOAD] configure: msgId=18340, file=a4f205035ad487c7.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:40] [CELL_UPLOAD] → not my message, setting complete
[09:29:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a4f205035ad487c7.jpg, overlayExists=true
[09:29:40] [EVOLUTION_FILTER] 📝 Updated lastSeenMessageId after marking as read: 18339 → 18340
[09:29:40] [CELL_UPLOAD] configure: msgId=18340, file=a4f205035ad487c7.jpg, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, isMyMessage=false, hasFilename=true, isGiphy=false, uploadStatus=0
[09:29:40] [CELL_UPLOAD] → not my message, setting complete
[09:29:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a4f205035ad487c7.jpg, overlayExists=true
[09:29:40] DOWNLOADIIING a4f205035ad487c7.jpg
[09:29:40] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=a4f205035ad487c7.jpg, overlayExists=true
[09:29:41] [PUSH] Silent push received
[09:29:41] [PUSH_EMBED] No embedded message_data in notification
[09:29:41] [PUSH] No embedded data, pre-loading messages from server
[09:29:41] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:41] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:41] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [18289]
[09:29:41] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 1 from push)
[09:29:42] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:42] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18340, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 3, AnyHashable("aps"): {
"content-available" = 1;
}]
[09:29:42] [PUSH] Parsed message_id: 18340
[09:29:42] [PUSH] Parsed operation_type: 3
[09:29:42] [PUSH] Taking direct action: opType=3, messageId=18340
[09:29:42] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=18340
[09:29:42] [PUSH_DEBUG] ⬇️ PUSH RECEIVED at 2026-01-21 08:29:42 +0000 - type: unknown, operation_type: 0, message_id: 18340, session_id: ILUIWU, state: 0
[09:29:42] [PUSH_DEBUG] Full userInfo: [AnyHashable("message_id"): 18340, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
[09:29:42] [PUSH] App active - suppressing notification UI, posting internal event
[09:29:42] [PUSH_EMBED] No embedded message_data in notification
[09:29:42] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18340, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
[09:29:42] [PUSH] Parsed message_id: 18340
[09:29:42] [PUSH] Parsed operation_type: 0
[09:29:42] [PUSH] Taking direct action: opType=0, messageId=18340
[09:29:42] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18340
[09:29:42] [PUSH] ⚡ Message 18340 already in memory - skipping duplicate notification entirely
[09:29:42] [WS] WebSocket task completed with error - isQueryOnly=true: The request timed out.
[09:29:42] [WS] Query connection error - cleaning up all agent connections and views
[09:29:42] [CLEANUP] ========================================
[09:29:42] [CLEANUP] Cleaning up all agent connections and views
[09:29:42] [CLEANUP] Current state: vccs=0, videoViews=0, feedScrollViews=0
[09:29:42] [CLEANUP] Stopped and removed 0 video connections
[09:29:42] [CLEANUP] Removed 0 video views
[09:29:42] [CLEANUP] Removed 0 feed scroll views
[09:29:42] [CLEANUP] Removed 0 status labels
[09:29:42] [CLEANUP] Reset agent query state
[09:29:42] [CLEANUP] Updated page indicator
[09:29:42] [CLEANUP] Rebuilt video layout
[09:29:42] [CLEANUP] ✅ All agent connections and views cleaned up
[09:29:42] [CLEANUP] ========================================
[09:29:42] [SERVER] Starting reconnect polling (5s interval)
[09:29:42] [PUSH] Silent push received
[09:29:42] [PUSH_EMBED] No embedded message_data in notification
[09:29:42] [PUSH] No embedded data, pre-loading messages from server
[09:29:42] [PUSH_PRELOAD] Fetching messages for instant display cache
[09:29:43] [CLIENT_SIG] Typing stop from: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[09:29:43] [CLIENT_SIG] Event received: type=3 messageId=18340
[09:29:43] [WS_EVENT] Received event: type=3, messageId=18340
[09:29:43] [WS_EVENT] Read receipt for message 18340 by Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[09:29:43] [PUSH_PRELOAD] Fetched 50 messages - caching for instant display
[09:29:43] [PRELOAD_CACHE] Preserving 1 push-inserted messages: [18289]
[09:29:43] [PUSH_PRELOAD] ⚡ Pre-cached 51 messages for instant display (preserved 1 from push)
[09:29:43] [PUSH_PRELOAD] ✅ Pre-load complete with thumbnails
[09:29:43] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("message_id"): 18340, AnyHashable("session_id"): ILUIWU, AnyHashable("operation_type"): 0, AnyHashable("aps"): {
alert = {
body = "New message received";
title = Eye;
};
badge = 0;
"content-available" = 1;
sound = default;
}]
[09:29:43] [PUSH] Parsed message_id: 18340
[09:29:43] [PUSH] Parsed operation_type: 0
[09:29:43] [PUSH] Taking direct action: opType=0, messageId=18340
[09:29:43] [PUSH] TakeActionFromPush called: OperationType=0, MessageIds=18340
[09:29:43] [PUSH] ⚡ Message 18340 already in memory - skipping duplicate notification entirely
[09:29:45] [MENU] dismissAnyExistingMenu called
[09:29:45] [MENU] dismissAnyExistingMenu completed
[09:29:47] [SERVER] Polling - attempting to reconnect...
[09:29:49] [LOG] Long press on chat icon detected! Triggering log upload...
[09:29:49] [SCROLL_BTN] Showing button - 308pt from bottom > half 223pt
[09:29:52] [SERVER] Polling - attempting to reconnect...
[09:29:53] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')
[09:29:53] [CLIENT_SIG] Client disconnected: Esra (EDAD55A1-003F-415D-AA60-672B34B504FE) on session 'ILUIWU' (my session: 'ILUIWU')