From bfafc8a4a5e48cc760923f43ceb0ff5cff7c6ec2 Mon Sep 17 00:00:00 2001 From: Ben Date: Sun, 8 Mar 2026 01:28:08 +0000 Subject: [PATCH] Reduce live feed client retention --- frontend/src/App.tsx | 2 +- frontend/src/hooks/useNodes.ts | 2 +- frontend/src/hooks/usePacketPathOverlay.ts | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 2895948..d52c91d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -108,7 +108,7 @@ export const App: React.FC = () => { const syncRecentPackets = async () => { try { const response = await fetch( - uncachedEndpoint(withScopeParams('/api/packets/recent?limit=40', { network: networkFilter, observer: observerFilter })), + uncachedEndpoint(withScopeParams('/api/packets/recent?limit=12', { network: networkFilter, observer: observerFilter })), { cache: 'no-store' }, ); if (!response.ok) return; diff --git a/frontend/src/hooks/useNodes.ts b/frontend/src/hooks/useNodes.ts index 2c0ff23..99922ae 100644 --- a/frontend/src/hooks/useNodes.ts +++ b/frontend/src/hooks/useNodes.ts @@ -57,7 +57,7 @@ export interface PacketArc { packetHash: string; } -const FEED_MAX_PACKETS = 120; +const FEED_MAX_PACKETS = 12; function extractPacketSummary(payload?: Record): string | undefined { if (!payload) return undefined; diff --git a/frontend/src/hooks/usePacketPathOverlay.ts b/frontend/src/hooks/usePacketPathOverlay.ts index e447184..195be37 100644 --- a/frontend/src/hooks/usePacketPathOverlay.ts +++ b/frontend/src/hooks/usePacketPathOverlay.ts @@ -84,6 +84,7 @@ export function usePacketPathOverlay({ const [betaPermutationCount, setBetaPermutationCount] = useState(null); const [betaRemainingHops, setBetaRemainingHops] = useState(null); const [pinnedPacketId, setPinnedPacketId] = useState(null); + const [pinnedPacketSnapshot, setPinnedPacketSnapshot] = useState(null); const [pathOpacity, setPathOpacity] = useState(0.75); const pinnedTimerRef = useRef | null>(null); @@ -364,6 +365,7 @@ export function usePacketPathOverlay({ const handlePacketPin = useCallback((packet: AggregatedPacket) => { if (pinnedPacketId === packet.id) { setPinnedPacketId(null); + setPinnedPacketSnapshot(null); pinnedOverlayKeyRef.current = ''; if (pinnedTimerRef.current) { clearTimeout(pinnedTimerRef.current); @@ -382,6 +384,7 @@ export function usePacketPathOverlay({ setPathOpacity(0.75); setPinnedPacketId(packet.id); + setPinnedPacketSnapshot(packet); pinnedTimerRef.current = setTimeout(() => { const FADE_MS = 1_000; @@ -395,6 +398,7 @@ export function usePacketPathOverlay({ pathFadeRef.current = null; clearPathState(); setPinnedPacketId(null); + setPinnedPacketSnapshot(null); pinnedOverlayKeyRef.current = ''; pinnedTimerRef.current = null; } @@ -409,7 +413,7 @@ export function usePacketPathOverlay({ return; } - const pinnedPacket = packets.find((packet) => packet.id === pinnedPacketId); + const pinnedPacket = packets.find((packet) => packet.id === pinnedPacketId) ?? pinnedPacketSnapshot; if (!pinnedPacket) return; const observerIds = packetObserverIds(pinnedPacket); @@ -457,6 +461,7 @@ export function usePacketPathOverlay({ }, [ pinnedPacketId, packets, + pinnedPacketSnapshot, filters.packetPaths, filters.betaPaths, network,