From #413.
Sev: high. Tier: client. Obvious?: yes.
crates/client/src/mutations.rs voice mutators ship with no test:
join_voice (line 646)
leave_voice (line 669)
toggle_mute (line 694)
toggle_deafen (line 703)
voice_peer_joined (line 796)
voice_peer_left (line 811)
Evidence:
$ rg "voice|toggle_mute|toggle_deafen" -l crates/client/src/tests/
(empty)
$ rg "voice|toggle_mute|toggle_deafen" -l e2e/
(empty)
Voice presence feeds UI state. Mute/deafen/channel-switch regressions silent.
Fix: crates/client/src/tests/voice.rs per CLAUDE.md tier-2 (client). One happy-path test per mutator using test_client().
From #413.
Sev: high. Tier: client. Obvious?: yes.
crates/client/src/mutations.rsvoice mutators ship with no test:join_voice(line 646)leave_voice(line 669)toggle_mute(line 694)toggle_deafen(line 703)voice_peer_joined(line 796)voice_peer_left(line 811)Evidence:
Voice presence feeds UI state. Mute/deafen/channel-switch regressions silent.
Fix:
crates/client/src/tests/voice.rsper CLAUDE.md tier-2 (client). One happy-path test per mutator usingtest_client().