Skip to content

CO.8: Meeting Room

Summary

Counselors use the meeting room for video, audio, screen sharing, chat/sidebar interactions, participant awareness, and ending or leaving meetings.

Role

  • Primary: Counselor
  • Secondary: Client, Guest

Entry Point

  • URL: /meeting/:meetingId

Preconditions

  • LiveKit token and URL are available.
  • User has joined through the pre-join flow.

Steps

  1. Meeting room connects to LiveKit.
  2. Local and remote media tracks render.
  3. Recording auto-starts when RECORDING_AUTO_START_ENABLED is on and the host's resolved preference (per-meeting auto_record_enabled, falling back to counselor auto_record_default) is true. The participant_joined webhook stamps consent and launches the egress on host-join. When the flag is off, recording remains host-initiated through the legacy consent dialog.
  4. Counselor uses controls for audio, video, screen share, and settings.
  5. Counselor can stop recording mid-session via the record button → confirmation dialog (Stop recording? ...). Stop is reversible: the host can re-enable recording at any point.
  6. If auto-start failed (egress error, missing LiveKit room, etc.) a persistent banner appears above the meeting controls with a Retry button.
  7. Counselor can use sidebar tools such as chat.
  8. Counselor leaves or ends the meeting.
  9. App returns to meeting details or shows end-state UI.

Diagram

Edge Cases

  • Connection loss: Room surfaces connection errors.
  • Guest chat: Guest access tokens are passed differently for realtime chat.
  • End meeting: Host actions can use keepalive handling on unload.
  • Auto-start failure: Egress launch may fail (R2 token issues, LiveKit egress quota, etc.). The host sees a destructive banner with retry — the meeting itself is not blocked.
  • Per-meeting opt-out: Hosts can mark a specific meeting as do-not-record at schedule time. The per-meeting override always wins over the counselor default.

Current Implementation Notes

  • Frontend: frontend/src/app/pages/meeting-room.tsx, frontend/src/features/meeting/components

Screenshot Status

  • Captured with Playwright on 2026-04-17 using dev-only room fixture data:
    • Counselor focus overview: focus-overview.png