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.
ProjectSendspin/sendspin-cli
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
| 5 | 5 | logger.error("Hardware volume: no PulseAudio sinks available") | |
| 6 | 6 | return None | |
| 7 | 7 | ||
| 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 | + | ): | |
| 9 | 14 | server_info = await client.server_info() | |
| 10 | 15 | sink = next((s for s in sinks if s.name == server_info.default_sink_name), None) | |
| 11 | 16 | if sink is None: |
The check that tells the two apart
fail→pass·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.