VideoSync desktop client
Chat
Chat follows new messages while you are near the bottom. Scroll up to read older messages without losing your place. Incoming messages appear beneath a New messages divider, and Jump to latest shows how many have arrived. Clicking it, or scrolling back to the bottom, resumes following messages.
Ready checks
Send /ready in chat to start a check for everyone in the room. Playback pauses
and a ready panel appears above chat. Each person clicks I'm ready; they can
change their answer with Not ready. When everyone is connected and ready,
the person who started the check can click Start together. They can also
cancel the check. Repeating /ready leaves an existing check and its votes intact.
New participants must confirm readiness. Disconnecting clears that person's vote; reconnecting restores the panel so they can confirm again. Ordinary play controls dismiss an active check and continue playback.
Ready checks require the updated server and desktop clients. The web client does not yet have ready-check controls.
Fight-night commands
/ko— K.O.: That's a wrap./bell— DING!: Back to your corners./tap— TAP!: Someone's had enough./robbery— a reaction plus a 30-second room vote on the decision.
Reactions slide into the bottom of the video for 2.2 seconds and keep playback running. A shared 3-second cooldown limits room-wide effects. Reaction events stay in chat history; joining or reconnecting does not replay animations.
Quiet sound effects play automatically with visible reactions. Sounds are original synthesized effects cached locally, with no external downloads. Overlays and sound are suppressed while the player is hidden, minimized, or another application is active. Reactions also work while the detached chat window is focused.
Robbery votes allow one answer per person, which you can change before the vote closes. The result remains visible after closing and can be dismissed. Joining or reconnecting restores the current vote. Fight commands require the updated server and desktop clients; web clients currently see the chat reaction only.
Tests
With pytest, pytest-qt, and Bun installed, run from this directory:
$env:QT_QPA_PLATFORM = 'offscreen'
.\.venv\Scripts\python.exe -m pytest test_chat.py test_sync_client.py test_ready_server.py test_fight_reactions.py test_fight_server.py -q
The ready-check integration test starts an isolated local server; it does not contact the production service. VLC playback is mocked in the chat UI tests.