feat(qbz-slint): album artwork pipeline

Discover cards now show real Qobuz cover art. Artwork is fetched and
decoded off the UI thread, capped at 16 concurrent downloads, and each
result is applied to its own card row on the Slint event loop — so a
cover arriving never resets a section.

- artwork.rs: download + decode worker and per-row apply.
- AlbumCardItem gains an `artwork` image field; AlbumCard overlays the
  cover, falling back to the elevated placeholder until it resolves.
- main.rs: after the discover sections render, artwork jobs are spawned
  for every card with an image URL.

qbz-slint now depends on reqwest and image.

cc
This commit is contained in:
vicrodh committed 2026-05-18 13:05:12 -06:00
1 parent 8246ad5dd6
commit e2e409cf93
7 files changed
+116

No files matched your search

+2
View File
@@ -17,6 +17,8 @@ env_logger = "0.11"
tokio = { workspace = true }
async-trait = { workspace = true }
chrono = { workspace = true }
reqwest = { workspace = true }
image = { version = "0.25", default-features = false, features = ["jpeg", "png"] }
urlencoding = "2"
open = "5"
qbz-app = { path = "../qbz-app" }