e5a731eb29
Thumb and FileCard fetched their auth-gated thumbnail on mount, so a view that rendered many tiles at once — notably a duplicate cluster, which can hold hundreds of files — fired thousands of requests immediately and hung the tab. Gate each fetch behind an IntersectionObserver that loads only when the tile nears the viewport (200px rootMargin), then stops observing.