The mic element sat in the top-right corner of every Android stream that opened a capture — a standing, tappable button on touch, a red Muted badge on TV. It goes for now: the on-screen overlay UI being built will carry mute as one of its controls, and re-introducing it there is the right moment to decide how it looks.
MicMuteControl and its call site in StreamScreen.kt are removed, along with the imports that only it used (clickable, Row, Spacer, width, Icons, Mic, MicOff, Icon, clip).
What is untouched
Mute itself. micRunning, micMuted and setMicMuted still back the Select + Y chord, which is now the whole of the control, and MicChordHint — the 1.6 s "Microphone muted / live" pill — is now its only on-screen feedback. Mic capture, the AEC/NS effect pair and the start-banner chord line are all unchanged.
Three comments that described the button were rewritten rather than left to rot: the micRunning and micHint declarations, the chord registration, and MicChordHint's doc (which pointed at the badge that no longer exists).
Consequence worth stating
On a phone or tablet with no gamepad attached there is now no way to mute mid-stream — that is the direct result of removing the only touch affordance, and it resolves when the overlay UI lands.
Verification
:app:compileDebugKotlin — BUILD SUCCESSFUL, no Kotlin warnings.
:app:testDebugUnitTest — BUILD SUCCESSFUL (only pre-existing Compose-test deprecation warnings, unrelated to this change).
Grepped the whole Android tree: MicMuteControl was the only mic UI element in the client, so nothing else renders one.
No CHANGELOG entry — that file is the protocol/ABI/embedder half, and this changes neither.
The mic element sat in the top-right corner of every Android stream that opened a capture — a standing, tappable button on touch, a red **Muted** badge on TV. It goes for now: the on-screen overlay UI being built will carry mute as one of its controls, and re-introducing it there is the right moment to decide how it looks.
`MicMuteControl` and its call site in `StreamScreen.kt` are removed, along with the imports that only it used (`clickable`, `Row`, `Spacer`, `width`, `Icons`, `Mic`, `MicOff`, `Icon`, `clip`).
## What is untouched
Mute itself. `micRunning`, `micMuted` and `setMicMuted` still back the **Select + Y** chord, which is now the whole of the control, and `MicChordHint` — the 1.6 s "Microphone muted / live" pill — is now its only on-screen feedback. Mic capture, the AEC/NS effect pair and the start-banner chord line are all unchanged.
Three comments that described the button were rewritten rather than left to rot: the `micRunning` and `micHint` declarations, the chord registration, and `MicChordHint`'s doc (which pointed at the badge that no longer exists).
## Consequence worth stating
On a phone or tablet with no gamepad attached there is now no way to mute mid-stream — that is the direct result of removing the only touch affordance, and it resolves when the overlay UI lands.
## Verification
- `:app:compileDebugKotlin` — BUILD SUCCESSFUL, no Kotlin warnings.
- `:app:testDebugUnitTest` — BUILD SUCCESSFUL (only pre-existing Compose-test deprecation warnings, unrelated to this change).
- Grepped the whole Android tree: `MicMuteControl` was the only mic UI element in the client, so nothing else renders one.
No CHANGELOG entry — that file is the protocol/ABI/embedder half, and this changes neither.
The mic element sat in the top-right corner of every stream that opened a
capture — a standing button on touch, a Muted badge on TV. It goes for now;
the on-screen overlay UI being built will carry mute as one of its controls,
and re-introducing it there is the right moment to decide how it looks.
Mute itself is untouched: `micRunning`, `micMuted` and `setMicMuted` still
back the Select + Y chord, which is now the whole of the control, and
`MicChordHint` is now its only on-screen feedback (its doc updated to say so
rather than pointing at the badge that no longer exists).
enricobuehler
scheduled this pull request to auto merge when all checks succeed 2026-08-13 14:03:25 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The mic element sat in the top-right corner of every Android stream that opened a capture — a standing, tappable button on touch, a red Muted badge on TV. It goes for now: the on-screen overlay UI being built will carry mute as one of its controls, and re-introducing it there is the right moment to decide how it looks.
MicMuteControland its call site inStreamScreen.ktare removed, along with the imports that only it used (clickable,Row,Spacer,width,Icons,Mic,MicOff,Icon,clip).What is untouched
Mute itself.
micRunning,micMutedandsetMicMutedstill back the Select + Y chord, which is now the whole of the control, andMicChordHint— the 1.6 s "Microphone muted / live" pill — is now its only on-screen feedback. Mic capture, the AEC/NS effect pair and the start-banner chord line are all unchanged.Three comments that described the button were rewritten rather than left to rot: the
micRunningandmicHintdeclarations, the chord registration, andMicChordHint's doc (which pointed at the badge that no longer exists).Consequence worth stating
On a phone or tablet with no gamepad attached there is now no way to mute mid-stream — that is the direct result of removing the only touch affordance, and it resolves when the overlay UI lands.
Verification
:app:compileDebugKotlin— BUILD SUCCESSFUL, no Kotlin warnings.:app:testDebugUnitTest— BUILD SUCCESSFUL (only pre-existing Compose-test deprecation warnings, unrelated to this change).MicMuteControlwas the only mic UI element in the client, so nothing else renders one.No CHANGELOG entry — that file is the protocol/ABI/embedder half, and this changes neither.