c08f4ace80
The Storage card has been showing "0 B" for users who only stream (never explicitly pin or download an album). usageBytes() summed SUM(size_bytes) from audio_cache_index — but the streaming path through audio_handler writes files via LockCachingAudioSource without ever inserting an index row, so the index undercounts (often to zero) for normal use. Walk the cache directory instead. Catches everything on disk: manually pinned tracks (registered in the index), stream-cached tracks (LockCaching), partial downloads. Falls back gracefully when a file is racing against concurrent writes / deletes. Eviction still operates on the index (it needs the source/recency metadata to pick eviction order). Stream-cached files aren't subject to eviction today — separate problem; addressed when we wire a download-complete hook from LockCaching back into the index.