Member Action Sheet
The Member Action Sheet is the primary way to interact with team members. It's a branded bottom-sheet that slides up when you tap a member's name in the roster.
Layout
The action sheet displays:
- Member avatar and display name
- Status line (online, away, in call, etc.)
- Three action buttons: Message, Whisper, Live-Sight
- Admin section (for admins/owners only): Promote, Demote, Remove, Channel Restrictions
Action Buttons
| Button | Icon | Function |
|---|---|---|
| Message | Chat bubble | Opens DM conversation |
| Whisper | Phone | Starts audio call |
| Live-Sight | Video camera | Starts video call |
Call buttons are only shown when the conditions are met:
- The member is online (not away or offline)
- The member is not already in a call
- You are not already in a call
Quick-Action Icons
For faster access, the member roster shows inline icons next to each member's name:
- Chat icon — Always visible (except for yourself)
- Phone icon — Visible when the member is available for a call
- Video icon — Visible when the member is available for a call
One tap on any icon performs the action immediately — no action sheet required.
Quick-action icons are the fastest way to start a call. One tap from the roster goes directly to the call flow — no intermediate steps.
Call Overlays
Active Call Overlay (Whisper)
During a Whisper call, a call overlay appears at the bottom of the screen:
- Minimized: Compact bar showing duration and caller name
- Expanded: Card with mute button and end call button
- Tap the bar to toggle between views
Live-Sight Overlay
During a Live-Sight call, a full-screen overlay displays:
- Remote video fills the screen
- Local video in a draggable PiP window
- Controls auto-hide after 5 seconds (tap to show)
- Can be minimized to a small floating window
Call Lifecycle
Starting
- You tap Whisper or Live-Sight
- A call request is sent via WebSocket
- The recipient sees the incoming call screen
- Both sides prepare WebRTC connections
Connecting
- The recipient accepts
- WebRTC offer/answer exchange happens
- ICE candidates are gathered and exchanged
- The peer connection is established
Active
- Audio (and video for Live-Sight) streams directly between devices
- Presence updates to "In Call" or "In Live-Sight"
- PTT button is disabled
Ending
- Either party taps "End Call"
- WebRTC connection is closed
- Presence reverts to "Online"
- PTT button re-enables
Calls and Network Recovery
If your WebSocket connection drops during a call (network switch, brief outage):
- The call is automatically ended
- Both participants are notified
- This prevents orphaned calls where one side thinks they're still connected
- You can immediately start a new call once reconnected
The auto-end on reconnect is a deliberate safety measure. Since the signaling channel (WebSocket) is needed for call control, a dropped WebSocket means the call can't be managed properly. It's safer to end and restart.
