The page polls threads every 2s, tours 2s, info 5s, live status 3s, staleness 3s — roughly 5 requests/second per tab at steady state, and the bell/badge lag behind by up to a poll interval.
Proposal: a single /api/events SSE stream pushing thread/tour/live/staleness invalidations; react-query stays, the pollers become the fallback.
Effort: M–L.
The page polls threads every 2s, tours 2s, info 5s, live status 3s, staleness 3s — roughly 5 requests/second per tab at steady state, and the bell/badge lag behind by up to a poll interval.
Proposal: a single
/api/eventsSSE stream pushing thread/tour/live/staleness invalidations; react-query stays, the pollers become the fallback.Effort: M–L.