Features
- Storage management: per-bucket size tracking, quota monitoring with near-quota warnings, one-click cleanup of all stored data, and storage summary in downloads and settings views.
- Duration estimation: fetch playlist durations from EXTINF tags and display expected download sizes per job.
Fixes
- Fixed race condition in bucket metadata tracking under concurrent fragment writes (serialized per-bucket updates).
- Fixed
deleteBucketremoving data from cache before IndexedDB deletion succeeds, which could orphan invisible data. - Fixed
cleanupSuccessreducer computingavailableBytesfrom potentially-unsetquotaBytes. - Fixed
measureBucketUsagenot closing the database on error and using incorrect transaction completion pattern. - Fixed
cleanup()skipping remaining databases when a single deletion fails. - Fixed
InlineConfirmdismissing the confirm buttons before the async cleanup operation completes. - Added null guards in
jobsSlicereducers to prevent crashes on stale job IDs after cleanup. - Added descriptive error messages to bare
throw Error()calls in IndexedDB operations. - Added concurrency limit (4) to
fetchLevelDurationEpicto prevent unbounded parallel fetches.
Tests
- Added 23 integration tests for storage epics (
fetchStorageStatsEpic,autoRefreshStorageStatsEpic,cleanupStorageEpic). - Added 13 unit tests for storage use-case edge cases and
storageSlicereducers.