TotalApp Docs

Meeting & Huddle

Real-time video conferencing — WebRTC calls, screen sharing, in-meeting chat, and quick actions from any channel.

Overview

Meeting & Huddle is TotalApp's real-time video conferencing screen. It opens directly from a Collab Chat channel huddle button, establishing a peer-to-peer WebRTC call between all participants in that channel. Each participant sees live video tiles, can control their own mic and camera, share their screen, and collaborate through a side drawer with in-meeting chat, quick action creation, and a live people roster.

Real WebRTC Video

Connects real browser media streams (camera + microphone) through a signaling server. Remote participants appear as live video tiles — no mock data. The grid scales from 1-up to 4-column depending on participant count.

Media Controls

Toggle your microphone and camera independently at any time during a call. A MicOff icon appears in the participant's name bar when their mic is off. Camera-off participants show their avatar initials instead of video.

Screen Share

Share your entire screen, a window, or a browser tab. The screen share stream replaces your camera tile with a monitor icon indicator. Other participants see your shared screen as a live video tile.

In-Meeting Chat

A full chat panel inside the meeting drawer — send messages without leaving the video grid. Unread message count appears as a badge on the Chat control button. Press Enter to send; Shift+Enter for a new line.

Quick Actions

Create a task, note, or workflow automation directly from the meeting via the Actions drawer tab — or use the command bar with /task, /note, or /flow slash commands. Actions are timestamped and listed in the activity feed.

People Roster

The People tab shows every live participant with their name, mic status, and camera status. Hover a participant row to see additional controls. Invite new participants directly from the roster.

Channel Chat System Messages

When a huddle starts or ends, a system message is posted to the Collab Chat channel — "Call started by Name" and "Call ended by Name" — so team members who weren't in the call can see the activity in the channel timeline.

Auto-Leave on Peer Disconnect

When all remote participants leave, the local user is automatically returned to the Collab Chat screen. This prevents a user from sitting alone in an ended call unaware that others have left.

Starting a Meeting

1. Open Collab Chat
2. Select a Channel
3. Click Video Call
4. Meeting Screen Opens
  1. Navigate to Collaboration → Collab Chat.
  2. Select the channel you want to call in. The call will be scoped to that channel's room — only people in the same channel room can join.
  3. Click the Video Call button () in the channel header toolbar.
  4. The Meeting & Huddle screen opens full-screen. Your browser will prompt for camera and microphone permission if not already granted.
  5. A "Call started by You" system message appears in the channel chat so other members know a call is active.
  6. Other channel members see the huddle indicator in the channel list. They can join by clicking the same Video Call button in that channel.

Browser Permission Required

Your browser must grant camera and microphone access. If you deny the permission prompt, you can join the call with audio-only or camera-off — your avatar will show instead of a video tile. Grant permissions in your browser's address bar settings and rejoin.

Video Grid

The main area of the meeting screen shows all participants as video tiles. The grid layout adapts automatically to the number of active participants.

Participant count Grid layout
1 (you only)Single centered tile, max 2xl width
22 columns side by side
3–42×2 grid
5–93-column grid
10+4-column grid

Tile states

  • Live video — camera is on and a live video track is available. The video fills the tile.
  • Camera off / no stream — the participant's coloured avatar circle with initials is centred in the tile.
  • Speaking — a pulsing primary-colour ring appears around the tile border when the participant is speaking.
  • Mic off — a MicOff icon appears in the bottom name bar of the tile.

Your Own Tile

Your local video tile is always muted (you hear yourself through your own speakers otherwise). The local stream uses muted on the video element so you don't get audio feedback from your own microphone.

Media Controls

The control bar at the bottom of the meeting screen contains all call management buttons.

Button State when active State when off / inactive
Mic Normal (mic is on, audio is live) Rose-tinted border — MicOff icon — your audio is muted
Video Normal (camera is on, video is live) Rose-tinted border — VideoOff icon — your camera is off
Share Rose active state — ScreenShareOff icon — sharing is active; click to stop Normal — ScreenShare icon — click to start sharing
Chat Drawer opens on Chat tab; unread badge cleared Badge shows unread message count (up to 99+)
Actions Drawer opens on Actions tab
People Drawer opens on People tab
End Call Rose-filled — leaves the call and returns to Collab Chat; posts "Call ended" system message

Toggling the same drawer tab that is already open closes the drawer. Switching to a different tab while the drawer is open switches the tab without closing it.

Side Drawer

The right-side drawer has three tabs: Chat, Actions, and People.

Chat tab

