8d466ebdd5
The 404 on tapping the For-You tile traced to stale drift rows. BuildSystemPlaylists rotates UUIDs on every rebuild, so old For-You / Songs-Like ids accumulate in cachedPlaylists. The list provider's fetchAndPopulate was only doing insertOrReplace, which adds new rows but never removes the obsolete ones — so the home tile renders 8 playlists when the server only knows 4, and 4 of those tiles 404 on tap. Two fixes: playlistsListProvider.fetchAndPopulate now reconciles. After fetching the fresh list, deleteWhere any user-owned drift row whose id isn't in the fresh response, then upsert the fresh set in the same batch. Public-from-others rows are left alone — they're not keyed by ownership and we don't want to drop someone else's public playlist just because the current user's response didn't enumerate it. Operates inside the existing batch so it's atomic. playlistDetailProvider.fetchAndPopulate now treats a DioException 404 as "this row is stale": delete the cachedPlaylists + any cachedPlaylistTracks rows for this id, return false so the UI yields emptyDetail. The next render of the home row sees the row gone and the tile disappears, completing the cleanup. Side note: every system-playlist rebuild discards drift rows for the just-evicted UUIDs and writes the new ones. That cycle's been silently churning since system playlists shipped — this is the first time the cleanup actually runs.