947d4401a6
artistProvider becomes a StreamProvider backed by drift's cached_artists watch(). Empty + online triggers REST fallback; populates drift; watch re-emits. Empty + offline yields a sentinel ArtistRef(id: '', name: ''); surfaces should already check state.value?.id.isNotEmpty. AsyncValue<ArtistRef> shape unchanged so .when callsites keep working. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>