What's New
Multi-Provider Architecture
- Added pluggable music service architecture supporting multiple providers
- Full Qobuz integration (download, metadata, bundle services)
- Provider-based service organization (Services/Deezer/, Services/Qobuz/, Services/Local/, Services/Subsonic/)
Major Refactoring
- BaseDownloadService: Template method pattern eliminating ~80% duplication
- SubsonicController: Reduced from 1,174 to 666 lines (-43%)
- Models reorganization: Separated by context (Domain/, Settings/, Download/, Search/)
- Error handling: Result pattern and GlobalExceptionHandler
New Features
- Download modes: Track-by-track or full album download for Deezer
- Explicit content filter for Deezer tracks
- Startup validation for connectivity checks
- Feishin client compatibility (form-urlencoded body parsing)
Improvements
- Fixed folder organization using AlbumArtist instead of Artist
- Enhanced CI/CD with separate workflows (ci.yml, docker.yml)
- Test coverage increased from ~30 to 127+ tests
- Updated documentation for multi-provider setup
Client Compatibility
- Verified: Symfonium, Sonixd, Aonsoku, Feishin
Breaking Changes
- Configuration structure updated - see
.env.examplefor new format