Gate READY on download completion; move audio to ~/.radiantwave/audio

State machine now uses DOWNLOADING_ASSETS before READY. Downloads closing
the DownloadDone channel signals checkState() to proceed. Download failure
sets downloadFailed flag which prevents READY. Audio files moved from
~/.local/share/rhemawave/audio to ~/.radiantwave/audio/.

Regression tests in application_test.go (linux build-tagged due to
network package D-Bus init). Version 0.6.
This commit is contained in:
NeilClack
2026-07-11 13:43:05 -05:00
parent 2cc5071731
commit 3f8144a708
7 changed files with 252 additions and 26 deletions
+7
View File
@@ -12,6 +12,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- 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)
- App shows "READY" before audio files finish downloading (state machine now gates READY on download completion via DOWNLOADING_ASSETS state)
- Download failure no longer silently allows READY (downloadFailed flag prevents premature READY)
### Known Issues
- Active device highlight incorrect when using default device
@@ -19,8 +21,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
### Added
- Human-readable audio device names (Built-in Speakers, HDMI/TV/Monitor)
- Unit tests for mixer package (parseSinks, parseSinkLine, ConvertVolume)
- Regression tests for state machine (download gating, failure handling)
- Regression tests for mixer (Stop with AudioEnabled=false, SwitchDevice edge cases)
### 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
- Audio files moved from ~/.local/share/rhemawave/audio to ~/.radiantwave/audio
- State machine uses DOWNLOADING_ASSETS state before READY
- CI now runs go test before nix build