From 90f25420b226952d366f48cef6b252ee0fa0097b Mon Sep 17 00:00:00 2001 From: Gigi Date: Wed, 22 Oct 2025 23:21:11 +0200 Subject: [PATCH] debug(reading): add ISO timestamps to all position logs Makes it easy to see exact timing of saves and identify if debouncing is working correctly. --- src/components/ContentPanel.tsx | 6 +++--- src/hooks/useReadingPosition.ts | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/ContentPanel.tsx b/src/components/ContentPanel.tsx index 15418a9f..cc5cec04 100644 --- a/src/components/ContentPanel.tsx +++ b/src/components/ContentPanel.tsx @@ -179,7 +179,7 @@ const ContentPanel: React.FC = ({ const scrollTop = window.pageYOffset || document.documentElement.scrollTop try { - console.log('[reading-position] 🚀 Publishing position', Math.round(position * 100) + '% to relays...') + console.log(`[reading-position] [${new Date().toISOString()}] 🚀 Publishing position ${Math.round(position * 100)}% to relays...`) const factory = new EventFactory({ signer: activeAccount }) await saveReadingPosition( relayPool, @@ -192,9 +192,9 @@ const ContentPanel: React.FC = ({ scrollTop } ) - console.log('[reading-position] ✅ Position published successfully') + console.log(`[reading-position] [${new Date().toISOString()}] ✅ Position published successfully`) } catch (error) { - console.error('[reading-position] ❌ Failed to save reading position:', error) + console.error(`[reading-position] [${new Date().toISOString()}] ❌ Failed to save reading position:`, error) } }, [activeAccount, relayPool, eventStore, articleIdentifier, settings?.syncReadingPosition, html, markdown]) diff --git a/src/hooks/useReadingPosition.ts b/src/hooks/useReadingPosition.ts index 8d2cee60..81b5fd6a 100644 --- a/src/hooks/useReadingPosition.ts +++ b/src/hooks/useReadingPosition.ts @@ -34,7 +34,7 @@ export const useReadingPosition = ({ const suppressSavesFor = useCallback((ms: number) => { const until = Date.now() + ms suppressUntilRef.current = until - console.log('[reading-position] 🛡️ Suppressing saves for', ms, 'ms until', new Date(until).toISOString()) + console.log(`[reading-position] [${new Date().toISOString()}] 🛡️ Suppressing saves for ${ms}ms until ${new Date(until).toISOString()}`) }, []) // Debounced save function - simple 2s debounce @@ -49,7 +49,7 @@ export const useReadingPosition = ({ clearTimeout(saveTimerRef.current) saveTimerRef.current = null } - console.log('[reading-position] 💾 Instant save at 100% completion') + console.log(`[reading-position] [${new Date().toISOString()}] 💾 Instant save at 100% completion`) lastSavedPosition.current = 1 hasSavedOnce.current = true lastSavedAtRef.current = Date.now() @@ -71,9 +71,9 @@ export const useReadingPosition = ({ } const DEBOUNCE_MS = 3000 // Save max every 3 seconds - console.log('[reading-position] ⏱️ Debouncing save for', DEBOUNCE_MS, 'ms (pos:', Math.round(currentPosition * 100) + '%)') + console.log(`[reading-position] [${new Date().toISOString()}] ⏱️ Debouncing save for ${DEBOUNCE_MS}ms (pos: ${Math.round(currentPosition * 100)}%)`) saveTimerRef.current = setTimeout(() => { - console.log('[reading-position] 💾 Auto-save at', Math.round(currentPosition * 100) + '%') + console.log(`[reading-position] [${new Date().toISOString()}] 💾 Auto-save at ${Math.round(currentPosition * 100)}%`) lastSavedPosition.current = currentPosition hasSavedOnce.current = true lastSavedAtRef.current = Date.now() @@ -89,7 +89,7 @@ export const useReadingPosition = ({ clearTimeout(saveTimerRef.current) saveTimerRef.current = null } - console.log('[reading-position] 💾 saveNow() called at', Math.round(position * 100) + '%') + console.log(`[reading-position] [${new Date().toISOString()}] 💾 saveNow() called at ${Math.round(position * 100)}%`) lastSavedPosition.current = position hasSavedOnce.current = true lastSavedAtRef.current = Date.now() @@ -126,7 +126,7 @@ export const useReadingPosition = ({ scheduleSave(clampedProgress) } else { const remainingMs = suppressUntilRef.current - Date.now() - console.log('[reading-position] 🛡️ Save suppressed (', remainingMs, 'ms remaining) at', Math.round(clampedProgress * 100) + '%') + console.log(`[reading-position] [${new Date().toISOString()}] 🛡️ Save suppressed (${remainingMs}ms remaining) at ${Math.round(clampedProgress * 100)}%`) } // Completion detection with 2s hold at 100%