=== Eye Viewer Log Cleared at 2025-12-09 08:50:05 +0000 ===
[11:50:05] [CRASH] No crash detected - clearing logs
[11:50:05] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[11:50:05] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[11:50:05] [GIPHY] SDK not available - using REST API fallback
[11:50:05] [BACKGROUND] Background fetch enabled
[11:50:05] [SECURITY] Initial launch - timeout exceeded (1.3359949588775635s > 0.0s)
[11:50:05] [AUTH] Starting PIN authentication
[11:50:05] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[11:50:05] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:05] [LIFECYCLE] ViewController deallocated
[11:50:05] [PUSH] APNs token: ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f
[11:50:05] [PRELOAD] ⥠Starting message pre-load during authentication...
[11:50:05] [CLIENT_SIG] WebSocket opened
[11:50:05] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[11:50:05] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[11:50:05] [SECURITY] â ī¸ Skipping timeout check - conditions not met
[11:50:05] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[11:50:05] [CLIENT_SIG] Connected! clientId=zG3gbo7CB-tbZ7xE
[11:50:05] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f","role":"viewer","muted":0,"removed_from_other_channels":0}
[11:50:05] [CLIENT_SIG] Received 3 clients for session 'ILUIWU' (my session: 'ILUIWU')
[11:50:05] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:05] [CLIENT_SIG] - Laurent (3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF)
[11:50:05] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:06] [PIN_AUTH] Correct PIN
[11:50:06] [SECURITY] Restored real session: ILUIWU
[11:50:06] [SECURITY] Restored real session: ILUIWU
[11:50:06] [SECURITY] Saved real session: ILUIWU
[11:50:06] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[11:50:06] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[11:50:06] Documents Directory: /var/mobile/Containers/Data/Application/3E955190-C0C6-4BD6-8F1F-744977F3F8D9/Documents
[11:50:06] [UPLOAD_QUEUE] Found 0 pending uploads to resume
[11:50:06] [THEME] Applying current theme
[11:50:06] [CHAT] Applied day theme (mode: day)
[11:50:06] [SECURITY] Saved real session: ILUIWU
[11:50:06] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[11:50:06] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[11:50:06] [SUMMARY] Already triggered summary today (2025-12-09)
[11:50:06] Did transition
[11:50:06] [MODE] đ updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[11:50:06] [VIEWER] Screen lock enabled - normal idle behavior
[11:50:06] [QUERY] đ Creating query connection for iOS slave: iosILUIWU
[11:50:06] [DATA AUDIO] ========== setupWebRTC() START ==========
[11:50:06] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[11:50:06] [DATA AUDIO] Creating encoder/decoder factories...
[11:50:06] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[11:50:06] [CODEC] Viewer selected encoder: AV1 (best quality)
[11:50:06] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[11:50:06] [DATA AUDIO] â
Factory created
[11:50:06] [DATA AUDIO] RTCAudioSession locked
[11:50:06] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[11:50:06] [DATA AUDIO] RTCAudioSession unlocked
[11:50:06] [DATA AUDIO] Setting AVAudioSession to .playback for data channel with mixWithOthers...
[11:50:06] [DATA AUDIO] â
AVAudioSession set to .playback with .mixWithOthers
[11:50:06] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[11:50:06] [WS] Opening session at ws://crivello.dyndns.org:8081/
[11:50:06] [QUERY] â
tempQueryConnection created for iosILUIWU
[11:50:06] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[11:50:06] [EMOJI] â
Loaded 451 emoji-to-GIF mappings
[11:50:06] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[11:50:06] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[11:50:06] [SUMMARY] Already triggered summary today (2025-12-09)
[11:50:06] Did transition
[11:50:06] [USER] Registering user: EDAD55A1-003F-415D-AA60-672B34B504FE, name: Esra
[11:50:06] [CHUNK] Merged 392 reactions synchronously
[11:50:06] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[11:50:06] [MIGRATION] No messages need sender_name backfill
[11:50:06] [GALLERY_DB] Raw datesent for msg 4410: '2025-12-09 08:45:50'
[11:50:06] [GALLERY_DB] Raw datesent for msg 4380: '2025-12-09 07:02:05'
[11:50:06] [GALLERY_DB] Raw datesent for msg 4372: '2025-12-09 06:57:18'
[11:50:06] [GALLERY_DB] â
Loaded 213 media messages
[11:50:06] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4413
[11:50:06] [GALLERY] Filtered 213 -> 196 (only with local thumbnails)
[11:50:06] [GALLERY] First 5 after sort (newest first):
[11:50:06] [GALLERY] 0: id=4410, date=2025-12-09 08:45:50, file=bde3e0234a3bef24.png
[11:50:06] [GALLERY] 1: id=4380, date=2025-12-09 07:02:05, file=ff9fcc8b0813673d.jpg
[11:50:06] [GALLERY] 2: id=4372, date=2025-12-09 06:57:18, file=aea059955a8438ab.jpg
[11:50:06] [GALLERY] 3: id=4363, date=2025-12-09 06:51:54, file=007ff2e34cb86b32.heic
[11:50:06] [GALLERY] 4: id=4362, date=2025-12-09 06:51:36, file=44da4cd82feaea76.jpg
[11:50:06] [CELL_UPLOAD] configure: msgId=4410, file=bde3e0234a3bef24.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[11:50:06] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[11:50:06] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=bde3e0234a3bef24.png, overlayExists=true
[11:50:06] [SERVER] Starting reconnect polling (5s interval)
[11:50:06] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[11:50:06] [ICONS] Offset applied: -14.6
[11:50:06] [ICONS] New left margin: 11.2, New right margin: 11.3
[11:50:06] [PRELOAD] Fetched 3301 messages
[11:50:06] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[11:50:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:50:06] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[11:50:06] Token POST â https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[11:50:06] [ICONS] Chat center: (31.2, 87.0)
[11:50:06] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[11:50:06] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[11:50:06] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[11:50:06] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[11:50:06] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[11:50:06] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[11:50:06] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[11:50:06] [ICONS] Screen width: 440.0
[11:50:07] [PRELOAD] ⥠Cached 3301 messages for instant display
[11:50:07] [USER] â
User registered successfully
[11:50:07] [USER] User registration successful
[11:50:07] new_session POST ok: token len=157
[11:50:07] HELLO â sent (fetched token, role=query)
[11:50:07] [INCREMENTAL_SYNC] â
No new messages
[11:50:07] [PURGE] â ī¸ Media cache purge DISABLED for debugging
[11:50:07] [UPLOAD_RECOVERY] Checking for missing uploads...
[11:50:07] [UPLOAD_RECOVERY] Checking 20 media files on server...
[11:50:07] [SIG] hello_ok received for query connection - ready to query agents
[11:50:07] [SIG] get_agents request sent for sessionId=ILUIWU
[11:50:07] [SIG] get_agents request sent for sessionId=iosILUIWU
[11:50:07] [SERVER] Stopped reconnect polling
[11:50:07] [MENU] đ dismissAnyExistingMenu called
[11:50:07] [MENU] âšī¸ No menu with tag 9999 found
[11:50:07] [MENU] â
dismissAnyExistingMenu completed
[11:50:07] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[11:50:07] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[11:50:07] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[11:50:07] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[11:50:07] [SEARCH] â
Setting isSearchBarVisible = true
[11:50:07] [SEARCH] chatSearchBar is nil? false
[11:50:07] [SEARCH] Applied theme: day
[11:50:07] [SEARCH] Adjusting table contentInset.top by +56.0
[11:50:07] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[11:50:07] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[11:50:07] [CHAT] top pull-to-refresh triggered on tab 0
[11:50:07] [CHANNEL_SWITCH] đĄ Fetching URL: https://crivello.dyndns.org:443/WebRTC/chat/chat_get_messages.php?viewer=1&session_id=ILUIWU&mark_read=0&viewer_id=EDAD55A1-003F-415D-AA60-672B34B504FE
[11:50:07] [SEARCH] Focusing search field
[11:50:07] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[11:50:07] [SEARCH] contentOffset.y=-189.66666666666666, topInset=116.0, pullDistance=73.66666666666666
[11:50:07] [SEARCH] threshold=80.0, isSearchBarVisible=true
[11:50:07] [SEARCH] topRefresh.isRefreshing=true
[11:50:07] [SEARCH] â Pull distance 73.66666666666666 < threshold 80.0
[11:50:07] [SIG] agents_list received: []
[11:50:07] [SIG] agents_list received: []
[11:50:08] [COMBINED_FETCH] Loaded 3301 read receipts, 392 messages with reactions
[11:50:08] [READBY_ENRICH] Enriched 36 messages with readBy data
[11:50:08] [PUSH] Silent push received
[11:50:08] [PUSH_EMBED] No embedded message_data in notification
[11:50:08] [PUSH] No embedded data, pre-loading messages from server
[11:50:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:50:08] [MENU] đ dismissAnyExistingMenu called
[11:50:08] [MENU] âšī¸ No menu with tag 9999 found
[11:50:08] [MENU] â
dismissAnyExistingMenu completed
[11:50:08] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[11:50:08] [SEARCH] đŊ Hiding search bar (user started scrolling)
[11:50:08] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[11:50:08] [SEARCH] â
Setting isSearchBarVisible = false
[11:50:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=bde3e0234a3bef24.png, overlayExists=true
[11:50:08] [CELL_UPLOAD] configure: msgId=4410, file=bde3e0234a3bef24.png, senderId=EDAD55A1-003F-415D-AA60-672B34B504FE, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=true, hasFilename=true, uploadStatus=0
[11:50:08] [CELL_UPLOAD] â no active progress, using msg.uploadStatus=0 â complete
[11:50:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=bde3e0234a3bef24.png, overlayExists=true
[11:50:08] [SEARCH] Adjusting table contentInset.top by -56.0
[11:50:08] [PUSH] Silent push received
[11:50:08] [PUSH_EMBED] No embedded message_data in notification
[11:50:08] [PUSH] No embedded data, pre-loading messages from server
[11:50:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:50:08] [CLIENT_SIG] Event received: type=3 messageId=4413
[11:50:08] [WS_EVENT] Received event: type=3, messageId=4413
[11:50:08] [WS_EVENT] Read receipt for message 4413 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:08] [PUSH] Silent push received
[11:50:08] [PUSH_EMBED] No embedded message_data in notification
[11:50:08] [PUSH] No embedded data, pre-loading messages from server
[11:50:08] [PUSH_PRELOAD] Fetching messages for instant display cache
[11:50:08] [UPLOAD_RECOVERY] â Missing on server, local exists: c8f0aac386a60643.jpg
[11:50:08] [CLIENT_SIG] Event received: type=3 messageId=4411
[11:50:08] [WS_EVENT] Received event: type=3, messageId=4411
[11:50:08] [WS_EVENT] Read receipt for message 4411 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:09] [CLIENT_SIG] Event received: type=3 messageId=4412
[11:50:09] [WS_EVENT] Received event: type=3, messageId=4412
[11:50:09] [WS_EVENT] Read receipt for message 4412 by Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[11:50:09] [UPLOAD_RECOVERY] â Missing on server, local exists: fb94b5fb89c4a48d.mov
[11:50:09] [UPLOAD_RECOVERY] â Missing on server, local exists: 65b3c13d384997a5.mov
[11:50:09] [UPLOAD_RECOVERY] đ Re-uploading 3 missing files...
[11:50:09] [UPLOAD_QUEUE] â ī¸ Duplicate prevented: c8f0aac386a60643.jpg already in queue (id=537, status=uploading)
[11:50:09] [UPLOAD_RECOVERY] â
Re-uploaded: c8f0aac386a60643.jpg
[11:50:09] [UPLOAD_RECOVERY] âī¸ Skipping large file (1209.2 MB): fb94b5fb89c4a48d.mov
[11:50:09] [UPLOAD_RECOVERY] âī¸ Skipping large file (915.4 MB): 65b3c13d384997a5.mov
[11:50:09] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_c8f0aac386a60643.jpg
[11:50:09] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_fb94b5fb89c4a48d.jpg
[11:50:09] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_65b3c13d384997a5.jpg
[11:50:10] [PUSH_PRELOAD] Fetched 3301 messages - caching for instant display
[11:50:10] [PUSH_PRELOAD] ⥠Pre-cached 3301 messages for instant display
[11:50:10] [PUSH_PRELOAD] â
Pre-load complete with thumbnails
[11:50:10] [PUSH] handlePollEventsNotification userInfo: [AnyHashable("session_id"): ILUIWU, AnyHashable("aps"): {
"content-available" = 1;
}, AnyHashable("operation_type"): 3, AnyHashable("message_id"): 4411]
[11:50:10] [PUSH] Parsed message_id: 4411
[11:50:10] [PUSH] Parsed operation_type: 3
[11:50:10] [PUSH] Taking direct action: opType=3, messageId=4411
[11:50:10] [PUSH] TakeActionFromPush called: OperationType=3, MessageIds=4411
[11:50:11] [PUSH_PRELOAD] Fetched 3301 messages - caching for instant display