- LogoLoop.tsx: increase repeated icon sets from 2 to 4 to prevent empty trailing space on wide viewports
- LogoLoop.css: adjust slide keyframe translation from -50% to -25% for a seamless infinite loop
fix: resolve blank screen crashes caused by missing React import and WebSocket send race condition
- Add missing import type { ReactNode } in LogoLoop.tsx (was using
React.ReactNode without importing React, crashing the entire module tree)
- Fix WebSocket cleanup in App.tsx to only call ws.send() when readyState
is OPEN, not CONNECTING — React StrictMode's double-mount triggered an
InvalidStateError on every page load
- Add Array.isArray() guards in WatchlistSidebar.tsx to prevent TypeError
if stock search API returns an error object instead of an array
- Add React ErrorBoundary in main.tsx to surface runtime crashes visibly
instead of showing a blank screen
fix: rewrite LogoLoop to zero-JS pure CSS animation, bigger icons, tighter section padding