Listens to mediaItemProvider + cacheSettingsProvider. On track change
(or settings change), computes the [currentIdx, currentIdx + N] window
in the queue and pins each uncached track via AudioCacheManager with
source: autoPrefetch.
Window N comes from cacheSettingsProvider.prefetchWindow (default 5,
configurable in Settings → Storage card).
Smoke-test only at the unit level — real coverage via on-device pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>