turn-up-arch/CHANGELOG.md

2.1 KiB

Changelog

All notable changes to this project are documented in this file.

[Unreleased]

Added

  • active_window_volume knob action — controls the volume of whatever application currently has window focus. No target is needed; the focused window is resolved dynamically on every turn.
  • mute_active_window button action — toggles mute for whatever application currently has window focus.
  • mute_group button action — toggles mute for multiple applications at once (targets = ["app1", "app2"]), syncing every matched stream to the same mute state so repeated presses can't leave the group half-muted.
  • binary:<name> needle syntax for app_volume/group_volume/ app-matching button targets. Some applications (generic Electron apps that don't set their own PipeWire identity, e.g. Feishin) report the same application.name as an unrelated app and are only distinguishable by application.process.binary. A binary:-prefixed needle matches that field exactly instead of substring-matching name-or-binary, avoiding cross-talk between knobs/groups that would otherwise both match the generic name.
  • New dependency: kdotool (AUR), required for focused-window detection under KWin/Wayland.

Changed

  • PulseController.set_app_volume() / get_app_volume_norm() now share a single stream_matches() helper (in audio.py) instead of duplicating the name/binary substring check inline, and skip the MPRIS/playerctl lookup for binary:-prefixed needles (no meaningful player name in that case).
  • reapply_app_volumes()'s periodic PA-correction loop uses the same stream_matches() helper, fixing a bug where two knobs/groups whose needles both matched a generic app name (e.g. "chromium" matching both the real browser and a bare-Electron app reporting as "Chromium") would fight over that stream's volume every ~1s.
  • Web UI's TOML serializer (ui/server.py) now writes targets = [...] for mute_group buttons, mirroring how knobs already serialize group_volume.

[2.2.2] - previous release

See git history prior to this file's introduction.