d8459a2674
playArtist() previously swallowed all exceptions with a comment about a 'future refinement' — if the tracks fetch failed or the artist had no playable tracks, the button looked broken with no feedback. Now: ArtistDetailViewModel exposes a transientMessages Flow backed by a buffered Channel. playArtist sends "Couldn't start playback: <reason>" on Throwable and "No tracks to play for this artist." when the result is empty. ArtistDetailScreen collects the Flow into a Scaffold-level SnackbarHost so users see the failure inline instead of tapping a dead button repeatedly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>