One function

_get_sink in Sendspin/sendspin-cli

The author described this change as Fix hardware volume for PipeWire backend devices (#177). It counts as a record because the check below fails on the code as it stood at 48f954fb9 and passes on 2ced2c3cc, with nothing else changed between the two runs.

Fix saved2026-03-10
Sharing licenceApache-2.0 · LICENSE
Change size+6 1

What the code was meant to do, written into the code itself as a docstring

Return the PulseAudio sink corresponding to *audio_device*, or None if not found.

The change

55 logger.error("Hardware volume: no PulseAudio sinks available")
66 return None
77
8- if audio_device.is_default:
8+ if audio_device.is_default or audio_device.name in (
9+ "default",
10+ "pipewire",
11+ "pulse",
12+ "pulseaudio",
13+ ):
914 server_info = await client.server_info()
1015 sink = next((s for s in sinks if s.name == server_info.default_sink_name), None)
1116 if sink is None:

The check that tells the two apart

failpass·tests/test_hardware_volume.py::test_get_sink_uses_default_sink_for_pipewire_backend_device

Check file tests/test_hardware_volume.py, taken without changes from the fix and copied onto the older code, so the exact same check runs against both versions.

Origin and history

The code before it48f954fb9fb016805963a1ac872ebc3040dbf7a3
Broken version dated2026-03-09
Modulesendspin.hardware_volume
Units changed_get_sink
Fingerprint6d39f8f7c9796a12
Checked2026-08-18 by goldset/0.1

Every field above is generated by our program. None of it is written by hand.