All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Opt-in cookie-set management with file import and embedded browser capture
- Domain-based cookie resolution for metadata requests and downloads
- Security warning before embedded browser sign-in
- Unit test coverage for cookie storage, parsing, capture, resolution, and download integration
- Updated Android build plugins, Kotlin, KSP, Dagger, Hilt, Coil, Compose BOM, Firebase BOM, Byte Buddy, and Gradle wrapper versions
- Resolved cookies at execution time so background work uses current cookie data
- Corrected embedded browser cookie handling, user agent matching, and fallback navigation
- Hardened cookie imports and download handling for missing or nullable inputs
- Updated About screen external links and social link presentation
- Prepared localization resources by separating fixed, non-translatable values
- Updated AndroidX Lifecycle, Compose BOM, Firebase BOM, and Gradle wrapper versions
- Added worker unit test coverage for download and cleanup background work
- Corrected restored download scroll behavior near the top of the downloads list
- Refined background work organization by splitting scheduling and update handling into dedicated use cases
- Extracted the downloads top app bar and simplified download ID and SHA-256 utility handling
- Removed redundant manual WorkManager initialization and updated release artifact task naming
- Updated Firebase BOM and Byte Buddy and KSP build dependencies
- Added missing divider sizing to shared Refinery dimens
- Removed the unused
PAUSEDdownload status and simplified related download ordering and UI handling - Updated the Compose BOM and Gradle wrapper
- Hardened resumable download requeue recovery and skipped downloads that already have tracked running work
- Corrected combined delete success reporting when related cleanup rows are already missing
- Scoped
Retry failedto visible, non-pending downloads that match the current filter - Reordered Firebase property application in the app Gradle configuration
- Selected download size in the downloads selection app bar
- Improved internal UI component and theme organization
- Updated build and test dependencies
- Improved the share target label shown by the system
- Hardened duplicate and orphan download cleanup to better protect active downloads
- Simplified downloads list auto-scroll behavior around newly visible and restored items
- Preserved the search cursor position when the downloads query is trimmed
- Simplified automatic app update scheduling and legacy periodic work cleanup
- Preserved the legacy default swipe directions when swipe action preferences are missing or invalid
- Unified swipe action fallback handling to use typed configured defaults consistently
- Configurable left and right swipe actions for downloads
- Swipe action settings in the Settings screen
- Resources links on the About screen
- Section icons and a reusable header component for Settings
- Download retry analytics events
- Unit tests covering swipe action mappers, download update use cases, and downloads-with-metadata flow handling
- Refined swipe threshold handling and swipe state behavior in the downloads UI
- Extracted shared YoutubeDL client and download work scheduler integrations
- Clarified app update strings and shared artifact rename task setup
- Updated Kotlin, Android Gradle Plugin, Gradle wrapper, Compose BOM, and Firebase BOM
- Reused the shared main dispatcher rule consistently across unit tests
- Swipe actions now trigger more reliably after crossing the threshold
- Swipe state now resets correctly when a download's seen state changes
- Archived downloads screen with archive and unarchive actions
- Persisted archived state for downloads
- Unit tests covering archived downloads, restore scrolling, and hash formatting
- Refined download and archived download navigation behavior
- Reworked update toast handling for more consistent UI feedback
- Suppressed completion notifications and toasts for archived downloads
- Updated theme surfaces and top app bar styling
- Updated Android Gradle Plugin, Compose BOM, and Navigation Compose
- Configured the Gradle daemon JVM toolchain
- Restored items now scroll back into view more reliably
- SHA-256 hash formatting is now locale-stable
- Share action in download notifications
- Download metadata refresh flow, loading state in the downloads UI, and a dedicated background refresh worker
- Download progress text format refinement
- More reliable thumbnail writes during metadata refresh handling
- Updated compileSdk and targetSdk to 37
- Updated Android Gradle Plugin, Gradle wrapper, and Firebase BOM
- Active download notifications with thumbnail support and direct notification actions for stopping individual downloads
- Available update notification actions with cleanup handling and install flow integration
- Stop all downloads action in the downloads UI
- Retry failed downloads action with scroll-to-top behavior
- Delayed pending-delete worker flow for individual downloads
- Runtime initialization for YoutubeDL with reported output path support
- Unit tests covering notification action helpers and update scheduling
- Refined downloads screen visuals, progress behavior, install update flow, and conversation item animations
- Reworked download and update scheduling around WorkManager periodic and trigger-based jobs
- Simplified foreground notification handling and reorganized notification action infrastructure
- Improved background work enqueueing, downloads filtering, and delete-check coordination
- Standardized youtube-dl output handling, runtime setup, and logging
- Updated Compose BOM, WorkManager, and ByteBuddy dependencies
- Notifications are now cleared correctly when retrying, marking downloads as seen, and cleaning up update state
- Download retries preserve foreground notification state more reliably
- YoutubeDL output file paths are now resolved more reliably without fragile stdout parsing
- Pending delete flow for downloads with swipe dismiss and undo support
- Restore animations for downloads brought back from pending delete
- Bulk delete handling that distinguishes between visible and hidden selected downloads
- Bulk seen and unseen actions for selected downloads
- Mark unseen action on the Download screen
- Unit tests covering repositories, mappers, and utility helpers
- Refined downloads list scroll behavior and item click handling
- Completed downloads are marked seen when their Download screen page becomes visible
- Unified download update use cases to support batch operations
- Extracted and refined pending delete snackbar handling
- Aligned data layer naming and set explicit surface colors on Material
Surfacecomponents - Updated Kotlin, Mockito, and Firebase BOM versions
- Cleaned up README formatting
- Corrected index bounds checks when resolving the next selected download
- Reset swipe state correctly when exiting downloads selection mode
- Download progress reporting for app update downloads
- Unit tests covering download, downloads, about, settings, and updates ViewModels
- Update downloads now validate cached and completed APK sizes before reuse or install
- Refined download selection behavior and downloads list auto-scroll handling
- Optimized Downloads and Download ViewModel flow collection and dispatching
- Made loading and error state alignment configurable
- Updated Core KTX, DataStore Preferences, Compose BOM, and Activity Compose versions
- Replaced singleton Room database setup with a Hilt-provided builder module
- Refined About screen navigation by switching from StateFlow state to SharedFlow events
- Simplified download paging and separated page-level UI data flow
- Extracted daily work schedule delay calculation into a reusable utility
- Updated Android Gradle Plugin to 9.1.0
- Refined navigation handling on the About screen
- Build number can now be long-pressed to copy the version name
- Tapping the build number opens the app’s system info screen
- Updated Compose, Coil, Firebase, Dagger, and Android Gradle Plugin versions
- Disabled automatic app backup handling
- Search support on the Downloads screen
- Empty state when no downloads match the search query
- Improved search interaction and input handling on the Downloads screen
- Refined selection behavior when multi-select mode is active
- Updated Compose and Activity Compose dependency versions
- Prevented issues caused by excessively long search queries
- Restored the available update banner on the downloads screen
- Standardized spacing, icon sizes, and settings item layout
- Refined settings interaction feedback and shape usage
- Refactored internal mappers, workers, and apply-related logic
- Upgraded build tooling, Gradle, AGP, Hilt, and NDK configuration
- Updated README metadata and supported sites info
- Updated Hilt, Compose, and Firebase dependency versions
- Download pager refactored to remove direct ViewModel coupling
- Download selection and pager position now driven explicitly by download ID
- Download screen pager logic simplified and made more predictable
- Pager state desynchronization when switching between downloads
- Multi-select support for downloads
- Select all action in the downloads overflow menu
- Bulk delete actions with undo for selected downloads
- Completed download timestamps shown in the download UI
- Detailed completed-at metadata on the Download screen
- Automatic duplicate download deletion setting
- Deduplication of downloads using metadata (source and video ID)
- SHA256 hash support for downloaded videos
- Background workers for bulk deletion and duplicate cleanup
- Download deletion moved fully to WorkManager with expedited handling
- Download side effects refactored out of ViewModels into explicit events
- Download screen layout, spacing, and dimens usage standardized
- Duplicate handling centralized around metadata and hash-based workers
- Download database schema updated to support deduplication and hashing
- Download list scrolling behavior refined and made more predictable
- Reduced download action overlay scrim opacity to improve thumbnail visibility
- Audio download failures no longer abort video downloads
- Auto-scroll behaviour fixed when new items are queued
- Missing or partial video metadata handled safely without crashes
- Download item interaction correctly disabled during delete undo snackbars
- Snackbar and delete state no longer restored incorrectly after navigation
- Long status text now ellipsized to prevent layout overflow
- Correct pluralization in delete downloads foreground notifications
- Download failures caused by excessively long filenames from certain sources
- Safer filename truncation based on UTF-8 byte size to avoid filesystem limits
- Preserved filename placeholder templates while ensuring generated filenames remain valid
- Updated Kotlin to KSP versions
- Improved downloaded video and audio filename templates
- Improved thumbnail naming and resolution handling
- Simplified and clarified save location toast messages
- Primary download action icon now uses a white tint
- Seen state tracking for completed downloads
- Visual indicator for unseen completed downloads in the list
- Completed downloads now visually stand out until opened
- Download title styling updated for unseen completed items
- Wifi-only policy logic refactored into a combined use case package
- App update and dependency update toasts are now shown only when the app is in the foreground
- “Already up to date” feedback is now shown when no update is available
- Thumbnails are now shown on downloads
- Improved how media metadata and authorship information is written to downloaded files
- Updated Compose and Activity Compose libraries
- Small wording and branding text refinements
- Reduced metadata conflicts when processing and merging media files
- Multi-download pager on the Download screen, allowing navigation between multiple downloads
- Ability to view and navigate between multiple downloads within a single Download screen
- Per-download media selection with independent video and audio state during a session
- Download screen reworked to use an ordered, id-driven pager model
- Download ViewModel refactored to aggregate per-download state and metadata
- Layout, spacing, and elevation standardized across download-related screens
- Extracted reusable Copyright component for About screen
- Updated Android Gradle Plugin to 8.13.2
- Updated Firebase BoM to 34.7.0
- Delete and retry behavior in the download pager
- Selected media now persists per download within the current session
- Snackbar undo now scrolls to the top when restoring the first item in the list
- Improved padding consistency across download lists and pager pages
- Improved contrast by setting
onPrimarycolor to white in both light and dark themes
- Dependency update flow improved with clearer toast messages.
- Updated dependencies and refined JNI debug symbol handling.
- Package replace now properly resets update state and requeues pending downloads.
- Media duration now shown in the download screen
- Media file extensions are now stored for both video and audio
- Duration is now saved as part of download metadata
- New, cleaner split between metadata and progress in the download UI
- Download UI structure reorganized for better clarity
- Download screen updated to use the new UI layout
- Extension pill component renamed and polished
- Database schema upgraded with a new migration
- Audio file extensions now detected correctly
- Device-to-device transfer fully enabled for app data
- Updated README and in-app intro text
- Refined phrasing in intro copy
- Renamed downloads SQL view and added timestamp sorting
- Migrated database to version 3
- Replaced custom Action Icon Button with standard Icon Button in Download screen.
- Updated Android Gradle Plugin to 8.13.1
- Update-check workers now record timestamps only after completion
- Removed early timestamp writes during worker execution
- Split video and audio files into their own database tables
- Weighted progress display for combined video/audio downloads
- Media switcher on the Download screen to toggle between video and audio actions
- File extension pill directly on each download
- One-time “Check now” button for dependency updates
- New toast messages for dependency checks (“Done” / “Already up to date”)
- Mock data seeding for debug builds
- Refactor of Download Worker with clearer phase handling and more accurate progress
- Simplified database and repository layers around media handling
- Refined update worker scheduling and dependency update flow
- Smarter handling of duplicate file saves with clearer messages
- Polished download and update screen visuals
- Duplicate file save toast now shows the file name and path instead of “file exists” message
- Safer directory creation and file path management during downloads
- More consistent behavior between audio and video downloads during play, save, and share actions
- “Last checked” timestamps for app and dependency updates
- Saved and restored last update check times automatically
- Refined updates screen layout and spacing
- Standardized icon sizes and switch styling
- Improved clarity between update info and settings
- More reliable update checks with retry and backoff handling
- Cleaner network handling and logging in update workers
- Foreground download notifications now show progress and estimated time left
- Content descriptions and error messages localized
- Consistent app spacing, sizes and elevations
- Simplified download screen layout and button behavior
- Updated Firebase components
- Polished overall design and spacing in downloads, download and settings
- Updates screen with auto update options and manual check
- Update notification now launches installer when tapped
- Updated Kotlin and KSP
- General UI and layout improvements
- Improved overall performance and stability
- Notification for available updates
- New “Updates” notification channel and group for update alerts
- Active downloads channel renamed to “Active tasks”
- Initial release.