@startuml skinparam backgroundColor white actor User participant "Call" as Card participant Microphone as Mic actor Guest opt **""live.microphone.always_connected""** is enabled Card -> Mic : Microphone connection attempted (muted) note over Mic : Connected at card load, before (and independent of) any call Mic --> User : Microphone access granted end User -> Card : Start a call note over User, Card Via Call menu button or **""call_start""** action. Needs a camera that supports 2-way audio end note opt **""live.microphone.always_connected""** not enabled Card -> Mic : Microphone connection attempted (muted) note over Mic : Stays muted by default (**""live.microphone.auto_unmute""**) Mic --> User : Microphone access granted end note over User, Mic The microphone must connect for the call to proceed — if access is denied or unsupported, the call does not start end note Card --> User : You hear the caller note over Card Inbound audio unmutes if configured (**""live.auto_unmute""**) Menu, status bar & next/previous hide (**""auto_hide""**) Camera navigation is locked (**""live.controls.call.lock""**) end note User -> Mic : Unmute to talk note over Mic : List 'call' in **""live.microphone.auto_unmute""** to unmute automatically loop Until the call ends User -[#red]> Guest : Talking Guest -[#red]-> User : Responding end User -> Card : End the call note over User, Card Via Hang-up button, **""call_end""** action, or — when **""live.controls.call.lock""** is disabled — navigating away end note Card --> User : Inbound audio mutes (**""live.auto_mute""**) Card -> Mic : Microphone mutes (**""live.microphone.auto_mute""**) note over Mic Disconnects after **""live.microphone.disconnect_seconds""** unless **""live.microphone.always_connected""** end note @enduml