diff --git a/src/components/Debug.tsx b/src/components/Debug.tsx index 8d268524..d744740f 100644 --- a/src/components/Debug.tsx +++ b/src/components/Debug.tsx @@ -76,6 +76,7 @@ const Debug: React.FC = ({ const [bookmarkStats, setBookmarkStats] = useState<{ public: number; private: number } | null>(null) const [tLoadBookmarks, setTLoadBookmarks] = useState(null) const [tDecryptBookmarks, setTDecryptBookmarks] = useState(null) + const [tFirstBookmark, setTFirstBookmark] = useState(null) // Individual event decryption results const [decryptedEvents, setDecryptedEvents] = useState>(new Map()) @@ -254,10 +255,12 @@ const Debug: React.FC = ({ setBookmarkStats(null) setBookmarkEvents([]) // Clear existing events setDecryptedEvents(new Map()) + setTFirstBookmark(null) DebugBus.info('debug', 'Loading bookmark events...') // Start timing const start = performance.now() + let firstEventTime: number | null = null setLiveTiming(prev => ({ ...prev, loadBookmarks: { startTime: start } })) // Import controller at runtime to avoid circular dependencies @@ -265,6 +268,12 @@ const Debug: React.FC = ({ // Subscribe to raw events for Debug UI display const unsubscribeRaw = bookmarkController.onRawEvent((evt) => { + // Track time to first event + if (firstEventTime === null) { + firstEventTime = performance.now() - start + setTFirstBookmark(Math.round(firstEventTime)) + } + // Add event immediately with live deduplication setBookmarkEvents(prev => { const key = getEventKey(evt) @@ -322,6 +331,7 @@ const Debug: React.FC = ({ setBookmarkStats(null) setTLoadBookmarks(null) setTDecryptBookmarks(null) + setTFirstBookmark(null) setDecryptedEvents(new Map()) DebugBus.info('debug', 'Cleared bookmark data') } @@ -690,7 +700,8 @@ const Debug: React.FC = ({
- + +