Closes the v1 gaps in the offline manager toward Tauri parity:
- Album COVERS: rows load the on-disk cover.jpg (per album). Built Send-safely
— the worker passes the cover PATH (string), the image is decoded on the UI
thread (slint::Image is not Send).
- Two-pane layout with an A-Z ARTIST RAIL (left, "All artists" + per-artist
"N albums · M tracks", selectable) + the discography list (right).
- SORT dropdown (A-Z / Recent / Largest / Smallest; Recent uses the DB's
last_accessed_at DESC order) and a "Failed only" toggle. Filter state lives
Rust-side (offline_manager) so rebuild can read it off-thread; mirrored back
onto OfflineManagerState for the UI.
- Limit now PERSISTS to disk (<audio>/offline_limit), restored on activate via
apply_persisted_limit; the manager's edit-limit writes it.
- Manager mutations (remove/redownload/clear) now rebuild on completion
(offline_manager::rebuild made pub, called at the end of each cache op) —
the 500ms timed reload hack is gone.
Deferred (user-accepted): the "track no longer available on Qobuz" case —
offline copy still plays, but warn it can't be re-downloaded / won't work on
Qobuz Connect.
qbz-slint compiles clean.
cc