Team chat and video huddles
Team rooms provide presence, chat, and optional video huddles alongside the dialer. Video availability is capability-gated: the server mints a short-lived LiveKit join token only when LiveKit URL and credentials are configured.
The web and native clients support participant grids, microphone and camera controls, pinning, active-speaker layout, screen sharing, leave/retry states, and call-status participant attributes.
Prospect calls take priority. When dialing or a live call begins, native huddles unpublish local tracks and unsubscribe remote audio; requested media is restored after the call ends. This prevents huddle media and prospect-call audio from overlapping.
Self-hosted deployment is documented under deploy/livekit/; the local E2E stack pins a LiveKit server for deterministic tests.
Implementation anchors: modern/agent-dialer/chat.php, modern/shared/livekit.php, deploy/livekit/README.md, ios/PARITY_MATRIX.md.