The single-tab lock was only released in beforeunload, so a browser
crash or power-cut left the localStorage key behind and the script
exited on every subsequent load until site data was cleared.
Treat a lock not refreshed within 90s as dead and take it over, and
add a 30s heartbeat so a live instance keeps its lock fresh.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add 6 draggable purple buttons for quickly joining Directing Rooms 1-6,
stacked vertically to the right of the MaxDockedCams button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>