Phone B — Coach panel
Join training session
Enter the 6-digit code from Phone A. The backend issues a LiveKit token automatically — no copy/paste. Start the camera session on iPhone first, then join here.
Session
- Session ID
- —
- Role
- coach
- LiveKit room
- squash-dev
Advanced — dev token fallback
TEMP bypass for milestone debugging without the backend. Prefer the pairing code flow above.
Remote video
Connect to the room to receive video from Phone A.
Live drill metrics
court diagramMetrics update from LiveKit telemetry (~10 Hz position, event-driven drill state). Arrival stats accumulate for the current browser session only.
- Drill state
- —
- Current target
- —
- Current zone
- —
- Confidence
- —
- Latest arrival
- —
- Best arrival
- —
- Average arrival
- —
- Completed trials
- 0
Player position
Video mapping unavailable — showing the separate 2D court diagram below.
Connect to the room to receive telemetry from Phone A.
Drill controls
Commands publish on topic coach.command. Phone A updates its local drill engine and sends drill.state.changed telemetry back.
- Command sync
- idle
- Commands sent
- 0
- Remote phase
- —
- Remote target
- —
- Elapsed (s)
- —
- State updated
- —
Connection status
- State
- idle
- Room
- —
- Local identity
- —
- Remote participants
- 0