@@ -2,27 +2,28 @@ import { createSignal, For, Show, onCleanup, onMount } from "solid-js";
22import type { DbCacheEvent , SessionCacheStats } from "../../lib/types" ;
33import { formatDateTime , getCacheEventsFromDb , getSessions , truncate } from "../../lib/api" ;
44
5+ // Module-level cache — survives component unmount/remount (page navigation)
6+ let cachedEvents : DbCacheEvent [ ] = [ ] ;
7+ let cachedWatermark : number | null = null ;
8+
59export default function CacheDiagnostics ( ) {
6- const [ events , setEvents ] = createSignal < DbCacheEvent [ ] > ( [ ] ) ;
10+ const [ events , setEvents ] = createSignal < DbCacheEvent [ ] > ( cachedEvents ) ;
711 const [ sessionStats , setSessionStats ] = createSignal < SessionCacheStats [ ] > ( [ ] ) ;
812 const [ sessionNames , setSessionNames ] = createSignal < Record < string , string > > ( { } ) ;
9- const [ loading , setLoading ] = createSignal ( true ) ;
13+ const [ loading , setLoading ] = createSignal ( cachedEvents . length === 0 ) ;
1014 const [ paused , setPaused ] = createSignal ( false ) ;
1115 const [ selectedSession , setSelectedSession ] = createSignal < string | null > ( null ) ;
1216 const [ hideSubagents , setHideSubagents ] = createSignal ( true ) ;
1317 const [ subagentIds , setSubagentIds ] = createSignal < Set < string > > ( new Set ( ) ) ;
1418
15- // Track watermark for incremental fetching — only fetch new events after initial load
16- let watermark : number | null = null ;
17-
1819 const fetchData = async ( ) => {
1920 try {
2021 const [ newEvents , sessions ] = await Promise . all ( [
21- getCacheEventsFromDb ( 200 , watermark ) ,
22+ getCacheEventsFromDb ( 200 , cachedWatermark ) ,
2223 getSessions ( ) ,
2324 ] ) ;
2425
25- if ( watermark === null ) {
26+ if ( cachedWatermark === null ) {
2627 // Initial load — use full result
2728 setEvents ( newEvents ) ;
2829 } else if ( newEvents . length > 0 ) {
@@ -31,10 +32,11 @@ export default function CacheDiagnostics() {
3132 setEvents ( prev => [ ...prev , ...newEvents ] . slice ( - 200 ) ) ;
3233 }
3334
34- // Update watermark to latest timestamp
35+ // Sync to module-level cache and update watermark
3536 const allEvents = events ( ) ;
37+ cachedEvents = allEvents ;
3638 if ( allEvents . length > 0 ) {
37- watermark = Math . max ( ...allEvents . map ( e => e . timestamp ) ) ;
39+ cachedWatermark = Math . max ( ...allEvents . map ( e => e . timestamp ) ) ;
3840 }
3941
4042 // Compute session stats client-side from cached events (no extra DB query)
0 commit comments