Round Timer & Shared Clock
Every device in a round runs on the same clock. When anyone plays, pauses, resets or edits a speech or prep timer, everyone else with the round open sees the same change. The sidebar also has a Timer section with the circular progress timer from the browser extension, which can pop out into its own small window.
- Nav:
/debate, left sidebar, the Timer section under the selected round (above Cameras) - Package:
debate-round(layout/RoundTimerPanel.tsx,layout/SidebarSectionsMenu.tsx,utils/sidebar-sections.ts,hooks/useRoomTimerSync.ts,hooks/useTimerSync.ts,webcam/useWebcamRoom.ts),debate-timer(timers/circular/CircularTimerFace.tsx), app Worker (lib/webcam/debate-room.ts)
What it does
- Play/pause reaches the whole room. Starting or stopping a timer on one laptop starts or stops it on the judge's and every debater's laptop too. Resets, cross-ex switches, edited times and both prep clocks travel the same way. A running timer is sent as how long it has been running, so each device counts down on its own and a laptop whose clock is a few seconds off still shows the same time.
- Late joiners catch up. Opening the round after it started pulls in the timers that have already been used. Opening it never resets anyone else's timers.
- Circular timer in the sidebar. The Timer section shows the dial for the speech in view: the ring empties as time runs out and the face darkens while it runs. Click anywhere on the dial to play or pause. The two numbers under the count are the Aff and Neg prep clocks; click one to show it on the dial, and click the speech name to go back. Starting prep pauses a running speech, and starting a speech pauses running prep. The section collapses like Cameras, and shows the running time in its header while collapsed.
- Pop out. The picture-in-picture button next to the section header opens the dial in a small always-on-top window (Chrome and Edge), so it stays visible over other apps. In other browsers the dial floats in the page's bottom-right corner. Click the button again, or Bring it back, to close it.
- All timers. The list button next to the pop-out button opens every speech and both prep clocks with the time used out of the time allowed and a bar for each, so you can check the round's timing between speeches. Speech order lists them as the round runs; Most used ranks them by time used. Click a prep row to show that clock on the dial.
- Turn sidebar sections on and off. The Sidebar sections button (the panel icon in the row of buttons at the top of the sidebar) has a checkbox for each section: Speeches & prep, Circular timer, Cameras, Shared headings & timers, and Open tabs. Unchecking one hides it; Show all brings everything back. The choice is saved on this device.
- Same dial as the extension. The browser extension's timer window uses this same circular timer face.
Known gaps
- When two people press play or pause at almost the same moment, each device keeps whichever update reached it last, so they can disagree until the next press.
- The shared clock needs the round to have been saved (it has a round id), and every device must be signed in. A flow without a round keeps its timers on this device only.
- The Picture-in-Picture window needs the Document Picture-in-Picture API (Chrome and Edge 116+). Firefox and Safari get the in-page floating dial.
- Sidebar section choices are saved per browser, not to your account, so a second device starts with every section shown.
- In All timers, clicking a speech row doesn't switch to that speech; use the round group's speech list.
- The dial counts down on its own, but a speech's timer only rings and is marked done by the round group's speech bar for the speech in view.
