Give Sound the whole story, and keep the buttons inside the card

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 11:39:16 -04:00
parent 9bc68ba358
commit b58371bb35
38 changed files with 3884 additions and 213 deletions
@@ -77,6 +77,22 @@ mute_result="$(qs_for_harness ipc call application-volume-test mutateMute)"
jq -e '.changed == true and .muted == [true, true]' <<<"$mute_result" >/dev/null \
|| fail "mute mutation did not reach every stream: $mute_result"
# Over-amplification lives in Settings, and AudioStreams.js is pure JavaScript
# with no Settings import -- so the ceiling arrives as an argument. What must
# not happen is a default that quietly follows the preference: a caller that
# forgets to pass the max gets 100%, not 150%.
clamp_result="$(qs_for_harness ipc call application-volume-test clampVolume)"
jq -e '.overAmpChanged == true
and ((.overAmp[0] - 1.4) | fabs) < 0.000001
and (.overAmp | length) == 2 and (.overAmp[0] == .overAmp[1])
and .overAmpMuted == [false, false]
and .ceiling == [1.5, 1.5]
and .defaultMax == [1, 1]
and .floor == [0, 0]
and .nonNumericChanged == false
and .nonNumeric == [0.1, 0.1]' \
<<<"$clamp_result" >/dev/null || fail "volume clamp did not honour its max parameter: $clamp_result"
service_summary="$(qs_for_harness ipc call application-volume-test serviceSummary)"
jq -e '.count >= 0 and .validTypes == true' <<<"$service_summary" >/dev/null \
|| fail "live service exposed invalid playback groups: $service_summary"