All notable changes (starting from v1.7.3) to stable releases will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Dedicated "More Tools" Page — Brand new centralized tools hub accessible from the navigation drawer and quick-access toolbar on the home screen
- Home Screen Quick-Access Toolbar — Added instant 1-tap shortcut icons on the main home screen to jump directly to dedicated utilities
- Batch URL Import (Custom Playlist) — Download multiple YouTube videos & audios simultaneously as a custom playlist with quality selection, animated color transitions, live URL line counter, paste success animations, and haptic feedback
- Thumbnail Download Tool — Dedicated tool to extract and download high-resolution video thumbnails with image format conversion options (PNG / WebP / JPG)
- Video Info Download Tool — Download full video metadata (title, description, tags, view count, upload date) as structured
.txtor.jsonfiles with saved metadata management - Comment Download Tool — Extract, download, and manage YouTube video comments as readable text or JSON files
- Interactive Tool Cards — Added long-press action sheets, info dialogs, and reordered grid layouts for easier navigation
- Spotify-Style Swipeable Sheet — Switch between downloaded item details seamlessly by swiping left or right on the details bottom sheet
- Smooth Pager Transitions — Redesigned pager container to eliminate height flickering and improve item navigation responsiveness
- Removed Docs & Thumbnail Options from Dialogs — Consolidated documentation and thumbnail downloads into their dedicated "More Tools" pages, cleaning up
DownloadDialogV2andFormatPage - Format Page Enhancements — Added grid/list layout toggle, selection summary subtitle, M3
SegmentedButtoncontrols, compact format cards, soft borders, and animated chip transitions
- Battery Optimization Re-Arming — Centralized OEM detection (MIUI/HyperOS, ColorOS, iQOO, Samsung, etc.) that automatically re-prompts for battery optimization exclusions on app resume to prevent killed background downloads
- Doze Mode Wake Lock Protection — Prevents downloads from stalling in Deep Doze mode by maintaining CPU wake locks during active downloads
- Android 12+ Foreground Service Fix — Resolved
ForegroundServiceStartNotAllowedExceptionduring background execution on Android 12 and higher
- Cookie Domain Matching Fix — Properly aligns dot-prefixed domains (
.youtube.com) withincludeSubdomainsflag, fixing cookie parsing issues on subdomains - Removed Legacy Proxy Feature — Completely removed outdated Proxy settings and
ProxyManagerfrom Sealplus Extras, simplifying network handling
- Crypto Donations Page — Added dedicated Crypto Donation page with Bitcoin (BTC) wallet support, QR codes, and updated UPI payment details
- Updated Sponsors List — Added latest community supporters to
sponsors.json
- In-Memory State Pruning — Added automatic pruning of completed and cancelled download tasks from the in-memory state map, preventing memory leaks during long download sessions
- Full Cookie Paste Interface — Brand new
ManualCookieInputDialogthat lets you paste cookies directly into any profile without using the in-app browser - Three Format Support — Automatically detects and parses Netscape (.txt), JSON (Cookie-Editor / EditThisCookie), and standard Cookie Header (name=value) formats
- Import Options — Paste from clipboard with one tap, or import from a .txt / .json file on your device using the system file picker
- Live Cookie Count — Character counter on the input field shows exactly how much data you've pasted
- Format Chips — Visual assist chips (Netscape / JSON / name=value) show supported formats at a glance
- Clear Action — Trash icon button clears the field instantly, only shown when content exists
- Smart Validation — Confirm button stays disabled until a valid URL and non-empty cookie text are entered
- Icon Badge — Modern circular badge with primary container color replaces the plain icon for a polished look
- Priority Over Browser Cookies — Profiles with manually pasted cookies are used first, skipping CookieManager entirely
- Safety Notice — A prominent red warning callout (errorContainer background with WarningAmber icon) is displayed inside the paste dialog
- Clear Message — Warns that using your personal Facebook or Instagram account cookies may get the account banned
- Recommendation — Strongly advises using a throwaway or secondary account for downloading
- Two-Layer Bypass — Implements a sophisticated two-layer approach to bypass Meta's (Facebook/Instagram) bot detection:
- Layer 1 (Sec-CH-UA Header): Uses
UserAgentMetadataAPI (WebView 112+) to rewrite the User-Agent client hints — replaces "Android WebView" brand with "Google Chrome" while preserving version numbers, preventing server-side detection viaSec-CH-UAheaders - Layer 2 (JavaScript Runtime): Injects an
ANTI_DETECTION_SCRIPTviaDocumentStartScriptAPI that shimswindow.chromewith full mock objects (app,runtime,loadTimes,csi), setsnavigator.webdriver = false, patchesnavigator.languages, and overridesnavigator.userAgentData.brandsas a JS fallback
- Layer 1 (Sec-CH-UA Header): Uses
- Fallback Support — On older WebView versions without
DocumentStartScript, the script is injected viaonPageStartedcallback - Transparent Background — WebView background changed to transparent to prevent white flashes on dark-themed sites
- Popup Window Handling — WebView now supports
window.open()andtarget="_blank"popups viasetSupportMultipleWindows(true)andWebChromeClient.onCreateWindow - Popup Overlay — Popups render inside the app as a closeable overlay with its own
WebView, keeping you in the login flow - Back Button Priority — Back press closes popup first, then navigates the main WebView back, then dismisses the page
- Cookie Sync — Cookies are flushed on every
onPageFinishedand before navigation, ensuring login state is preserved
- Cookie Storage Rewrite — Cookie reading completely rewritten from direct SQLite database access to
CookieManager.getCookie()API, eliminating database path issues across Android versions - HttpOnly & Expiry Support —
Cookiedata class now tracksisHttpOnlyflag and expiry timestamps; expired cookies are automatically skipped - Chromium Timestamp Conversion — Added
chromiumTimeToUnixTimestamp()for accurate expiry comparison - Lifecycle Auto-Refresh — Cookies now refresh automatically every time the screen resumes (ON_RESUME lifecycle event), using
LaunchedEffect(cookieRefreshKey)instead of the oldDisposableEffect(shouldUpdateCookies)pattern - Cross-Profile Deduplication — Cookie list deduplicates by
domain|namevia HashSet when reading from multiple profiles - Crash-Proof Startup — Cookie file write at startup wrapped in
runCatchingto prevent disk-full crashes - Manifest Update — Added
<queries>block with OEM package declarations for Android 11+ package visibility compliance
- Save Video Metadata as Text — New "Download Docs" option that saves video title, uploader, upload date, duration, source URL, tags, and full description as a
.txtfile alongside your download - Automatic Workflow — After download completes,
DownloadUtils.writeDocsTextFile()creates the file in aSealPlus/docs/subdirectory and shows a success toast - Smart Toggle — Toggle available in both DownloadDialogV2 and FormatPage; when enabled without selecting a format, tapping download directly saves docs without a video file
- Format Reset — Suggested format selection resets automatically when docs mode is switched on/off
- Format Page Integration — FormatConfig.downloadDocs flag, FilterChip toggle, overridePreferences passed to TaskFactory
- Persistence Removed — Download docs toggle is session-only (defaults to false each time), keeping the dialog clean
- Enhanced Retry Settings — New
enableRetryOptions()extension onYoutubeDLRequestadds comprehensive retry configuration:--retries=10,--fragment-retries=10,--extractor-retries=3,--file-access-retries=3
- Exponential Backoff —
--retry-sleepuses HTTP exponential backoffexp=1:120and fragment-level backoffexp=1:60to prevent HTTP-429 rate-limit escalation - Extended Timeouts — Info-probe socket timeout increased from 5s to 15s; retry limit increased from 1 to 3
- Aria2c Protocol Scoping —
--downloaderscoped tohttp,https,ftp,ftps:libaria2c.soinstead of all protocols, improving compatibility - External Downloader Args — Added
--file-allocation=none,--max-tries=5,--retry-wait=2,--console-log-level=warnfor more reliable aria2c operation - Concurrent Fragments —
--concurrent-fragmentsnow works alongside aria2c whenconcurrentFragments > 1 - Network Availability Check — FormatPage verifies network connectivity before allowing download to proceed
- MP4-Only Filter — New toggle that filters the format list to show only MP4-compatible formats (video:
mp4, audio:m4a); enabled by default, gracefully falls back to unfiltered list if filtering would leave nothing - Coil 3 OkHttp Network Fetcher — Integrated
OkHttpNetworkFetcherFactoryfor Coil 3 with a desktop Chrome 124 User-Agent interceptor, improving thumbnail and artwork loading reliability - Implausible Size Filtering — New
FormatValidator.filterImplausibleVideoSizes()removes formats with unrealistically low bitrates for their resolution (e.g., 4K < 1500 kbps), with per-format debug logging
-
Download Dialog V2 Redesign
ConfigurePagenow usesverticalScrollwithwindowInsetsPaddingfor proper keyboard handling- Section titles upgraded to
TextwithlabelLarge/primarystyling replacingDrawerSheetSubtitle FilterChipcomponents redesigned withRoundedCornerShape(50dp)and 36dp height for modern pill shapeFlowRowused for additional settings, max 3 items per row with 8dp spacingExpandableTitleconverted to animatedSurfacecard withsurfaceContainerLow, 12dp rounded corners, and animated rotation arrowSingleChoiceItemredesigned withprimaryContainerselection, circular check icon, semi-bold title fontDownloadTypeSelectionGroupusesSingleChoiceSegmentedButtonRowfor 3-type selectionActionButtonsconverted toRowwith weighted cancel (1f) and action (2f) buttons, both pill-shaped 50dp- Removed unused Cancel icon from action buttons; cancel text constrained to single line
-
Battery Optimization Dialog
- Centralized in new
BatteryUtilobject with OEM-specific detection for 8 manufacturers (OPPO, Realme, Xiaomi, Vivo, Huawei, Samsung, Motorola, Nothing) - OEM-specific intent builders for battery settings (MIUI/HyperOS power keeper, OPPO/ColorOS, Vivo/iQOO, Huawei/Honor, Samsung)
isIgnoringViaAppOps()checks both PowerManager and AppOps for accurate detection- Xiaomi-specific: early return
falsebecause MIUI/HyperOS reports false positives; added HyperOS/MIUI 16+ and MIUI 12-15 intent targets - Dialog dismissal now persisted via
BATTERY_DIALOG_DISMISSEDpreference — once dismissed, dialog won't show again - Dynamic OEM-specific description text loaded via
BatteryUtil.getBatterySettingsDescResId() - Updated Xiaomi battery settings instructions in strings with MIUI/HyperOS-specific steps
- Centralized in new
-
Full-Width Settings LazyColumn Layout
- Settings page now uses a full-width
LazyColumnwith consistentPreferenceItem+ trailing chevron icons for every navigation row - Added visual grouping with 16dp
Spacerdividers between logical sections: Download → Customization → Extras - Sponsor card now uses
primaryContainer/onPrimaryContainercolor pairing for a prominent, themed appearance
- Settings page now uses a full-width
-
Card-Based About Page Redesign
- About page completely rebuilt with a 2-column grid of
CommunityCardcomponents — each card shows an icon, title, and description in a cleansurfaceVariantcontainer with 12dp rounded corners - New Website card linking to
sealplus.in - Auto-Update toggle now rendered as a standalone
Cardwith aSwitchcontrol, separate from the community links grid - "View Onboarding" moved to a dedicated card with chevron icon
- Version & package name displayed as a centered footer caption
- Removed old
PreferenceItem,PreferenceSwitchWithDivider, and clipboard-based package copy
- About page completely rebuilt with a 2-column grid of
-
New SettingsGridItem / SettingsGridSwitchItem Composables
- Added
SettingsGridItemandSettingsGridSwitchItem— card-based composables with icon, bold title, description, and optional switch - Designed for use in future settings sections that benefit from a grid/card layout
- Added
-
Permissions Replaced with ActivityResultContracts
- Removed
accompanist-permissionsdependency; allrememberPermissionState()usages migrated torememberLauncherForActivityResult(ActivityResultContracts.RequestPermission()) - Affected pages:
DownloadPage,DownloadDirectoryPreferences,GeneralDownloadPreferences - Permission checks now use
ContextCompat.checkSelfPermission()for consistency
- Removed
-
WebView Replaced with Platform AndroidView
- Removed
accompanist-webviewdependency; Cookie profile WebView page migrated to rawWebViewviaAndroidViewfactory - Page title tracked via
WebChromeClient.onReceivedTitlecallback withmutableStateOf
- Removed
-
Pager Indicators Replaced with Custom Row
- Removed
accompanist-pager-indicatorsdependency;HorizontalPagerIndicatorreplaced with manualRow+Boxdots withCircleShapeclip and proper coloring
- Removed
-
Accompanist Dependency Fully Removed
- Deleted
bundles.accompanistfrom version catalog and all three accompanist library entries
- Deleted
-
Gradle 9.5.1 & AGP 9.2.1
- Upgraded from Gradle 8.13 / AGP 8.13.2 to Gradle 9.5.1 / AGP 9.2.1
- Removed
com.android.build.api.variant.FilterConfigurationdirect import (now fully qualified)
-
Kotlin 2.3.21 with K2 Compiler
- Upgraded from Kotlin 2.0.21 → 2.3.21
- KSP updated to
2.3.9; Kotlin Compose compiler plugin aligned kotlin-androidplugin removed from all modules (now implicit via AGP)
-
Compose BOM 2026.05.01
- Upgraded from 2025.01.00 → 2026.05.01
- Added
androidx.compose.materialto the compose bundle - Fixed breaking API changes:
SheetStateconstructor →rememberModalBottomSheetState(),ExposedDropdownMenuDefaults.outlinedTextFieldColors()→textFieldColors(),LocalOverscrollFactoryremoved
-
Coil 3 Migration (io.coil-kt.coil3)
- Upgraded Coil 2.7.0 → 3.4.0 with group ID changed from
io.coil-kttoio.coil-kt.coil3 - Imports updated from
coil.compose→coil3.compose ImageRequest.Buildersimplified for Coil 3 API
- Upgraded Coil 2.7.0 → 3.4.0 with group ID changed from
-
Android SDK 37 (Android 17)
- compileSdk / targetSdk upgraded from 36 → 37
- All GitHub workflow actions updated (
android-actions/setup-android@v4) - GitLab CI image updated to
mobiledevops/android-sdk-image:34.0.1
-
Other Version Bumps
- Room 2.6.1 → 2.8.4 | Koin 4.0.0 → 4.2.1 | MMKV 1.3.12 → 1.3.16
- Coroutines 1.10.1 → 1.11.0 | Serialization 1.7.3 → 1.11.0 | ktfmt 0.20.1 → 0.26.0
- AndroidX Core 1.17.0 → 1.19.0 | Activity 1.12.2 → 1.13.0 | Navigation 2.9.6 → 2.9.8
- Material 1.12.0 → 1.14.0 | Graphics 1.0.4 → 1.1.0 | ConstraintLayout 1.1.0 → 1.1.1
- datetime 0.6.1 → 0.8.0 | Espresso 3.6.1 → 3.7.0 | TestExt 1.2.1 → 1.3.0
- Added
androidx.documentfile:documentfile:1.1.0 - Removed unused
kotlin-androidplugin alias
-
LockScreen Biometric Prompt Fix
- Added
biometricShownflag to prevent repeated biometric prompts on recomposition - Added
context.isFinishingguard before calling biometric prompt callback biometricShownproperly reset after authentication completes, errors, or fails — preventing stale state
- Added
-
MainActivity LockScreen Deferred Until Onboarding
- Lock screen evaluation moved from
rememberinitializer toLaunchedEffect(showOnboarding)to prevent lock screen from flashing during onboarding flow
- Lock screen evaluation moved from
-
QuickDownloadActivity Crash Fix
- Added early
returnafterfinish()whensharedUrlCachedis empty, preventing continued execution on a finishing activity
- Added early
-
DownloaderV2 NetworkCallback Memory Leak Fix
- Network callback extracted from
initblock to a named fieldnetworkCallbackfor proper unregistration - Added
cleanup()method that unregisters the callback viaApp.connectivityManager.unregisterNetworkCallback() cleanup()called on crash (GlobalContext.getOrNull()?.get<DownloaderV2>()?.cleanup()) andonLowMemory()
- Network callback extracted from
-
App.onLowMemory Handling
- Added
onLowMemory()override that callsDownloaderV2.cleanup()for early resource release under memory pressure
- Added
-
SponsorUtil OkHttpClient Leak Fix
- Removed singleton
httpClientfield (was holding proxy reference forever) getClient()now creates a freshOkHttpClientper call, preventing leaked connections
- Removed singleton
-
NotificationUtil Redundant Cancel Removed
- Removed redundant
notificationManager.cancel(notificationId)beforenotify()in error notification builder
- Removed redundant
-
CrashReportActivity Cleanup
- Removed
onDestroy()withfinishAffinity()to prevent potential IllegalStateException during activity teardown
- Removed
-
DatabaseUtil Destructive Migration Fallback
- Added
fallbackToDestructiveMigration()as a safety net for unexpected schema states
- Added
-
UpdateUtil checkForUpdate Made Safe
- Changed to
suspend funrunning onDispatchers.IOwithwithContext+runCatchingto prevent ANR from network calls on main thread
- Changed to
- Consistent Output File Names
- Moved APK naming logic from deprecated
applicationVariants.allblock to theandroidComponents.onVariantscallback - Output file format:
SealPlus-{version}-{abi}.apk(e.g.SealPlus-2.8.0-arm64-v8a.apk) - Removed redundant
FilterConfigurationimport (fully qualified inline)
- Moved APK naming logic from deprecated
- Debug Build Cleanup
- Removed
resValue("string", "app_name", "Seal Plus Debug")from debug build type - Removed root
build.gradle.ktssuperfluouskotlin.androidplugin declaration - Added
android.disallowKotlinSourceSets=falseingradle.properties
- Removed
-
Complete sealplus.in Redesign
- New hero section with refined positioning and SEO-optimized structured data (SoftwareApplication + AggregateRating schema)
- Support CTA section with statistics cards and donation call-to-action
- Step-by-step How to Install guide with
HowToschema markup - Seal Plus vs Seal app comparison table with responsive mobile layout
- FAQ accordion using native
<details>elements with custom styling - Navigation now links to Support, Contact, and Privacy pages
- Updated OG tags, meta descriptions, and keywords for better search visibility
-
New Support Page
- Dedicated
/support.htmlwith donation options: UPI, PayPal, GitHub Sponsors - Section explaining why support is needed, how contributions help
- Live sponsors grid populated from
sponsors.json
- Dedicated
-
New Contact Page
/contact.htmlwith contact form (Formspree integration), support details sidebar, and highlights section- Average response time indicator
-
Complete CSS Rewrite
- New glassmorphism design system with CSS custom properties, dark theme, responsive breakpoints
- Loading skeletons, toast notifications, modal overlays, sponsor cards
- Accessibility improvements (reduced motion, aria labels, keyboard support)
-
Updated Sitemap & Privacy
sitemap.xmlupdated with all new pages and correct lastmod datesprivacy.htmlupdated with new cross-links
- GitHub Sponsors Integration
- Added GitHub Sponsors as a new donation option in the Support Developer page
- Links directly to https://github.com/sponsors/MaheshTechnicals for supporting development
- Updated gradient colors for the GitHub Sponsors button (bright blue to dark gray)
- Removed outdated "Buy Me a Coffee" donation option and cleaned up related constants
-
Database Schema Upgrade (v7 → v8)
- Added
videoIdfield toDownloadedVideoInfoentity for better video tracking - Enhanced download history with unique video identifiers
- Automatic migration from schema v7 to v8 with proper default values
- Added
-
Enhanced Temp File Deletion
- Improved
FileUtil.deleteTempFilesForTask()to use bothbaseNameandvideoIdfor more accurate cleanup - Temp files associated with downloads are now more reliably identified and removed
- Better handling of edge cases where files were renamed or moved
- Improved
-
Task Deletion Confirmation Dialog
- New confirmation dialog shown before deleting active download tasks
- Displays task title/URL and requires explicit user confirmation before removal
- Prevents accidental deletion of ongoing downloads
- Properly cleans up associated temp files before removing the task
-
Improved Download State Management
- Network pause state now correctly determines appropriate action (Download or FetchInfo) based on current download state
- Better handling of tasks waiting for network availability
- Fixed
waitingForNetworklogic to prevent stale states
-
PBKDF2 PIN Hashing
- PIN-based App Lock now hashes passwords using PBKDF2WithHmacSHA256 with a unique 16-byte random salt and 200,000 iterations — replacing the weak single-pass SHA-256 approach
- Existing PIN users are automatically migrated to the new secure hash on next unlock
- Industry-standard protection against brute-force and rainbow-table attacks
-
Removed Overly Broad Storage Permission
MANAGE_EXTERNAL_STORAGEhas been removed from the manifest- All download paths now work without requiring the "All Files Access" permission
-
ADB Backup Protection
- MMKV preferences (which store your PIN hash, security settings, and download preferences) are now excluded from ADB backups via
backup_rules.xml - Prevents sensitive configuration from leaking through device backups
- MMKV preferences (which store your PIN hash, security settings, and download preferences) are now excluded from ADB backups via
-
NotificationActionReceiver Secured
NotificationActionReceiveris now explicitly set toexported=falsein the manifest, preventing third-party apps from sending fake notification action intents
-
MITM Prevention on Proxy
--no-check-certificateis now automatically disabled when a proxy is active, preventing man-in-the-middle attacks when routing traffic through a proxy server
-
Replaced Embedded GitHub Token
- Sponsor data is now fetched from a public, unauthenticated JSON URL — no API token embedded in the APK
-
Proxy Security Warning Dialog
- A security warning
AlertDialogis now shown before enabling the free proxy mode, informing users of the risks of routing traffic through unknown third-party servers
- A security warning
- 30-Second Lockout on App Lock
- After 5 failed PIN attempts, the App Lock screen now shows a 30-second countdown timer before allowing further attempts
- Countdown is fully animated and stored in state surviving recomposition
-
Context Leak Fixed
MainActivityno longer overwritesApp.contextwith the Activity context — prevents memory leaks and crashes on activity recreation
-
Replaced runBlocking Calls
- All
runBlockingusages inMainActivityandQuickDownloadActivityreplaced withlifecycleScope.launch(Dispatchers.IO), preventing ANRs on slow devices PreferenceUtil.getTemplate()retry loop migrated fromrunBlockingto proper coroutine
- All
-
OkHttp Client Improvements
- Added explicit connect/read/write timeouts to the
UpdateUtilHTTP client OkHttpClientsingletons now shared acrossProxyManager,ProxyValidator,SponsorUtil, andFormatValidator— eliminates per-call thread pool churn and reduces memory pressure
- Added explicit connect/read/write timeouts to the
-
Resource Leak Fixes
SQLiteDatabaseandCursornow properly closed with.use{}blocks even on exceptionDownloadUtilarchive file now streamed line-by-line instead of fully read into memory
-
Coroutine & State Fixes
- 5-minute deadline added to
addToDownloadQueueto prevent coroutine leaks ConcurrentHashMapused forresumedProgressMapandretryCountMapinDownloaderV2to prevent race conditionsupdateJobin the updater page now held inremember { mutableStateOf }to survive recompositiondistinctUntilChangedadded andflowOnposition corrected inVideoListViewModel- Koin
get<DownloaderV2>()moved from field initializer toonReceive()body inNotificationActionReceiver
- 5-minute deadline added to
-
Error & Notification Fixes
- Error notifications now use
throwable.messageinstead ofstackTraceToString()to avoid truncated/ugly system notifications isServiceRunningflag inAppnow@Volatileand correctly reset inonServiceDisconnectedCOMMAND_DIRECTORYpath now correctly persisted when callingupdateDownloadDir- Null-safe response body handling in
UpdateUtil.getLatestReleaseanddownloadApk - OkHttp response socket properly closed in
ProxyValidator.testConnection
- Error notifications now use
-
Download & Format Fixes
av01codec removed from the unsupported video codecs blacklist — AV1 downloads now work correctlyFormatValidator.filterValidFormatsparallelized withasync/awaitAllfor faster format page loadingmakeKey()now uses a null-char (\0) delimiter to prevent hash collisions between URL+template combos- Fixed literal
"null"string being stored in download records when URL was null HomePageViewModel.updateState(Idle)now only called insideonSuccess, not on every state change- DB write moved before
StateFlow.update{}inCookiesViewModelto prevent stale UI state
-
Backup & File Fixes
- Backup filename now uses
SimpleDateFormat("yyyy-MM-dd_HH-mm-ss")for consistent cross-platform filenames importBackupcorrectly handles template import logichideItem/unhideItemnow uses atomicrenameTo()with copy+delete fallback for reliabilityFileUtil.getRealPathimproved withLog.wfor non-primary storage paths
- Backup filename now uses
-
Upgraded from Alpha to Stable Compose BOM
- Switched from
compose-bom-alphato the stablecompose-bom(Material3 1.3.1) - Resolved all breaking API changes introduced in the stable release
- Switched from
-
Fixed API Breaking Changes
SheetState: replaced deprecatedvelocityThreshold/positionalThresholdparameters withdensityinModalBottomSheetM3,ActionSheet,DownloadDialogV2, andSponsorPageTooltipDefaults: replaced removedrememberTooltipPositionProvider()withplainTooltipPositionProvider()inDownloadPageandPlaylistSelectionPageExposedDropdownMenu: replaced alpha-onlyExposedDropdownMenuAnchorTypewith stableMenuAnchorTypeinYtdlpUpdateDialog
-
Dependency Downgrades to Stable
OkHttpdowngraded from5.0.0-alpha.14→4.12.0(stable)androidx.biometricupgraded to1.2.0-alpha05for better OEM compatibility
-
Instant Recent Downloads Sync
- Replaced lifecycle-gated
collectAsStateWithLifecyclewith a composition-lifetimeLaunchedEffectcollector for the download history flow - Deletions made on the VideoList page are now reflected in Recent Downloads instantly without needing a process restart
- Added
LaunchedEffect(recentDownloads)to prune stalelocalHiddenIdsentries when DB records are removed
- Replaced lifecycle-gated
-
Real-Time Missing File Detection
- File existence for each Recent Download card is now re-checked on every
ON_RESUMEevent usingproduceStatewith alifecycleRefreshTrigger - Files deleted from the OS file manager now gray out immediately the next time you return to the home screen — no process kill required
- File existence for each Recent Download card is now re-checked on every
-
New Social Account & Sponsorship Data Classes
SocialAccount,SocialAccounts,SponsorEntity,Tier, andSponsorShipdata classes added for structured sponsor data- Sponsor page now renders richer profile information from the new model
-
Thread-Safe Sponsor Cache
- Sponsor data cache in
SponsorUtilis now protected with@Volatile+ synchronized double-checked locking - Compose state mutations dispatched to the Main thread in
SponsorPageto preventIllegalStateException
- Sponsor data cache in
- Official Sealplus Website
- CNAME configured for the official Sealplus domain
sitemap.xmladded and linked inindex.htmlandprivacy.htmlrobots.txtadded to manage web crawler access- Google site verification meta tag added
- Canonical and sitemap links updated to reflect the new domain
- Title, description, and keywords updated for Sealplus branding
Download the appropriate APK for your device:
- Universal APK: Works on all devices (recommended)
- arm64-v8a: For 64-bit ARM devices (most modern phones)
- armeabi-v7a: For 32-bit ARM devices
- x86_64: For 64-bit x86 devices
- x86: For 32-bit x86 devices
- 🔒 PBKDF2 PIN Hashing - Industry-standard 200K-iteration secure PIN protection with salt
- 🛡️ 30-Second Brute-Force Lockout - Countdown timer after 5 failed PIN attempts
- 🔐 Removed Overly Broad Storage Permission - No more MANAGE_EXTERNAL_STORAGE required
- 💾 ADB Backup Protection - MMKV sensitive data excluded from device backups
- 🚫 MITM Prevention - SSL checking re-enabled when proxy is active
- 🧹 20 Stability & Correctness Fixes - Context leak, runBlocking, timeouts, resource leaks, race conditions
- 🎨 Material3 1.3.1 Stable - Migrated from alpha BOM, OkHttp stable 4.12.0
- 🏠 Instant Home Page Sync - Recent Downloads instantly updated on deletion or file removal
- 🌐 Sponsor Data Refactor - Thread-safe cache, richer profile data
- ⏯️ Pause/Resume downloads with queue support
- 🌐 Download from 1000+ sites via yt-dlp
🔒 Hidden Content & Privacy
- Hidden Content Management System
- New Hidden Content page accessible directly from the navigation drawer
- Mark any downloaded video as hidden — it disappears from the home page and download list instantly
- Hidden files are physically relocated to a private isolated directory inaccessible from the system file manager
- Access requires PIN or biometric authentication via the existing App Lock system
- If App Lock is not set up, the app shows a clear error message guiding you to Settings → SealPlus Extras → App Lock
- Optimistic UI: the card vanishes immediately on hide action before the database write completes
-
Redesigned Format Cards
- File size and bitrate are now shown in dedicated sections on every format card
- Improved visual hierarchy for codec, resolution, and quality information at a glance
-
List View for Format Cards
- New list-style layout option for format cards in the format selection page
- Toggle it on or off from Settings → SealPlus Extras
-
Merge Audio Stream Option
- New toggle on the Format Page to merge a separate audio stream into the selected video format
- Hint text is displayed when the merge option is active so you always know what will happen
-
Removed Suggested Section
- The "Suggested" section has been removed from the format selection page for a cleaner layout
-
Download Dialog Loading State
- Loading screen in the download dialog now shows a thumbnail image alongside the progress indicator instead of a plain spinner
-
SealPlus Extras Expanded
- New format-related preference options added to the SealPlus Extras settings page
-
Auto-Retry on Network Error
- Downloads that fail due to a network drop are automatically retried up to 3 times with a 5-second delay between each attempt
- Progress text shows
Retrying (1/3)...during backoff so you always know what's happening
-
Resume Partial Downloads
--continueis now always passed to yt-dlp so interrupted downloads pick up from the partial file instead of restarting from scratch
-
WiFi-Only Mode Fully Enforced
- The network restriction setting now enforces inside the download engine itself, not just at the enqueue step
- Queued tasks automatically resume the moment a suitable network becomes available again
-
Fixed Task ID Collision
- Downloading the same URL twice with identical settings would previously overwrite the first task in the queue
- Each task now receives a guaranteed-unique ID based on timestamp
-
Active Download List Sorting
- Downloads are now sorted in a strict, stable order: Running → ReadyWithInfo → Idle → Paused → Canceled/Error → Completed
- Within each group, newer tasks appear first
- Completed tasks are shown in the active list only until they appear in the recent-downloads section — no duplicates
-
Speed & ETA on Home Cards
- Active download cards now show live speed and estimated time, e.g.
2.50 MiB/s • ETA 00:03
- Active download cards now show live speed and estimated time, e.g.
-
Merging Phase Detection
- Download cards now correctly show "Merging..." while yt-dlp is post-processing instead of staying frozen at 100%
-
Fixed -1% / 0% Progress Bug
- During the initial phase before yt-dlp reports real progress, the percentage is now hidden instead of showing
-1%orPaused 0% - Progress bar shows a smooth indeterminate/pulsing animation when no progress data is available yet
- During the initial phase before yt-dlp reports real progress, the percentage is now hidden instead of showing
- Missing File Detection
- If a downloaded file has been deleted or moved, its home page card now renders grayed out with a broken-image icon and "File no longer available" label
-
Reduced CPU Usage During Downloads
- The internal task scheduler now only fires when a task actually changes state (starts, finishes, errors, pauses) — not on every progress update
-
Reduced Battery & Storage Writes
- Full task list serialization to MMKV storage now only happens on meaningful structural state changes, cutting storage I/O to near zero during normal download progress
-
61 Languages Updated
- New
video_audio_merge_hintanddownload_and_mergestrings added across all 61 supported languages
- New
-
Build-Breaking Escape Fix
- Corrected unescaped apostrophes in Belarusian (
be), Punjabi (pa), and Ukrainian (uk) string files
- Corrected unescaped apostrophes in Belarusian (
-
Complete Hebrew Translation — thanks to @613avi
- 185 previously missing Hebrew strings have been filled in
-
Improved Turkish Translation — thanks to @mikropsoft
- Revised and improved accuracy across dozens of Turkish strings
- Added option to ignore SSL certificates for filtered networks (e.g. Netfree) — thanks to @613avi
--no-check-certificateapplied across all 5 request paths: playlist info fetch, video info fetch, video download, and both custom command execution paths
- Navigation drawer header layout polished — improved text hierarchy, spacing, and logo alignment
- Sponsors page and component architecture refactored for cleaner separation of concerns
- Removed & cleaned up unused imports across 24 source files (89 lines removed)
-
Animated Glowing "+" Logo
- The "+" in "Seal+" on the home page now features a flowing gradient animation (primary → tertiary → secondary)
- Continuous pulsing glow shadow effect for a premium, eye-catching look
- Hardware-accelerated infinite transition for smooth 60fps rendering
-
Gradient Circular Progress Indicator
- Replaced the plain loading spinner in the download dialog with a premium sweep-gradient spinner
- Rotating arc with breathing animation and smooth color shifting (primary → tertiary → secondary)
- 48dp canvas-based implementation with
StrokeCap.Roundfor modern aesthetics
-
Typewriter URL Placeholder Animation
- The "Enter URL to download" placeholder text now reveals character-by-character with a typewriter effect
- Flowing gradient brush on the placeholder text matching the Seal+ brand colors
- One-time animation on page load (50ms per character) for a clean, premium feel
-
Redesigned Navigation Drawer Header
- Center-aligned modern header layout with app logo (512×512 splash logo), "Seal Plus" title, "Download Manager" subtitle, and version badge
- Removed active/selected state highlighting from all drawer items for a cleaner look
- Reorganized drawer menu items into logical groups for better navigation clarity
-
Dark Theme On by Default
- New installations now default to dark theme instead of following the system setting
- Existing users keep their saved preference; everyone can still switch in Settings → Look & Feel
- Material Theme Color Refactor
- Refactored icon tinting across 30+ screens to use
MaterialTheme.colorSchemeinstead of hardcoded colors - Icons now use
primary,secondary, andtertiarycolors from the active theme - Ensures consistent look across Light, Dark, and Gradient Dark themes
- Refactored icon tinting across 30+ screens to use
- Custom Themed Toast Manager
- Replaced standard Android toasts with a branded themed toast system
- Toasts now match the app's Material 3 color scheme with rounded corners and proper styling
- Integrated across all activities for a unified notification experience
-
Share Intent URL Handling
- URLs shared from other apps (browsers, social media) now automatically pre-fill in the download input field
- Seamless integration — tap "Share" in any app, select Seal Plus, and the URL is ready to download
-
Navigation Route Updates
- Sponsor page navigation now redirects to the Support Developer page for streamlined user flow
- Settings toggle click behavior and icon animations improved for better UX
Download the appropriate APK for your device:
- Universal APK: Works on all devices (recommended)
- arm64-v8a: For 64-bit ARM devices (most modern phones)
- armeabi-v7a: For 32-bit ARM devices
- x86_64: For 64-bit x86 devices
- x86: For 32-bit x86 devices
- ✨ Animated Glowing "+" - Flowing gradient animation on Seal+ branding
- 🎨 Typewriter URL Placeholder - Character-by-character animated input hint
- 🔄 Gradient Spinner - Premium sweep-gradient loading indicator
- 🧭 Redesigned Navigation Drawer - Center-aligned header with logo and version badge
- 🎯 30+ Icon Theme Refactor - Consistent MaterialTheme colors across all screens
- 🍞 Themed Toast System - Branded toast notifications matching app theme
- 🔗 Share Intent Support - Pre-fill URLs from external app shares
- 🌙 Dark Theme Default - Dark mode enabled by default for new users
- ⏯️ Pause/Resume downloads with queue support
- 🌐 Download from 1000+ sites via yt-dlp
-
Aria2c Connection Control
- Added a connection count selector in Settings → Seal Plus Extras
- Choose between 2, 4, 8, 16, 32 or more simultaneous aria2c connections to maximize download speed
- Setting takes effect immediately on the next download
-
Sponsor Support Dialog Controls
- Added a dedicated Support & Sponsorship section in Seal Plus Extras
- Users can configure how often the sponsor support dialog is shown: Off, Weekly, or Monthly
- Dialog opens the Support Developer page when tapped, respects the chosen schedule, and persists timing across restarts
-
Average Speed Display
- Download Details dialog now shows the computed average download speed (e.g.
3.2 MB/s) - Derived from total file size ÷ elapsed download time for accurate reporting
- Hidden automatically for older history entries that predate this feature
- Download Details dialog now shows the computed average download speed (e.g.
-
Download Time Display
- Download Details dialog now shows total time taken (e.g.
2m 34s) - Captured as precise start-to-end duration around the actual yt-dlp execution
- Available in both the active-download details panel and the history drawer
- Stored in the database (Room migration v5 → v6, existing rows default to
-1)
- Download Details dialog now shows total time taken (e.g.
-
Clean Resolution Labels on Format Cards
- Format selection cards now show concise human-readable titles (
1080×1920) instead of raw yt-dlp format strings - Priority order: explicit width/height metadata →
Format.resolutionfield → regex-extractedWxH→ audio-only label → format ID fallback - Applied to both suggested-format items and individual format list items
- Format selection cards now show concise human-readable titles (
-
Redesigned Video Detail Drawer
- Overhauled download-history detail sheet with a modern card-based layout
- 16:9 thumbnail card with rounded corners, source-URL card with copy/open actions
- Stats grid showing Download Time and Average Speed side-by-side
- Full-width Delete (outlined, error color) and Share/Re-download action buttons
- Platform-Aware Format Selection
- Only YouTube and Reddit natively separate video-only and audio-only streams, so they continue to use the merge path (
videoId+audioId) - All other platforms serve fully-muxed video+audio streams; the default download now picks the best combined format directly via
videoAudioFormats, skipping the redundant merge step entirely - Falls back to the merge path automatically when no combined format is available
- Only YouTube and Reddit natively separate video-only and audio-only streams, so they continue to use the merge path (
Download the appropriate APK for your device:
- Universal APK: Works on all devices (recommended)
- arm64-v8a: For 64-bit ARM devices (most modern phones)
- armeabi-v7a: For 32-bit ARM devices
- x86_64: For 64-bit x86 devices
- x86: For 32-bit x86 devices
- ⚙️ Aria2c Connection Control - Tune parallel connections (2–32+) for maximum download speed
- 📊 Average Speed & Download Time - See real download metrics in the details dialog
- 🚀 Smart Stream-Merge Routing - Automatic best-format selection per platform, no redundant merges
- 🎨 Clean Format Cards - Human-readable resolution labels instead of raw format strings
- 💎 Sponsor Dialog Controls - Flexible Off/Weekly/Monthly schedule in Seal Plus Extras
- 🏎️ Aria2c Speed Boost - Up to 32x parallel connections for ultra-fast downloads
- 🔄 Retry failed downloads - One-click recovery for canceled/failed downloads
- ⏯️ Pause/Resume downloads with queue support
- 🌐 Download from 1000+ sites via yt-dlp
- Aria2c Speed Boost & Fixes
- Fixed an argument quoting issue that previously forced aria2c into a slow, single-connection fallback mode
- Doubled parallel connection limits (from 8 to 16 streams) for a massive real-world download speed improvement
- Cleaned up redundant summary interval arguments for better libaria2c.so compatibility
- Accurate Resolution Selection
- Resolved a major bug where the app would ignore the user's chosen video resolution and fall back to default quality
- Corrected internal format validation to prevent stale state captures during format list generation
- Fixed audio codec checks to ensure the exact selected resolution is properly merged and passed to yt-dlp
- Cleaner Progress Tracking
- Stripped the unnecessary
[download]prefix from yt-dlp progress text for a cleaner display in cards and active notifications - Fixed progress bar threshold logic so early download progress (0.1–0.9%) shows a real bar instead of an indeterminate spinner
- Stripped the unnecessary
Download the appropriate APK for your device:
- Universal APK: Works on all devices (recommended)
- arm64-v8a: For 64-bit ARM devices (most modern phones)
- armeabi-v7a: For 32-bit ARM devices
- x86_64: For 64-bit x86 devices
- x86: For 32-bit x86 devices
- 🏎️ Aria2c Speed Boost - 16x parallel connections for ultra-fast downloads
- 🎯 Precise Quality Selection - Reliable resolution and format merging
- 🎨 Enhanced Notifications - Cleaner, accurate progress tracking right from the start
- 🔄 Retry failed downloads - One-click recovery for canceled/failed downloads
- 💎 Sponsors feature - API integration with dynamic display
- ⏯️ Pause/Resume downloads with queue support
- 🌐 Download from 1000+ sites via yt-dlp
- Retry Option for Failed/Canceled Downloads
- Retry button - Added retry functionality in canceled or failed state download cards
- One-click recovery - Quickly restart failed downloads without re-entering URL
- Smart state management - Maintains download preferences and settings
- Error recovery - Automatically handles temporary failures
- Enhanced Details Dialog
- Resolution section - Added comprehensive resolution information in details dialog
- Direct full-length display - Details dialog now opens directly at full length for better visibility
- Improved information layout - Better organized video/audio resolution details
- Format specifications - Clear display of codec, bitrate, and quality information
- Download Speed Optimization
- Higher download speeds - Implemented advanced speed optimization algorithms
- Enhanced aria2c configuration - Optimized multi-connection download parameters
- Network efficiency - Better bandwidth utilization and connection management
- Reduced latency - Faster initial connection and data transfer start
- API Integration & Display
- Sponsors API - Integrated sponsor data fetching from API endpoint
- Dynamic sponsor dialog - Beautiful sponsor display with profile information
- Real-time updates - Sponsor list updates automatically from server
- Enhanced UI - Premium gradient design for sponsor acknowledgment
- Support recognition - Proper attribution and thanks to project supporters
- Improved download state management for retry functionality
- Enhanced dialog opening animations for details view
- Better error handling in failed download scenarios
- Optimized memory usage during high-speed downloads
- Fixed UI responsiveness in details dialog
- Improved sponsor data caching and loading
Package Name Changed: com.maheshtechnicals.sealplus
-
Pause and Resume Functionality
- Pause/Resume in three-dot menu - Control downloads from the overflow menu
- Icon controls on download cards - Quick pause/resume buttons directly on cards
- Queue support - Manage multiple downloads with proper queuing
- Progress preservation - Download progress saved when paused
- Resume from exact position - Continue downloads from where you left off
-
Concurrent Downloads Control (1-5 simultaneous downloads)
- Configurable download limits - Control how many files download at a time
- Queue management - Automatic queuing of additional downloads
- Settings location - Available in Settings → Seal Plus Extras
- Performance optimization - Better resource management with queue system
- Comprehensive Proxy System
- Auto-fetch proxies - Automatically fetch proxies by country selection
- Auto-test functionality - Test proxies sequentially until finding a working one
- Free proxy support - Access free proxies from multiple countries
- Custom proxy configuration - Add your own HTTP/HTTPS/SOCKS proxies
- Beta features - Advanced proxy management marked as experimental
-
Comprehensive Details Dialog
- File information - Name, thumbnail, size, format
- Download metadata - Path, download date, source URL
- Interactive elements - Click to copy URLs, view full paths
- Visual improvements - Better layout with gradient headers
-
Enhanced Download Status Messages
- Clear status indicators - "Fetching data", "Downloading video", "Downloading audio", "Merging"
- Real-time progress - Live updates on download phases
- Better error messages - More descriptive error information
-
Payment Integration
- UPI payment support - Support developers through UPI donations
- Multiple payment options - Various ways to contribute
- Support Developer page - Dedicated page for developer support options
-
Enhanced Sponsors Page
- Fully redesigned UI - Modern, engaging layout
- Better organization - Clear sections for different support methods
- Improved user engagement - More interactive and informative
-
Smart Permission Management
- Notification permissions - Proper Android 13+ notification permission handling
- Battery optimization - Smart prompts for battery optimization settings
- Permission dialogs - Material Design 3 permission request dialogs
- Settings integration - Direct access to system settings when needed
-
Release Notifications
- Telegram integration - Automatic notifications to Telegram for new releases
- Publishing workflow - Streamlined release publishing to Telegram groups
- yt-dlp Settings
- Stable build default - Changed from nightly to stable build for better reliability
- Settings location - Settings → General → yt-dlp settings
- Improved stability - More reliable downloads with stable releases
- Fixed download progress preservation when pausing/resuming
- Improved error message handling and display
- Enhanced download phase detection and status updates
- Better UI spacing and layout across download cards
- Fixed permission handling flows
- Improved proxy connection handling
- Better resource management with concurrent downloads
-
Enhanced Format Filtering
- Valid URLs Only - Now filters and shows only valid video and audio URLs
- Cleaner Interface - Invalid or unavailable formats are automatically hidden
- Improved Reliability - Better format validation before display
-
Maximum Quality Support
- Highest Resolution Downloads - Support for maximum resolution available
- No Quality Limits - Download content at the best quality offered by the source
- Smart Quality Detection - Automatically identifies highest available quality
-
Video & Audio (High) Merged
- Best Quality Option - New "video & audio (high)" merged format in video section
- Optimal Output - Combines highest quality video with highest quality audio
- Seamless Merging - Automatic stream combination for best results
-
Bug Fixes
- Fixed video info couldn't fetch error
- Improved format extraction reliability
- Better error handling for unavailable formats
-
UI/UX Improvements
- Removed Delete Option - Delete functionality moved to Downloads page for better organization
- Fixed UI Issues - Resolved layout problems and visual inconsistencies
- Cleaner Design - Streamlined interface for better user experience
-
Additional Improvements
- Enhanced performance and stability
- Better download state management
- Improved visual feedback
-
Fully Redesigned Home Page
- Modern, clutter-free interface with cleaner layout and improved visual hierarchy
- Enhanced navigation for smoother access to core features
- Optimized performance for faster loading and smoother scrolling
- Refined aesthetics matching the premium Gradient Dark theme
-
Redesigned Navigation Drawer
- Modern Gradient Header with theme-aware colors (Purple/Blue for Dark, Soft for Light)
- App Branding with prominent "Seal Plus" typography and version badge
- Improved Organization with clear section dividers and better spacing
- Visual Enhancements including new icon containers and hover effects
-
Enhanced Video/Audio Merging
- Automatic merging of best video and best audio streams in "Suggested" format
- Highest quality guarantee - Now gets the absolute best resolution available by combining streams
- Seamless processing - Merging happens automatically in the background
-
High Quality Download Options
- "Suggested" section upgrade - Now explicitly prioritized for highest resolution/bitrate
- Smart quality selection - Automatically picks the top-tier quality available
- Better format detection for complex media sources
- Homepage Delete Fixed: Resolved issue where delete button in three-dot menu was unresponsive
- Duplicate Cards Fixed: Solved issue where downloads appeared twice in active/recent lists
- Crash Fix: Fixed NPE crash when deleting items from active list
- Performance optimization for list rendering and database operations
-
Enhanced Video Download Quality
- Highest Resolution MP4 Selection - Automatically select the best available MP4 format for video downloads
- Smart format selection prioritizes quality while maintaining compatibility
- Optimized for maximum video quality with MP4 container support
-
Advanced Download Configuration
- External Downloader Arguments - Added aria2c external downloader arguments support
- Enables advanced aria2c configurations for multi-threaded downloads
- Better control over download behavior and performance tuning
- Updated yt-dlp Engine
- Updated youtubedl-android library to 0.18.1
- Includes yt-dlp 2025.12.08 with latest site support and bug fixes
- Improved download reliability and compatibility across platforms
- Enhanced format detection and extraction capabilities
- Better video format selection algorithm for optimal quality
- Enhanced aria2c integration for faster multi-segment downloads
- Improved download stability with latest yt-dlp improvements
-
Professional Onboarding Screens
- 4 beautifully designed pages - Welcome, Downloads, Customizable, and Security
- Smooth animations - Spring bounce, fade transitions, and morphing page indicators
- Swipe navigation - HorizontalPager with intuitive swipe gestures
- Skip/Back/Next controls - Flexible navigation through onboarding flow
- Theme integration - Matches Gradient Dark theme with floating gradient blobs
- Glow effects - Beautiful icon animations with blur effects
- First-time detection - Automatically shows on first launch, then skips
- Settings access - "View Onboarding" option in About page for easy review
- Material Design 3 - Professional UI following latest design guidelines
-
Elegant Splash Screen
- Animated logo - Spring bounce animation with smooth scaling
- Gradient branding - Pulsing glow effect with app theme colors
- Theme-aware - Adapts to Gradient Dark mode and light themes
- Professional timing - 2.4s optimal display duration
- Powered by Mahesh Technicals - Custom branding with copyright notice
- Network Download Fix
- Fixed "Any Network" option not allowing mobile data downloads
- Downloads now work correctly on both WiFi and mobile data when "Any Network" is selected
- Improved network availability detection in PreferenceUtil
- Enhanced first-time user experience with guided onboarding
- Smooth app launch with professional splash screen
- Better app branding and identity
- Improved visual feedback during app initialization
-
Complete App Lock System with Multi-Factor Authentication
- 4-digit PIN protection - Fast and secure PIN authentication
- Biometric authentication - Unlock with fingerprint or face recognition on supported devices
- Lock screen on access - Automatically authenticate before accessing security settings when AppLock is enabled
- Old PIN verification - Secure PIN change requires verification of current PIN
- Complete reset option - Reset all AppLock settings and start fresh if needed
-
Smart Timeout Management
- Immediately - Always require authentication every time app is opened (NEW)
- Flexible timeouts - Choose from 1, 2, 5, 10, 15, 30, or 60 minutes of inactivity
- Persistent timeout - Timeout settings survive app restarts using MMKV storage
- Require auth on launch - Option to always authenticate when opening app
- Background protection - Auto-lock when app goes to background
-
Secure Implementation
- SHA-256 PIN hashing - Your PIN is never stored in plain text
- MMKV encrypted storage - All authentication data securely stored locally
- Brute force protection - Maximum 5 attempts with auto-dismiss
- No cloud sync - All data stays on your device for maximum privacy
-
Beautiful Material Design 3 UI
- Animated lock screen - Smooth transitions with number pad
- PIN dots indicator - Clear visual feedback (4 dots for 4-digit PIN)
- Error animations - Shake animation on incorrect PIN
- Theme support - Works with all themes including Gradient Dark
- Haptic feedback - Touch feedback for better user experience
-
Comprehensive Settings
- Enable/disable App Lock easily
- Toggle biometric authentication on/off
- Change PIN anytime (with old PIN verification)
- Configure authentication timeout (Immediately to 60 minutes)
- Reset all AppLock settings and data
- Access via: Settings → Seal Plus Extras → Security & Privacy → App Lock
- Enhanced security settings page with intuitive controls
- Animated lock screen with smooth number pad interactions
- Clear visual feedback for all authentication states
- Confirmation dialogs for critical security actions
- Accessibility compliant - Proper content descriptions and contrast ratios
- Exit Confirmation Dialog - Stylish and professional confirmation dialog when exiting from Download Queue page
- Prevents accidental app closure
- Material Design 3 styled dialog
- Theme-aware colors matching Gradient Dark and other themes
- Clear messaging about ongoing downloads continuing in background
- Smooth animations and haptic feedback
- Smart Network Control
- Download only on WiFi, Mobile Data, or Any network - Full control over network usage
- Network type selector in download settings
- Automatic pause when network type changes
- Resume downloads when preferred network becomes available
- Battery-friendly and data-conscious downloading
- Prevents unwanted mobile data usage for large files
- Configure per-download or globally in settings
- Customizable Notification System
- Customizable notifications with sound, vibration, and LED settings per task status
- Different notification profiles for:
- Download started
- Download in progress
- Download completed (success)
- Download failed (error)
- Download paused/queued
- Per-task status customization: Choose notification sound, enable/disable vibration, set LED color
- Rich notification controls: Priority levels, channel management
- Battery-efficient notification updates
- Persistent notifications for active downloads
- Actionable notifications (Pause, Cancel, Retry)
- Grouped notifications for multiple downloads
- Silent mode support with visual-only indicators
- Documentation Improvements
- Removed redundant GRADIENT_DARK documentation files (7 files)
- Streamlined project structure for better maintainability
- Consolidated theme documentation in main README
- New App Logo
- Updated app launcher icon with new Seal Plus branding
- New adaptive icons with foreground, background, and monochrome layers
- Updated all density folders (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)
- Modern Material You themed icon support for Android 13+
- Properly configured round launcher icons for all devices
- Enhanced visual identity across all Android launchers
-
Repository Migration
- Updated auto-update system to point to new repository:
https://github.com/MaheshTechnicals/Sealplus - Changed release URL from
JunkFood02/Seal PlustoMaheshTechnicals/Sealplus - All version checks now fetch from
https://github.com/MaheshTechnicals/Sealplus/releases - In-app update notifications correctly display new repository releases
- APK download URLs properly match new release structure
- Updated auto-update system to point to new repository:
-
Auto-Update Enabled by Default
- Auto-update is now ON by default for all new installations
- Users can still manually disable in Settings → About → Auto update
- Seamless in-app updates without manual APK downloads
- Automatic version checking and changelog display
-
GitHub Actions Release Workflow Improvements
- Fixed release publication status - releases now properly marked as "published"
- Added
make_latest: trueto ensure releases appear as latest on GitHub - Improved release notes with Gradient Dark theme mention
- Auto-update feature now highlighted in release descriptions
- Proper release tagging and asset upload synchronization
-
About Page Updates - Seal Plus Branding
- Updated README link to open
https://github.com/MaheshTechnicals/Sealplus/blob/main/README.md - Updated Latest release to fetch from
https://github.com/MaheshTechnicals/Sealplus/releases - Changed Telegram channel to
https://t.me/maheshtechnicals - Removed Matrix space option from About screen
- Added YouTube channel at
https://youtube.com/@maheshtechnicalswith custom icon - All community links now point to Mahesh Technicals channels
- Maintained consistent spacing, icons, and text alignment
- Updated README link to open
-
Navigation Drawer & Theming Consistency
- Removed distracting footer from navigation drawer (app name, version, route display)
- Enabled Gradient Dark mode by default for all users (Settings → Look & Feel)
- Fixed Download Queue tab colors to use gradient primary accent matching FAB
- Tabs now use
primarycolor for selected state (bold gradient accent) instead of subtleprimaryContainer - Selected tab text uses
onPrimary(high contrast white) for excellent readability - Unselected tabs use
surfaceContainerHighfor better elevation and visual hierarchy - Achieved unified premium dark-gradient experience across all surfaces with proper contrast
- Smooth color transitions with clear selected/unselected states
-
Comprehensive UI/UX Overhaul
- Fixed Download Queue page gradient dark theme integration
- Improved tab visibility with better color contrast (primaryContainer vs fixed color roles)
- Standardized card elevations using surfaceContainerHigh across all components
- Normalized button styles: 48dp height, consistent padding (24dp horizontal, 12dp vertical)
- Enhanced text hierarchy: upgraded to titleMedium for headings, bodyMedium for content
- Standardized spacing: 16-20dp card padding, 24dp button padding
- Improved corner radius consistency: 24dp (shapes.large) across all cards
- Increased format selection card padding for better readability
- Enhanced action sheet button styling with better spacing and typography
-
Format Selection Page - Major Improvements
- Fixed critical text contrast bug: Selected cards now use proper onPrimaryContainer/onSecondaryContainer colors instead of low-contrast accent colors
- Reordered sections for better UX: Video → Audio → Video (no audio) instead of Audio → Video only → Video
- Enhanced section headers: Upgraded to titleMedium (16sp), added subtle dividers (30% opacity) for clear visual grouping
- Improved card layout: 18dp padding (up from 16dp), 2dp borders when selected (up from 1.5dp), 12dp grid spacing (up from 8dp)
- Better icon visibility: All icons standardized to 18dp with 4dp spacing, animated colors for selected/unselected states
- Smooth animations: 150ms color transitions (up from 100ms) for polished feel
- Applied gradient dark theme: surfaceContainerHigh backgrounds, proper containerColor on Scaffold
- Reduced visual clutter: 50% opacity borders when unselected, softer shadows, balanced accent usage
- Build Configuration
- Fixed AndroidManifest.xml warning about extractNativeLibs attribute placement
- Removed android:extractNativeLibs from manifest (now managed automatically by AGP via useLegacyPackaging)
- Resolved AGP warning: "android:extractNativeLibs should not be specified in this source AndroidManifest.xml file"
- AppEntry.kt: Removed footer from NavigationDrawer (cleaner UI)
- NavigationDrawer.kt: Removed footer parameter and implementation
- SelectionGroup.kt: Updated to use primary/onPrimary colors for gradient accent tabs, removed LocalFixedColorRoles import
- PreferenceUtil.kt: Changed GRADIENT_DARK_MODE default from false to true
- DownloadPageV2.kt: Applied background color to Scaffold, improved tab padding
- DownloadQueueItem.kt: surfaceContainerHigh surface, titleMedium typography, 20dp padding, shapes.large
- Buttons.kt: 48dp defaultMinSize, standardized padding (24dp horizontal, 12dp vertical)
- ModalBottomSheetM3.kt: Added surfaceContainerHigh containerColor
- VideoCardV2.kt: surfaceContainerHigh in dark mode, titleMedium typography, shapes.large
- FormatItem.kt: Complete visual overhaul - proper selected/unselected colors, improved spacing, animated states
- FormatPage.kt: Reordered sections, improved headers with dividers, better grid spacing (12dp), gradient dark theme
- ActionSheetItems.kt: Improved button styling with shapes.large, 12dp text spacing, labelLarge typography
- Gradient Dark Theme - Premium UI Mode
- Added new "Gradient Dark" toggle in Look & Feel settings
- Deep charcoal/obsidian backgrounds (#0A0A0F, #14141F) for perfect OLED viewing
- Vibrant linear gradients (deep blues #5B47E5 → purples #8B5CF6)
- Sophisticated glassmorphism effects with subtle borders and translucent surfaces
- Premium card-based layouts with 20-24dp rounded corners
- Smooth micro-animations (300ms fade-in, 150ms button press)
- 5 new premium UI components:
- PremiumGlassCard - Glassmorphism cards with animations
- PremiumGradientButton - Gradient buttons with press effects
- PremiumSectionHeader - Headers with gradient accents
- PremiumInfoCard - Info cards with gradient borders
- AnimatedCardContainer - Smooth entrance animations
- Hardware-accelerated animations for smooth 60fps performance
- WCAG AA compliant contrast ratios (4.5:1+)
- Graceful fallback to Material 3 when disabled
- Added comprehensive Gradient Dark theme documentation:
- Complete implementation guide (800+ lines)
- Visual design reference with color swatches and gradients
- Quick reference card with code snippets
- 5 complete integration examples
- API documentation for all components
- 2,200+ lines of documentation across 6 files
- 21 new resource files (10 XML, 6 Kotlin, 5 documentation)
- 15+ carefully selected colors for dark aesthetic
- 4 gradient brushes (Primary, Secondary, Accent, Vibrant)
- Consistent spacing scale (4dp to 56dp)
- Professional animation timings
- Rebranded from "Seal" to "Seal Plus"
- Updated application name to "Seal Plus"
- Changed application ID from
com.junkfood.sealtocom.junkfood.sealplus - Updated all README files and documentation
- Debug variant now shows "Seal Plus Debug"
- Preview variant now shows "Seal Plus Preview"
-
Platform & Build Tools
- Updated Android Gradle Plugin to 8.13.2 (latest stable, Dec 2025)
- Updated Gradle to 8.13 (officially required for AGP 8.13)
- Updated Kotlin to 2.0.21 (stable) with K2 compiler
- Migrated from deprecated kotlinOptions to modern compilerOptions
- Updated KSP to 2.0.21-1.0.28 for stable annotation processing
- Updated to compileSdk/targetSdk 36 (required by latest AndroidX libraries)
-
Core Dependencies
- Updated Jetpack Compose BOM to 2025.01.00 (January 2025 stable release)
- Updated AndroidX Core to 1.17.0 (Dec 2025)
- Updated AndroidX AppCompat to 1.7.1 (Jun 2025)
- Updated AndroidX Activity to 1.12.2 (Dec 2025)
- Updated Lifecycle to 2.10.0 (Nov 2025)
- Updated Navigation to 2.9.6 (Nov 2025)
- Updated Room to 2.8.4 (Nov 2025)
- Updated Graphics Shapes to 1.0.4 (Dec 2025)
- Updated Kotlinx Coroutines to 1.10.1
- Updated Kotlinx Serialization to 1.8.0
- Updated Accompanist libraries to 0.36.0
- Updated Coil to 2.7.0 with improved image loading
- Updated OkHttp to 5.0.0-alpha.14
-
Testing & Quality
- Updated Espresso to 3.6.1
- Updated AndroidX Test Ext to 1.2.1
-
CI/CD Infrastructure
- Updated GitHub Actions workflows to latest versions
- Updated setup-java action to v4
- Updated gradle/actions to v4
- Updated android-actions/setup-android to v3.2.1
- Updated actions/stale to v10 for issue management
- Updated actions/checkout to v4 across all workflows
- Improved compatibility with Android 16 APIs
- Enhanced stability with latest Kotlin compiler
- Better memory management with updated coroutines
- Faster build times with Gradle 8.12
- Improved runtime performance with Compose BOM 2026.01.00
- Optimized database operations with Room 2.7.0
- Enhanced network efficiency with OkHttp 5.0.0 stable
- Updated all development tools for 2026
- Improved CI/CD pipeline reliability
- Better code formatting with latest ktfmt
- Enhanced type safety with Kotlin 2.1.0
- Concurrent downloading
- Download queue
- User interface overhaul
- Large screen support
- Resume failed/canceled download
- Backup & restore unfinished tasks in the download queue
- Select from formats/playlists in Quick Download
- Predictive back animation support for Android 14+
- Bump up minimum API level to 24 (Android 7.0)
v1.13.0 - 2024-08-18
- Fix the issue where exported command templates could not be imported in v1.12.x
- Fix an unexpected behavior where multiple formats would be selected
- Update
youtubedl-androidto v0.16.1 - Update translations
v1.12.1 - 2024-04-17
- Add auto update interval for yt-dlp
- Cookies page now shows the current count of cookies stored in the database
- Intercept non-HTTP(s) URLs opened in WebView
- Videos are remuxed to mkv even when download subtitle is disabled
- Use MD2 ModalBottomSheetLayout in devices on API < 30
- Block downloads when updating yt-dlp
- TextFields(IME) fallback to plain character mode when showing a ModalBottomSheet
- yt-dlp might be broken if you tried to download something while it was
updating (
bad local file header). To fix it, you just need to update yt-dlp again
v1.12.0 - 2024-04-05
- Search from download history
- Search from subtitles in format selection page
- Export download history to file/clipboard
- Import download history from file/clipboard
- Re-download unavailable videos
- Download auto-translated subtitles
- Remember subtitle selection for next downloads
- Remux videos into mkv container for better compatibility
- Configuration for not using the download type in the last download
- Improve UI/UX for download error handling
- Add splash screen
- Haptic feedback BZZZTT!!1!
- Long pressing on an item in download history now selects it
- Use nightly builds for yt-dlp by default
- Migrate
Slider&ProgressIndicatorto the new visual styles in MD3 - Use default display name from system for locales
- Metadata of videos is also embedded in the files now
- A few UI changes that I forgot
- Fix a permission issue when using Seal in a different user profile or private space
- Fix an issue where the text cannot be copied in the menu of the download history
- Display approximate file size for formats when there's no exact value available
- Fix an issue causes app to crash when the selected template is not available
- Custom command now ignore empty URLs, which means you can insert URLs along with arguments in command templates
- Fix an issue where some formats may be unavailable when downloading playlists
- TextFields(IME) fallback to plain character mode when showing a ModalBottomSheet
- ModalBottomSheet handles insets incorrectly on devices below API 30
v1.11.3 - 2024-01-22
- Merge multiple audio streams into a single file
- Allow downloading with cellular network temporarily
- App creates duplicated command templates on initialization
- Cannot make video clip in FormatPage
v1.11.2 - 2024-01-06
- Keep subtitles files after embedding into videos
- Force all connections via ipv4
- Prefer vp9.2 if av1 hardware decoding unavailable
- Add system locale settings for Android 13+
- User agent gets enabled when refreshing cookies
- Restrict filenames not working in custom commands
- Transition animation should look more smooth now
v1.11.1 - 2023-12-16
- Add
--restrict-filenamesoption in yt-dlp - Add playlist title as an option for subdirectory
- Add more thanks to sponsors
- Fix some minor UI bugs
- Fix an issue causing error when parsing video info
v1.11.0 - 2023-11-18
- Custom output template (
-ooption in yt-dlp) - Export cookies to a text file
- Make embed metadata in audio files optional
- Add the ability to record download archive, and skip duplicate downloads
- Add cancel button to the download page
- Add input chips for sponsorblock categories
- Add subtitle selection dialog in format page, make auto-translated subtitles available in subtitle selection
- Add more thanks to sponsors
- Move the directory for storing temporary files to external storage (
Seal/tmp) - Change the default output template to
%(title)s.%(ext)s - Temporary directory now are enabled by default for downloads in general mode
- Move actions in format page to dropdown menu
- Download subtitles are now available when downloading audio files
android:enableOnBackInvokedCallbackis changed tofalsedue to compatibility issues
- Fix an issue causes sharing videos to fail on certain devices
- Fix an issue causes uploader marked as null, make uploader_id as a fallback to uploader
- Fix an issue when a user performs multiple clicks causing duplicate navigating behaviors
- Custom prefix for output template has been removed, please migrate to custom output template
v1.10.0 - 2023-08-30
Subtitles
- Convert subtitles to another format
- Select subtitle language in format selection
Format selection
- Display icons(video/audio) on
FormatItems - Split video by chapters
- Select subtitle to download by language names/codes
Custom commands
- Create custom command tasks in the Running Tasks page
- Configure download directory separately for custom command tasks
- Select multiple command templates to export & remove
Cookies
- Add
CookiesQuickSettingsDialogfor refreshing & configuring cookies in configuration menu - Add user agent header when downloading with cookies enabled
Other New Features & UI Improvements
- Show
PlainToolTipwhen long-press onPlaylistItem - Add monochrome theme
- Add proxy configuration for network connections
- Add translations in Swedish and Portuguese
- App crashes when being opened in the system share sheet
- Video not shown in YouTube playlist results
- Cookies cannot be disabled after clearing cookies
- Hide video only formats when save as audio enabled
- Parsing error with decimal value in width/height
- Audio codec preference not works as expected
- Could not fetch video info when
originalUrlis null
Notable Changes
- Upgrade target API level to 34 (Android 14)
- Preferred video format changed to two options: Legacy and Quality
- UI improvements to the configuration dialog
Other Changes
- Update
ColorSchemes and components to reflect the new MD3 color roles - Update youtubedl-android version, added pycryptodomex to the library
- Move Video formats to the bottom of the
FormatPage - Notifications now are enabled by default
- Minor UI improvements & changes
v1.9.2 - 2023-04-27
- Fix a bug causing Incognito mode not working in v1.9.1
- Fix misplaced quality tags in
AudioQuickSettingsDialog - Fix mismatched formats when using Save as audio & Download playlist
v1.9.1 - 2023-04-11
- Add Sponsor page: You can now support this app by sponsoring on GitHub!
- Fix a bug causing warnings not shown in logs of completed custom command tasks
- Fix a bug causing videos not scanned into media library when private mode is enabled
- Move the directory for temporary files to
cacheDir
v1.9.0 - 2023-03-12
- Add Preview channel for auto-updating
- Add an option to update to Nightly builds of yt-dlp
- Add a dialog for F-Droid builds in auto-update settings
- Add a switch for auto-updating yt-dlp
- Add the ability to share files in
VideoDetailDrawer - Add a badge to the icon to indicate the count of running processes
- Add a switch for disabling the temporary directory
- Add format & quality preference for audio
- Add custom format sorter
- Add the ability to clip video and audio in
FormatSelectionPage(experimental) - Add the ability to edit video titles in
FormatSelectionPagebefore downloading - Add the ability to share the thumbnail url in
FormatSelectionPage - Implement a new method to extract cookies from the
WebViewdatabase
- Change the operation of open link to long pressing the link button in
VideoDetailDrawer - Change the thread number range of multi-threaded download to 1-24
- Change the status bar icon to filled icon
- Change the quick settings for media format in the configuration dialog
- Fix a bug causing high-quality audio not downloaded with YT Premium cookies & YT Music URLs
- UI bug in
ShortcutChipwith long template - Fix a bug causing empty subtitle language breaks downloads
- Fix an issue causing specific languages not visible in system settings on Android 13+
- Fix a UI bug in the format selection page
- Fix a bug causing app to crash when toasting in Android 5.0
- Fix a UI bug causing LTR texts to display incorrectly in RTL locale environment
- Add legacy app icon for API 21~25
- Cookies may not work as expected in some devices, please try to re-generate cookies after this occurs. File an issue on GitHub with your device info when experience errors.
v1.8.2 - 2023-02-10
- Trimmed ASCII characters filename
- Unexpected error when downloading multiple video to SD card with quick download
- Error when cropping vertical thumbnails as artwork
- ID conflicts when importing custom templates
- Add
horizontalScrolltoLogPage - Revert the URL intent filters
v1.8.1 - 2023-02-01
- App crashes when downloading in private mode
- Unexpected ImeActions in TextFields
- Disable SD card download when the directory is not set
- Localized strings for file size texts
v1.8.0 - 2023-01-29
- Download to SD card
- Quick download in parallel
- Task dashboard & log page for custom commands
- Custom shortcuts for command templates
- Subtitle preferences
- Apply
--embed-chaptersfor video downloads by default - New color schemes for UI theming
- New transition animation between destinations
- Change
minSdkVersionto 21 (Android 5.0) - Accessibility improvements to components
- Revert playlist items limit in v1.7.3
- Scan the download directory to the system media library after running commands
- Change the LongClick operations of
FormatItemto share the stream URLs
v1.7.3 - 2023-01-10
Webviewcaptures Cookies from wrong domains- Notifications of custom commands remain unfinished status
- App crashes when fails to parse video info for format selection
- App crashes when parsing channel info for playlist download
- Tips about streams merging in
FormatSelectionPage
- Playlist results are limited to 200 videos