Small optimization release. I noticed that for users with larger libraries, the library page would take a long time to load. This was due to some redundant and unnecessary checks. Also the the api endpoint was returning a lot of data that was not needed for the page. Additionally I have added url resolution normalizations to download client host/ip:port connection strings so the connection tests are more robust.
Added
- Shared backend/frontend audiobook status helpers so list views can use a consistent status model without relying on full file metadata from
/library - A dedicated slim library list DTO for
GET /library - A shared download-client URI builder for normalizing host, scheme, port, and path handling
- Backend regression tests covering:
- slim
/librarypayload behavior - wanted-flag correctness
- NZBGet host normalization and queue-path handling
- qBittorrent, SABnzbd, and Transmission host normalization
- slim
Changed
- Slimmed
GET /libraryfrom a hybrid list/detail payload into a lighter list response - Kept
GET /library/{id}as the rich full-detail audiobook endpoint - Moved library list status evaluation to shared backend/frontend helpers instead of deriving it ad hoc in views
- Switched the app from timer-based Wanted badge refreshes to store-driven updates backed by existing SignalR events
- Updated the frontend library store to collapse concurrent
/libraryrequests into a single in-flight fetch - Reused cached library state for app-shell lookups and related UI flows instead of issuing redundant library requests
- Standardized host/URL interpretation across NZBGet, qBittorrent, SABnzbd, and Transmission for both test/save and runtime monitor paths
Fixed
- Slow
/libraryresponses caused by per-audiobook filesystem existence checks during list loading - Duplicate
/libraryrequests during startup and view initialization - Full-library polling churn for the Wanted badge
- Extra DB work in audiobook ...
Automated canary build