fix: Release the microphone to the browser when a call ends (#2685)

The microphone is connected when a call needs it and released the moment
that
call ends, so the browser stops reporting it as in use at hangup rather
than
`disconnect_seconds` later.

Existing configurations are migrated automatically by the visual editor.

 - Closes: #2681 

BREAKING CHANGE: `live.microphone.disconnect_seconds` is removed. The
microphone is released when a call ends, so there is no idle countdown
to
configure. Use `live.microphone.always_connected` to hold it open
instead.

BREAKING CHANGE: The `microphone_connect` and `microphone_disconnect`
actions
are removed. The card owns the microphone lifecycle; `microphone_mute`
and
`microphone_unmute` remain.

BREAKING CHANGE: `call` is removed from `live.microphone.auto_mute`,
whose
default is now `[]`. The microphone is muted when a call ends regardless
of
this option.

BREAKING CHANGE: `microphone_unmute` has no effect outside a call.
Nothing
carries the audio at any other time, so the request is ignored rather
than
opening the microphone.
This commit is contained in:
Dermot Duffy
2026-08-14 16:17:31 -07:00
committed by GitHub
parent 65bc52d18e
commit 85d6811761
33 changed files with 1480 additions and 572 deletions
-1
View File
@@ -255,7 +255,6 @@
"lazy_unload": "Les càmeres en directe es descarreguen amb mandra",
"microphone": {
"always_connected": "Mantingueu sempre el micròfon connectat",
"disconnect_seconds": "Segons després dels quals desconnectar el micròfon (0=mai)",
"editor_label": "Micròfon",
"mute_after_microphone_mute_seconds": "Segons després de silenciar el micròfon per silenciar l'àudio entrant"
},
-1
View File
@@ -215,7 +215,6 @@
"live": {
"microphone": {
"always_connected": "Mikrofon immer verbunden lassen",
"disconnect_seconds": "Sekunden nach denen das Mikrofon getrennt wird (0=niemals)",
"editor_label": "Mikrofon",
"mute_after_microphone_mute_seconds": "Sekunden nach denen das Mikrofon stumm geschalten wird, um eingehendes Audio stumm zu schalten"
},
-1
View File
@@ -493,7 +493,6 @@
"always_connected": "Always keep the microphone connected",
"auto_mute": "Automatically mute the microphone",
"auto_unmute": "Automatically unmute the microphone",
"disconnect_seconds": "Seconds before disconnecting microphone (0=never)",
"editor_label": "Microphone",
"mute_after_microphone_mute_seconds": "Seconds after microphone mute before muting inbound audio"
},
-1
View File
@@ -336,7 +336,6 @@
"lazy_unload": "Les caméras en direct sont déchargées en différé",
"microphone": {
"always_connected": "Toujours garder le microphone connecté",
"disconnect_seconds": "Secondes après quoi déconnecter le microphone (0=jamais)",
"editor_label": "Microphone",
"mute_after_microphone_mute_seconds": "Secondes après la mise en sourdine du microphone pour couper l'audio entrant"
},
-1
View File
@@ -378,7 +378,6 @@
"lazy_unload": "Kamery wyładowywane leniwie",
"microphone": {
"always_connected": "Zawsze utrzymuj połączenie mikrofonu",
"disconnect_seconds": "Sekundy do rozłączenia mikrofonu (0=nigdy)",
"editor_label": "Mikrofon",
"mute_after_microphone_mute_seconds": "Sekundy po wyciszeniu mikrofonu do wyciszenia dźwięku przychodzącego"
},