Playing an undownloaded episode "did nothing": while the background warmup cache
is active (≈always), shouldDeferToOfflineCacheUI suppressed every
"Downloading…/not downloaded" banner — so the offline "not downloaded" message
and the stream-mode on-demand download both ran invisibly, looking frozen.
- ensureLocalCopies now always sets actionMessage for the on-demand playback
fetch (it's the user's own play action, not the warmup) instead of deferring.
- LibraryView no longer filters those messages (it has no separate download UI;
PlayerView keeps its suppression since it has a dedicated dock strip).
- awaitDownload reports live progress via onStatus, so a stream-mode fetch that
routes through the priority lane (behind the warmup) shows a moving
"Downloading <ep> to play… N%" banner instead of going silent after "Prioritized".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>