772a52b23e
android / Build + lint + test (push) Successful in 3m58s
The 03:00 system-playlist rebuild (playlist.system_rebuilt) re-pulls Home, and refreshIndex() rewrites every section delete-then-insert — so all 7 rows + the Playlists row visibly collapse to empty, refill with skeletons, then pop in per-tile as metadata hydrates. Read as a lot of busy on-screen movement. Raise an "Updating your mixes…" veil for automatic refreshes only (daily rebuild + reconnect re-pull): HomeViewModel.isUpdating, driven by a new refreshBehindVeil() the event/recovery collectors call in place of refresh(). It holds through the pull plus a short settle so hydration lands behind the veil, then wipes off. Manual pull-to-refresh keeps its PullToRefreshBox spinner; cold start keeps the skeleton. The veil is a near-opaque, background-tinted overlay that wipes in from the left and swallows taps while raised. Extracted HomeStateCrossfade so HomeScreen stays under detekt's LongMethod. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>