TrackRow now renders the offline state the controller maintains: - The offline button is stateful: cloud-download (none, click -> cache) -> loader-circle accent (queued/downloading) -> circle-check accent (ready, click -> uncache) -> triangle-alert red (failed, click -> retry). Shown on surfaces that enable it AND on any row with active cache state. - The unlock PADLOCK (user-requested, back from Tauri): a pulsing lock glyph overlays the play cell while the track's CMAF bundle decrypts, driven by the `unlocking` flag the row_sink toggles on UnlockStart/UnlockEnd. New lucide lock.svg / lock-open.svg assets. The context menu's "Make available offline" already routes to caching. Testable loop: cache a track (album button or context menu) -> watch it download -> play it offline -> padlock pulses during decrypt. qbz-slint compiles clean. cc
285 B
285 B