e6bf99f580
Closes audit v2 #17. App-scoped singleton observes PlayerController.uiState, plucks queue[queueIndex + 1].coverUrl, dedups, and fires Coil's enqueue to warm the memory + disk cache. Fire-and-forget — the Disposable is discarded since the cache write happens on the loader's background thread regardless. Wired via the existing construct-the-singleton trick in MinstrelApplication. Track changes now hit a cache (cover snaps in, dominant-color gradient transitions cleanly) instead of the network. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>