# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ### Fixed - Play() deadlocks when called before device is open (recursive SwitchDevice → Play) - Audio volume silently zeroed after switching output devices (Init used hardcoded 0.20; SwitchDevice did not restore saved volume) - SwitchDevice not persisted to database across restarts (caller now saves to AppConfig) - Device restore path passes invalid device name "system default" to SDL (now passes "" for default) - Stop() no-op when audio toggled off mid-playback (removed AudioEnabled guard from Stop) ### Known Issues - Active device highlight incorrect when using default device ### Added - Human-readable audio device names (Built-in Speakers, HDMI/TV/Monitor) - Unit tests for mixer package (parseSinks, parseSinkLine, ConvertVolume) ### Changed (Major Refactors) - Mixer package: inject audio backend dependencies for testability - Mixer package: extract wpctl calls behind an interface - SwitchDevice now takes *db.AppConfig to access saved volume