2299824ad9
System playlists now show in the home row (good!) but tapping them landed on an empty playlist. Same root cause as the earlier album bug: playlistsListProvider wrote the playlist *row* to drift but never the tracks. playlistDetailProvider only triggered cold-fetch when the row was missing, so it yielded with an empty track list. Refactor playlistDetailProvider to mirror albumProvider's approach: - fetchAttempted guard (one-shot per subscription). - Detect "playlist row exists but trackRows empty" and trigger the same fetchAndPopulate the cold-cache path uses. Drift watch re-emits with populated tracks. - 10s timeout on the API fetch + diagnostic prints so any failure surfaces in logs. While here, fix two adjacent issues: - Wipe + re-insert this playlist's track positions on every fetch so server-side deletions actually propagate. Without the wipe, removed tracks would linger in drift forever. - Write the artist + album rows referenced by the fetched tracks into cachedArtists / cachedAlbums (deduped). Without this, the joined artistName/albumTitle columns in the playlist track rows surface empty. Cover art for system playlists is a separate issue — server emits coverUrl but it may be empty for system mixes; PlaylistCard falls back to the queue_music icon. Will tackle in a follow-up.