turn-up-arch/CHANGELOG.md

44 lines
2.1 KiB
Markdown

# 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.