2.7 KiB
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— a large arcade-style K.O. with gold lettering, red outline, and an impact animation./bell— DING!: Back to your corners./tap— TAP!: Someone's had enough./robbery— a reaction plus a 30-second room vote on the decision.
The K.O. appears across the center of the video; other reactions slide into the bottom. Effects clear after 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 or minimized. Visible players receive reactions even without keyboard focus, without activating the player window. 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.