=== Eye Viewer Log Cleared at 2025-12-08 12:57:53 +0000 ===
[15:57:53] [CRASH] No crash detected - clearing logs
[15:57:53] [FONT] Roboto fonts loaded successfully: Roboto-Regular
[15:57:53] [FONT] ChatFont.regular(18) returns: Roboto-Regular, family: Roboto
[15:57:53] [GIPHY] SDK not available - using REST API fallback
[15:57:53] [BACKGROUND] Background fetch enabled
[15:57:53] [PRELOAD] ⥠Starting message pre-load during authentication...
[15:57:53] [SECURITY] Initial launch - timeout exceeded (1541.6359078884125s > 0.0s)
[15:57:53] [AUTH] Starting PIN authentication
[15:57:53] [CLIENT_SIG] Reconnecting on foreground for session: ILUIWU
[15:57:53] [CLIENT_SIG] Connecting to session ILUIWU as Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[15:57:53] [LIFECYCLE] ViewController deallocated
[15:57:53] [PUSH] APNs token: ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f
[15:57:53] [CLIENT_SIG] WebSocket opened
[15:57:53] [CLIENT_SIG] HELLO sent as client for session ILUIWU
[15:57:53] [CLIENT_SIG] Connected! clientId=j_OHAgCsz-4bvtmI
[15:57:53] [SECURITY] sceneDidBecomeActive - isAuthenticated=false, didEnterBackground=false
[15:57:53] [SECURITY] â ī¸ Skipping timeout check - conditions not met
[15:57:53] [PUSH_DEBUG] đĸ App became ACTIVE - resetting badges and triggering pollEventsNow
[15:57:53] [CLIENT_SIG] Received 1 clients for session 'ILUIWU' (my session: 'ILUIWU')
[15:57:53] [CLIENT_SIG] - Esra (EDAD55A1-003F-415D-AA60-672B34B504FE)
[15:57:53] [PUSH] register_device.php HTTP 200: {"status":"ok","session_id":"ILUIWU","token":"ea74d1b23419aba9c7f42f122ceaac51082c3477711ef6cb1bbd1988f213ab7f","role":"viewer","muted":0,"removed_from_other_channels":0}
[15:57:55] [PRELOAD] Fetched 3156 messages
[15:57:56] [PRELOAD] ⥠Cached 3156 messages for instant display
[15:57:59] [PIN_AUTH] Correct PIN
[15:57:59] [SECURITY] Restored real session: ILUIWU
[15:57:59] [SECURITY] Restored real session: ILUIWU
[15:57:59] [SECURITY] Saved real session: ILUIWU
[15:57:59] [SCENE] Launched directly to chat view with sessionId: ILUIWU
[15:57:59] [AUDIO] â
Chat mode - audio will be managed by WebRTCViewer (no microphone)
[15:57:59] Documents Directory: /var/mobile/Containers/Data/Application/0F42C8E4-5862-497D-ACF7-DEAFC7420CC9/Documents
[15:57:59] [THEME] Applying current theme
[15:57:59] [CHAT] Applied day theme (mode: day)
[15:57:59] [SECURITY] Saved real session: ILUIWU
[15:57:59] [CLIENT_SIG] Setting up client signaling for session: ILUIWU
[15:57:59] [CLIENT_SIG] Already connected/connecting to session ILUIWU
[15:57:59] [SUMMARY] Already triggered summary today (2025-12-08)
[15:57:59] Did transition
[15:57:59] [MODE] đ updateModeUI called - currentTabIndex=0, sessionId=ILUIWU
[15:57:59] [VIEWER] Screen lock enabled - normal idle behavior
[15:57:59] [QUERY] đ Creating query connection for iOS slave: iosILUIWU
[15:57:59] [DATA AUDIO] ========== setupWebRTC() START ==========
[15:57:59] [DATA AUDIO] Using data channel for audio - bypassing WebRTC audio device
[15:57:59] [DATA AUDIO] Creating encoder/decoder factories...
[15:57:59] [CODEC] Viewer - Available video codecs: H264, H264, VP8, VP9, AV1
[15:57:59] [CODEC] Viewer selected encoder: AV1 (best quality)
[15:57:59] [DATA AUDIO] Creating RTCPeerConnectionFactory...
[15:57:59] [DATA AUDIO] â
Factory created
[15:57:59] [DATA AUDIO] RTCAudioSession locked
[15:57:59] [DATA AUDIO] Set useManualAudio=true, isAudioEnabled=false
[15:57:59] [DATA AUDIO] RTCAudioSession unlocked
[15:57:59] [DATA AUDIO] Setting AVAudioSession to .playback for data channel with mixWithOthers...
[15:57:59] [DATA AUDIO] â
AVAudioSession set to .playback with .mixWithOthers
[15:57:59] [WS] Creating new WebSocket - isQueryOnly=false, connectionStr=iosILUIWU
[15:57:59] [WS] Opening session at ws://crivello.dyndns.org:8081/
[15:57:59] [QUERY] â
tempQueryConnection created for iosILUIWU
[15:57:59] [VIEWER_INIT] Already have 50 messages - just filtering for tab
[15:57:59] [EMOJI] â
Loaded 451 emoji-to-GIF mappings
[15:57:59] [EVENT_POLL] Event polling disabled - using WebSocket events instead
[15:57:59] [ORIENTATION] Updated pagingScrollView height to 247.5 for width 440.0
[15:57:59] [SUMMARY] Already triggered summary today (2025-12-08)
[15:57:59] Did transition
[15:57:59] [USER] Registering user: EDAD55A1-003F-415D-AA60-672B34B504FE, name: Esra
[15:57:59] [CHUNK] Merged 379 reactions synchronously
[15:57:59] [GALLERY_DB] Loading ALL media messages for session: ILUIWU
[15:57:59] [MIGRATION] No messages need sender_name backfill
[15:57:59] [GALLERY_DB] Raw datesent for msg 4253: '2025-12-08 11:59:28'
[15:57:59] [GALLERY_DB] Raw datesent for msg 4227: '2025-12-08 08:35:52'
[15:57:59] [GALLERY_DB] Raw datesent for msg 4225: '2025-12-08 06:51:17'
[15:57:59] [GALLERY_DB] â
Loaded 205 media messages
[15:57:59] [INCREMENTAL_SYNC] đĄ Fetching messages since ID 4258
[15:57:59] [GALLERY] Filtered 205 -> 188 (only with local thumbnails)
[15:57:59] [GALLERY] First 5 after sort (newest first):
[15:57:59] [GALLERY] 0: id=4253, date=2025-12-08 11:59:28, file=10dabda8d04dc725.jpg
[15:57:59] [GALLERY] 1: id=4227, date=2025-12-08 08:35:52, file=5abfa51ac84672ca.jpg
[15:57:59] [GALLERY] 2: id=4225, date=2025-12-08 06:51:17, file=a59f6ea5b913297d.jpg
[15:57:59] [GALLERY] 3: id=4187, date=2025-12-07 14:31:41, file=8e8e62ba6f7fd7ed.jpg
[15:57:59] [GALLERY] 4: id=4140, date=2025-12-07 13:49:09, file=9dca2c72076394b7.jpg
[15:57:59] [CELL_UPLOAD] configure: msgId=4253, file=10dabda8d04dc725.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=false, hasFilename=true, uploadStatus=0
[15:57:59] [CELL_UPLOAD] â not my message, setting complete
[15:57:59] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:57:59] [SERVER] Starting reconnect polling (5s interval)
[15:57:59] [ICONS] Screen width: 440.0, Tab spacing: 75.5
[15:57:59] [ICONS] Offset applied: -14.6
[15:57:59] [ICONS] New left margin: 11.2, New right margin: 11.3
[15:57:59] [ICONS] Chat center: (31.2, 87.0)
[15:57:59] [ICONS] Gallery center: (106.7, 87.0), deltaX: 75.5
[15:57:59] [ICONS] Camera center: (182.2, 87.0), deltaX: 75.5
[15:57:59] [ICONS] Settings center: (257.7, 87.0), deltaX: 75.5
[15:57:59] [ICONS] Lock centerX: 333.2, deltaX from Settings: 75.5
[15:57:59] [ICONS] Bell centerX: 408.7, deltaX from Lock: 75.5
[15:57:59] [ICONS] LEFT MARGIN (screen left to Chat left): 11.2
[15:57:59] [ICONS] RIGHT MARGIN (Bell right to screen right): 11.3
[15:57:59] [ICONS] Screen width: 440.0
[15:58:00] [WS] WebSocket ACTUALLY OPENED - isQueryOnly=true, connectionStr=iosILUIWU
[15:58:00] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[15:58:00] Trying API base: https://crivello.dyndns.org:443/WebRTC/public/
[15:58:00] Token POST â https://crivello.dyndns.org:443/WebRTC/public/new_session.php?sid=iosILUIWU
[15:58:00] [USER] â
User registered successfully
[15:58:00] [USER] User registration successful
[15:58:00] [INCREMENTAL_SYNC] â
No new messages
[15:58:00] [PURGE] â ī¸ Media cache purge DISABLED for debugging
[15:58:00] [UPLOAD_RECOVERY] Checking for missing uploads...
[15:58:00] [UPLOAD_RECOVERY] Checking 13 media files on server...
[15:58:00] [CHUNKED_RESUME] Found resumable upload: 65b3c13d384997a5.mov at chunk 2/10
[15:58:00] [CHUNKED_RESUME] Found resumable upload: fb94b5fb89c4a48d.mov at chunk 2/13
[15:58:00] [CHUNKED_RESUME] Found resumable upload: 65b3c13d384997a5.mov at chunk 2/10
[15:58:00] [CHUNKED_RESUME] Found resumable upload: fb94b5fb89c4a48d.mov at chunk 2/13
[15:58:00] [CHUNKED_RESUME] Found resumable upload: 65b3c13d384997a5.mov at chunk 2/10
[15:58:00] [CHUNKED_RESUME] Found resumable upload: fb94b5fb89c4a48d.mov at chunk 2/13
[15:58:00] [UPLOAD_QUEUE] Found 22 pending uploads to resume
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=490, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=491, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=492, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=493, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=494, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=495, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=499, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=498, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=500, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=501, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=502, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=503, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=504, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=505, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=506, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=507, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=508, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=509, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=510, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=511, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=512, marking as failed
[15:58:00] [UPLOAD_QUEUE] File not found for upload id=513, marking as failed
[15:58:00] new_session POST ok: token len=157
[15:58:00] HELLO â sent (fetched token, role=query)
[15:58:00] [SIG] hello_ok received for query connection - ready to query agents
[15:58:00] [SIG] get_agents request sent for sessionId=ILUIWU
[15:58:00] [SIG] get_agents request sent for sessionId=iosILUIWU
[15:58:00] [SERVER] Stopped reconnect polling
[15:58:01] [SIG] agents_list received: []
[15:58:01] [UPLOAD_RECOVERY] â Missing on server, local exists: 65b3c13d384997a5.mov
[15:58:01] [UPLOAD_RECOVERY] â Missing on server, local exists: fb94b5fb89c4a48d.mov
[15:58:01] [SIG] agents_list received: []
[15:58:01] [UPLOAD_RECOVERY] đ Re-uploading 2 missing files...
[15:58:01] [UPLOAD_QUEUE] Enqueued upload id=514 for 65b3c13d384997a5.mov
[15:58:01] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[15:58:01] [UPLOAD_DEBUG] Item ID: 514
[15:58:01] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/0F42C8E4-5862-497D-ACF7-DEAFC7420CC9/Documents/MediaCache/65b3c13d384997a5.mov
[15:58:01] [UPLOAD_DEBUG] Random filename: 65b3c13d384997a5.mov
[15:58:01] [UPLOAD_DEBUG] Session ID: ILUIWU
[15:58:01] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[15:58:01] [UPLOAD_DEBUG] Retry count: 0
[15:58:01] [UPLOAD_DEBUG] File exists: true
[15:58:01] [UPLOAD_STATUS] Updated status=2 for file: 65b3c13d384997a5.mov
[15:58:01] [UPLOAD_DEBUG] File size: 959895378 bytes (915.4 MB)
[15:58:01] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[15:58:01] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[15:58:01] [UPLOAD_DEBUG] --- startChunkedUpload ---
[15:58:01] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[15:58:01] [UPLOAD_DEBUG] File size: 959895378 bytes (915.4 MB)
[15:58:01] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[15:58:01] [UPLOAD_DEBUG] Total chunks: 10
[15:58:01] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[15:58:01] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[15:58:01] [UPLOAD_QUEUE] Enqueued upload id=515 for fb94b5fb89c4a48d.mov
[15:58:01] [UPLOAD_DEBUG] ========== START UPLOAD ==========
[15:58:01] [UPLOAD_DEBUG] Item ID: 515
[15:58:01] [UPLOAD_DEBUG] Local URL: /var/mobile/Containers/Data/Application/0F42C8E4-5862-497D-ACF7-DEAFC7420CC9/Documents/MediaCache/fb94b5fb89c4a48d.mov
[15:58:01] [UPLOAD_DEBUG] Random filename: fb94b5fb89c4a48d.mov
[15:58:01] [UPLOAD_DEBUG] Session ID: ILUIWU
[15:58:01] [UPLOAD_DEBUG] API Base: https://crivello.dyndns.org:443/WebRTC/chat/
[15:58:01] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_fb94b5fb89c4a48d.jpg
[15:58:01] [UPLOAD_DEBUG] Retry count: 0
[15:58:01] [UPLOAD_DEBUG] File exists: true
[15:58:01] [UPLOAD_STATUS] Updated status=2 for file: fb94b5fb89c4a48d.mov
[15:58:01] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[15:58:01] [UPLOAD_DEBUG] Chunked threshold: 104857600 bytes (100 MB)
[15:58:01] [UPLOAD_DEBUG] â Using CHUNKED upload (file > threshold)
[15:58:01] [UPLOAD_DEBUG] --- startChunkedUpload ---
[15:58:01] [UPLOAD_DEBUG] Chunked upload URL: https://crivello.dyndns.org:443/WebRTC/chat/upload_chunked.php
[15:58:01] [UPLOAD_DEBUG] File size: 1267972117 bytes (1209.2 MB)
[15:58:01] [UPLOAD_DEBUG] Chunk size: 104857600 bytes (100 MB)
[15:58:01] [UPLOAD_DEBUG] Total chunks: 13
[15:58:01] [UPLOAD_DEBUG] Updated DB status to 'uploading_chunked'
[15:58:01] [UPLOAD_DEBUG] Starting chunk upload sequence from chunk 0...
[15:58:01] [UPLOAD_RECOVERY] âī¸ Thumbnail already on server: t_65b3c13d384997a5.jpg
[15:58:01] [MENU] đ dismissAnyExistingMenu called
[15:58:01] [MENU] âšī¸ No menu with tag 9999 found
[15:58:01] [MENU] â
dismissAnyExistingMenu completed
[15:58:01] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=false, tab=0
[15:58:01] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[15:58:01] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[15:58:01] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[15:58:01] [SEARCH] â
Setting isSearchBarVisible = true
[15:58:01] [SEARCH] chatSearchBar is nil? false
[15:58:01] [SEARCH] Applied theme: day
[15:58:01] [SEARCH] Adjusting table contentInset.top by +56.0
[15:58:01] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[15:58:01] [CHUNKED_RESUME] Saved chunk info: totalChunks=10, fileSize=959895378
[15:58:01] [CHUNKED_RESUME] Saved chunk info: totalChunks=13, fileSize=1267972117
[15:58:01] [SEARCH] Focusing search field
[15:58:01] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[15:58:01] [SEARCH] contentOffset.y=-69.33333333333333, topInset=56.0, pullDistance=13.333333333333329
[15:58:01] [SEARCH] threshold=80.0, isSearchBarVisible=true
[15:58:01] [SEARCH] topRefresh.isRefreshing=false
[15:58:01] [SEARCH] â Pull distance 13.333333333333329 < threshold 80.0
[15:58:02] [SEARCH] Found 1543 messages matching 'h' in local DB
[15:58:02] [SEARCH] Found 1543 matches for 'h'
[15:58:03] [SEARCH] Found 650 messages matching 'he' in local DB
[15:58:03] [SEARCH] Found 650 matches for 'he'
[15:58:03] [SEARCH] Found 50 messages matching 'hel' in local DB
[15:58:03] [SEARCH] Found 50 matches for 'hel'
[15:58:03] [SEARCH] Found 43 messages matching 'hell' in local DB
[15:58:03] [SEARCH] Found 43 matches for 'hell'
[15:58:03] [COMBINED_FETCH] Loaded 3156 read receipts, 378 messages with reactions
[15:58:03] [READBY_ENRICH] Enriched 50 messages with readBy data
[15:58:03] [SEARCH] Found 43 messages matching 'hello' in local DB
[15:58:03] [SEARCH] Found 43 matches for 'hello'
[15:58:03] [SEARCH] Found 43 messages matching 'hell' in local DB
[15:58:03] [SEARCH] Found 43 matches for 'hell'
[15:58:03] [SEARCH] Found 50 messages matching 'hel' in local DB
[15:58:03] [SEARCH] Found 50 matches for 'hel'
[15:58:04] [SEARCH] Found 650 messages matching 'he' in local DB
[15:58:04] [SEARCH] Found 650 matches for 'he'
[15:58:04] [SEARCH] Found 1543 messages matching 'h' in local DB
[15:58:04] [SEARCH] Found 1543 matches for 'h'
[15:58:07] [REPLY_DEBUG] đ¤ didTapSend - Sending message WITHOUT reply
[15:58:07] [ANIMATION] đŦ Animating 1 new bubbles - scrolling to top to show them
[15:58:07] [REPLY_DEBUG] â cancelReply called - clearing messageToReplyTo
[15:58:07] [REPLY_DEBUG] â ī¸ sendMessage HTTP BODY - No reply message captured
[15:58:08] [MENU] đ dismissAnyExistingMenu called
[15:58:08] [MENU] âšī¸ No menu with tag 9999 found
[15:58:08] [MENU] â
dismissAnyExistingMenu completed
[15:58:08] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[15:58:08] [SEARCH] đŊ Hiding search bar (user started scrolling)
[15:58:08] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[15:58:08] [SEARCH] â
Setting isSearchBarVisible = false
[15:58:08] [SEARCH] Adjusting table contentInset.top by -56.0
[15:58:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:08] [CELL_UPLOAD] configure: msgId=4253, file=10dabda8d04dc725.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=false, hasFilename=true, uploadStatus=0
[15:58:08] [CELL_UPLOAD] â not my message, setting complete
[15:58:08] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:08] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=false
[15:58:08] [SEARCH] đ First pull on Tab 0 - showing search bar instead of refresh
[15:58:08] [SEARCH] showSearchBar() called - animated=true, isSearchBarVisible=false
[15:58:08] [SEARCH] â
Setting isSearchBarVisible = true
[15:58:08] [SEARCH] chatSearchBar is nil? false
[15:58:08] [SEARCH] Applied theme: day
[15:58:08] [SEARCH] Adjusting table contentInset.top by +56.0
[15:58:08] [SEARCH] Table contentInset.top: 0.0 -> 56.0
[15:58:08] [SEARCH] handleTopRefresh called - tab=0, isSearchBarVisible=true
[15:58:08] [CHAT] top pull-to-refresh triggered on tab 0
[15:58:08] [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
[15:58:08] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[15:58:08] [SEARCH] contentOffset.y=-111.0, topInset=116.0, pullDistance=-5.0
[15:58:08] [SEARCH] threshold=80.0, isSearchBarVisible=true
[15:58:08] [SEARCH] topRefresh.isRefreshing=true
[15:58:08] [SEARCH] â Pull distance -5.0 < threshold 80.0
[15:58:09] [SEARCH] Focusing search field
[15:58:10] [MENU] đ dismissAnyExistingMenu called
[15:58:10] [MENU] âšī¸ No menu with tag 9999 found
[15:58:10] [MENU] â
dismissAnyExistingMenu completed
[15:58:10] [SEARCH] scrollViewWillBeginDragging - isSearchBarVisible=true, tab=0
[15:58:10] [SEARCH] đŊ Hiding search bar (user started scrolling)
[15:58:10] [SEARCH] hideSearchBar() called - animated=true, isSearchBarVisible=true
[15:58:10] [SEARCH] â
Setting isSearchBarVisible = false
[15:58:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:10] [CELL_UPLOAD] configure: msgId=4253, file=10dabda8d04dc725.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=false, hasFilename=true, uploadStatus=0
[15:58:10] [CELL_UPLOAD] â not my message, setting complete
[15:58:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:10] [SEARCH] Adjusting table contentInset.top by -56.0
[15:58:10] [SEARCH] scrollViewDidEndDragging - scrollView=messagesTable, tab=0
[15:58:10] [SEARCH] contentOffset.y=-68.66666666666667, topInset=60.0, pullDistance=8.666666666666671
[15:58:10] [SEARCH] threshold=80.0, isSearchBarVisible=false
[15:58:10] [SEARCH] topRefresh.isRefreshing=true
[15:58:10] [SEARCH] â Pull distance 8.666666666666671 < threshold 80.0
[15:58:10] [CHAT] receive_message.php HTTP 200: {"ok":true,"message_id":4259,"session_id":"ILUIWU","message_type":0,"file_name":"","datesent_utc":"2025-12-08 12:58:08"}
[15:58:10] [CLIENT_SIG] Event received: type=0 messageId=4259
[15:58:10] [WS_EVENT] Received event: type=0, messageId=4259
[15:58:10] [WS_EVENT] New message notification - refreshing
[15:58:10] [CHAT] receive_message.php JSON: ["datesent_utc": 2025-12-08 12:58:08, "file_name": , "session_id": ILUIWU, "message_type": 0, "ok": 1, "message_id": 4259]
[15:58:10] ReloadData 9
[15:58:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:10] [CELL_UPLOAD] configure: msgId=4253, file=10dabda8d04dc725.jpg, senderId=3B8A4F00-5ABD-47E5-8C88-F15DA9EF83AF, myUserId=EDAD55A1-003F-415D-AA60-672B34B504FE, isMyMessage=false, hasFilename=true, uploadStatus=0
[15:58:10] [CELL_UPLOAD] â not my message, setting complete
[15:58:10] [CELL_UPLOAD] setUploadStatus(complete, progress=0.0) for file=10dabda8d04dc725.jpg, overlayExists=true
[15:58:12] [PENDING_UPLOAD] Found pending message: id=-3, file=, uploadStatus=0
[15:58:12] [PENDING_UPLOAD] Found pending message: id=-2, file=, uploadStatus=0
[15:58:12] [PENDING_UPLOAD] Found pending message: id=-5, file=, uploadStatus=0
[15:58:12] [PENDING_UPLOAD] Found pending message: id=-4, file=, uploadStatus=0
[15:58:12] [PENDING_UPLOAD] Found pending message: id=4104, file=65b3c13d384997a5.mov, uploadStatus=2
[15:58:12] [PENDING_UPLOAD] Found pending message: id=4103, file=fb94b5fb89c4a48d.mov, uploadStatus=2
[15:58:12] [PENDING_UPLOAD] Total pending upload messages: 6
[15:58:12] [PENDING_UPLOAD] Preserved 6 pending messages before server refresh
[15:58:12] [PENDING_UPLOAD] Reinserting 6 pending messages
[15:58:12] [PENDING_UPLOAD] â
Reinserted message -3
[15:58:12] [PENDING_UPLOAD] â
Reinserted message -2
[15:58:12] [PENDING_UPLOAD] â
Reinserted message -5
[15:58:12] [PENDING_UPLOAD] â
Reinserted message -4
[15:58:12] [PENDING_UPLOAD] â
Reinserted message 4104
[15:58:12] [PENDING_UPLOAD] â
Reinserted message 4103
[15:58:12] DOWNLOADIIING t_66e5f4c7c82fef18.jpg
[15:58:12] DOWNLOADIIING t_97828ef5de49a612.jpg
[15:58:12] [CHANNEL_SWITCH] đ About to set loaded messages. Count=3157
[15:58:12] [CHANNEL_SWITCH] đ Setting allMessagesWithReadBy = 3157 msgs
[15:58:12] [READBY_LOADED] msg 4259: readBy.count=0, readBy=[], isMyMsg=true
[15:58:12] [READBY_LOADED] msg 4258: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[15:58:12] [READBY_LOADED] msg 4257: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[15:58:12] [READBY_LOADED] msg 4256: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[15:58:12] [READBY_LOADED] msg 4255: readBy.count=1, readBy=["EDAD55A1-003F-415D-AA60-672B34B504FE"], isMyMsg=false
[15:58:12] [PENDING_UPLOAD] â
Merged pending message id=-3, file=
[15:58:12] [PENDING_UPLOAD] â
Merged pending message id=-2, file=
[15:58:12] [PENDING_UPLOAD] â
Merged pending message id=-5, file=
[15:58:12] [PENDING_UPLOAD] â
Merged pending message id=-4, file=
[15:58:12] [PENDING_UPLOAD] âī¸ Skipped pending message id=4104 - already exists in server data
[15:58:12] [PENDING_UPLOAD] âī¸ Skipped pending message id=4103 - already exists in server data
[15:58:12] [PENDING_UPLOAD] Final merged count: 3161 (server: 3157, kept pending: 4)
[15:58:12] [CHANNEL_SWITCH] đ chatRows.count = 3209
[15:58:12] ReloadData 15 (3161 messages loaded, 17 pending media)
[15:58:13] DOWNLOADIIING 1b1a78050ebe099b.jpg
[15:58:13] DOWNLOADIIING bae538c2a3076c11.heic
[15:58:13] DOWNLOADIIING ee42d57ffd8ab767.jpg
[15:58:13] DOWNLOADIIING 5cfd84d52271d308.heic
[15:58:13] DOWNLOADIIING 0f2dda66cccdeadf.heic
[15:58:13] DOWNLOADIIING 2a4c7380908d6595.jpg
[15:58:13] [PULL_REFRESH] Loaded 3161 messages (first page), displaying 3161 for tab 0, hasMore: true
[15:58:13] ReloadData 15 (pull-to-refresh completed)
[15:58:13] ReloadData 14 (all 17 media thumbnails loaded) - applying tab 0 filtering