70da8dad38
sendHeartbeat() always reported _viewingSession even when the user switched to another browser tab. The server saw 'device is watching session X' and cleared bells immediately. Fix: use Page Visibility API (document.hidden) to send viewing_session=null when the tab is in the background. Bells accumulate correctly, favicon badge shows activity, and indicators appear in the dashboard/sidebar. When the user switches back to the muxplex tab, the next heartbeat restores the real session.