An in-meeting chat for text messages during the call. Messages show the sender's avatar, name (for others), and timestamp. Your own messages appear on the right in a primary-tinted bubble.

  • Press Enter to send. Press Shift+Enter for a new line.
  • Emoji and file attachment buttons are available in the composer (these open browser native pickers).
  • The chat is session-scoped — messages are not persisted after the call ends.
  • Unread count badge appears on the Chat control button when the drawer is closed or on a different tab.

Actions tab

Create work items directly from the meeting without switching screens.

Action type Button / Command Icon color
New Task Button or /task <name> Indigo (primary)
New Note Button or /note <name> Amber
New Workflow Button or /flow <name> Emerald

Created actions appear in the activity feed below the quick-action buttons, tagged with the channel name and the time they were created. The feed shows the last 5 actions.

The command bar at the bottom of the Actions tab accepts slash commands: type /task Meeting recap and press Enter to create a task labelled "New Task: #channel-name".

People tab

Shows a live roster of all participants currently in the call. Each row shows:

  • Coloured avatar with initials
  • Display name (with "(you)" label on your own entry)
  • Mic and camera status icons (visible on hover)
  • Three-dot menu for participant options (on remote participants)

The Invite button at the top of the People tab lets you add new participants to the call.

Channel System Messages

The Meeting & Huddle screen posts automatic system messages to the originating Collab Chat channel at two moments:

Event Message posted to channel Trigger
Call started "📞 Call started by [Your Name]" When the video call button is clicked in the channel header
Call ended "📵 Call ended by [Your Name]" When End Call is clicked (or the last peer disconnects)

These messages appear in the channel timeline with a distinct isCall styling (phone icon, muted text colour, no avatar) so they are visually distinct from regular chat messages. They are visible to all channel members, including those who did not join the call.

Auto-Leave Behaviour

When all remote participants leave the call, the Meeting screen detects that the peer count has dropped to zero after previously having at least one peer, and automatically calls the leave handler — returning the local user to Collab Chat and posting the "Call ended" system message.

Why this matters

Without auto-leave, a user would remain in the Meeting screen alone after the other party hangs up, with no indication the call has ended. The auto-leave ensures the screen always returns to Chat when the call is over, regardless of who clicked End Call first.

The detection works with a hadPeersRef flag: the ref is set to true the first time remoteStreams.length > 0. When remoteStreams drops back to zero while hadPeersRef.current is true, leave is triggered. This prevents auto-leave from firing on initial load (before any peer has connected).

FAQ

Why can't I see the other person's video?
The most common reasons are: (1) the other participant has their camera turned off — their avatar initials will show instead; (2) a WebRTC ICE negotiation failed due to a firewall or NAT traversal issue — check your network allows UDP on ports 3478/5349 (STUN); (3) the browser did not grant camera permission to the other participant. All participants must grant camera permission for their video to appear.
Can I use Meeting & Huddle without a camera?
Yes. If you deny camera permission or click the Video button to turn your camera off, your tile shows your avatar with initials instead of a video feed. Audio still works normally (if microphone permission is granted). Other participants see your avatar tile with a VideoOff indicator.
Do in-meeting chat messages save to the channel history?
No. In-meeting chat is session-scoped and is not persisted. When the call ends and you return to Collab Chat, the in-meeting messages are gone. If you need to save discussion points, use the Actions tab to create notes (/note) during the call — those are timestamped in the activity feed.
Can multiple people share their screen at the same time?
Each participant can share their own screen independently. Multiple concurrent screen shares are technically possible — each appears as a separate video tile in the grid. In practice, coordinating whose share to watch is a conversation moderation concern.
What happens if I navigate away from the Meeting screen without clicking End Call?
The useWebRTC hook is tied to the Meeting screen component. If you use the TotalApp sidebar or header to switch to another screen, the WebRTC connections are dropped and the call effectively ends — the other participants will see you disconnect. Always click End Call to leave cleanly and post the "Call ended" system message.
Can I rejoin a meeting after leaving?
Yes. If the call is still active (other participants are still in the Meeting screen on the same channel), click the Video Call button in the Collab Chat channel header again to rejoin. A new WebRTC negotiation will establish and you will appear as a new participant tile.
How many participants can join a call?
The grid supports up to 4 columns (theoretically unlimited participants), but WebRTC mesh calls (every peer connects to every other peer) do not scale well beyond 4–6 participants in practice due to bandwidth and CPU constraints. For large group calls, a SFU (Selective Forwarding Unit) media server would be required — that is a planned infrastructure enhancement.