Added
- Added Cancel button support and back-cancellation to the initial "Set Vault PIN" and confirmation flows in
VaultActivityon both mobile and TV, cleanly closing the activity if cancelled before PIN setup completes. - Automatic Dialog Focus, Soft Keyboard Display, and Enter Key Action (
DialogInputHelper):- Automatically focuses input text fields and displays the software keyboard when opening name/input dialogs (Rename, Compress, Extract to New Folder, Create Folder, Create Text File, Save As, Device Pairing, Tags, Custom Tiles, and SmartSort).
- Preserves native D-pad navigation focus on Android TV devices.
- Added hardware Enter key and IME Done / Go / Send key actions to quickly confirm and complete dialog editing without manual tapping.
- Keyboard Shortcuts & Vim Navigation System (
KeyboardShortcutsActivity,KeyboardShortcutHandler,KeyboardPreferenceManager):- Full hardware and Bluetooth keyboard shortcut support across file browsers, dual-pane twin window, viewers, and editors.
- Configurable master enable toggle, dual-pane fast switching (
Tab,Ctrl+W,1/2), and customizable key remapping with an interactive rebind dialog (dialog_keyboard_rebind.xml/_tv.xml). - Vim navigation mode supporting
h/j/k/lmovement,gg/Gtop/bottom jumping, and single-letter operations (ycopy,xcut,ppaste,ddelete,rrename,nnew folder,ggo to path) with search and text input field typing protection. - In-app interactive shortcuts reference cheatsheet dialog (
dialog_keyboard_shortcuts.xml/_tv.xml) triggered by pressing?. - Polished settings screen matching the UFMStandard dark glassmorphism design language (
@color/mobile_glass_card,@color/mobile_glass_stroke,@color/tv_glass_white_10,@color/tv_glass_border, frosted icon badges, and theme-accented section headers).
- Granular Date Range & Size Range Filters (
SortFilterSheet,SortFilterPreferenceManager):- Added granular Date range filters (Any, Today, Yesterday, This Week, Previous Week, This Month, Previous Month, This Year, Previous Year) to the Sort & Filter bottom sheet.
- Added granular Size range filters (Any, Empty 0 B, Tiny 0–10 KB, Small 10 KB–1 MB, Medium 1–10 MB, Big 10–100 MB, Large 100 MB–1 GB, Huge >1 GB).
- Added Archives category filter and categorized File Type sorting priority order (Images → Videos → Audio → Documents → Archives → APKs → Other).
- Custom Storage Locations via Storage Access Framework (SAF / Termux / External Drives):
- Added "Add Storage Location" flow with UFMStandard glassmorphic dialogs (
dialog_add_storage_location.xml/_tv.xml), supporting Termux home, USB drives, SD cards, and document providers. - Custom storage tiles integrate directly into the Storage Browser volume list, positioned above Settings with human-readable resolved subtitle paths.
- Permanent storage location removal dialog (
dialog_remove_storage_location_confirm.xml/_tv.xml) with persistable URI permission release.
- Added "Add Storage Location" flow with UFMStandard glassmorphic dialogs (
Changed
- High-Performance Encrypted Vault & Fast Preparation (
VaultCrypto,VaultBrowserActivity,VaultActivity):- Significantly accelerated Encrypted Vault preparation and folder access times by up to 80%–95%.
- Added thread-safe in-memory caching for the Android KeyStore
SecretKeyreference inVaultCrypto, eliminating repeated Binder IPC roundtrips across all cryptographic operations. - Implemented multi-core concurrent file decryption and re-encryption in
VaultBrowserActivityandVaultActivityusing coroutine worker pools with throttled UI progress dispatching. - Implemented smart incremental mirror synchronization to skip redundant decryption of untouched files and only re-encrypt modified/added files upon exit.
- Upgraded file I/O streaming to 128KB chunk buffers with
BufferedInputStream/BufferedOutputStream. - Enforced zero-leakage mirror security with strict cleanup on exit and activity destruction.
Fixed
- Twin Window File Transfer Stability & NFS Copying (
TwinWindowActivity,TransferConflictHelper,LibNfsClient):- Fixed a crash when copying or moving files from an NFS network share to Internal Storage in Twin Window (dual-pane) mode.
- Added fallback
NetworkShareresolution viaNetworkShareRepositoryfor network items in dual-pane transfers. - Secured
onProgressandLinearProgressIndicatorUI updates against detached or finishing activity states with bounded progress calculations. - Guarded progress dialog dismissal against destroyed activity state to avoid window manager detachment exceptions.
- Corrected non-conflict action resolution to prevent double unique path generation on standard transfers.
- Fixed directory tag mapping during folder copying to preserve tags via
onPathCopiedinstead ofonPathMoved. - Added immediate database metadata indexing for downloaded network files in Twin Window mode.
- Hardened
LibNfsClientnative stream wrappers (NfsNativeInputStream,NfsNativeOutputStream) with context and handle validation on stream close.
- Search Results Sort & Filter Persistence (
FileBrowserActivity,FileBrowserFragment,NetworkBrowserActivity,NetworkBrowserFragment):- Fixed an issue where applying Sort & Filter on search results exited search mode and returned to the previous directory.
- Sorting and filtering are now applied directly in-place to active search results across SAF, Local, Network, and Cloud storages.
- Path-Aware Batch Rename Duplicate Detection (
BatchRenameConflictDetector,BatchRenameViewModel):- Fixed an issue where Batch Rename falsely flagged duplicate conflicts for files sharing identical target names across different subdirectories in search results.
- Conflict checking is now strictly directory-aware, allowing identically named targets across distinct parent folders.
- Completing batch rename in search results now refreshes the dataset in-place.
- Folder Scroll Position Restoration Across All Storages (
FileBrowserActivity,FileBrowserFragment,NetworkBrowserActivity,NetworkBrowserFragment,FolderScrollState):- Fixed an issue where the file list reset to the top when navigating back to a parent folder instead of restoring the previous scroll position.
- Implemented folder scroll state tracking and restoration across SAF, Local, Network (SMB, SFTP, FTP, NFS, DLNA), and Online (Google Drive, OneDrive, Dropbox, Box, S3, WebDAV) storages in both single-pane and dual-pane twin window modes.
- Preserves exact visual scroll offset on mobile/tablet and focused item on Android TV, while ensuring forward navigation into new folders starts cleanly at the top.
- File Transfer Progress Dialog (
TwinWindowActivity):- Fixed an
android.view.InflateExceptioncaused by inflatingdialog_transfer_progresswith aLinearProgressIndicatorinside a background IO coroutine, which threwAnimators may only be run on Looper threads. Dialog inflation and display are now dispatched on the Main UI thread before starting the background transfer.
- Fixed an
- TV Background Server Foreground Service (
TvServerForegroundService):- Fixed an
android.app.ForegroundServiceDidNotStartInTimeExceptionon Android TV (SDK 31) caused by cold-start main-thread contention exceeding the 5-second foreground service timeout window. - Added a cold-start delay during app initialization so UI rendering finishes before the service start timer begins.
- Ensured thread-safe start/stop request cancellation, guaranteed non-null fallback notifications, and robust
startForeground()lifecycle compliance.
- Fixed an
- SAF Network Documents Provider Memory Optimization (
UfmDocumentsProvider):- Fixed an
OutOfMemoryErrorcaused by eager 2 MB byte array allocations inProxyFileDescriptorCallbackconstructors when external apps or media players opened network documents via SAF. - Replaced eager 2 MB allocations with lazily allocated 256 KB read-ahead buffers, dynamic size-capping, and multi-tier OOM fallback to direct unbuffered reads.
- Cleaned up duplicate
whenbranch warnings forShareType.WEBDAV.
- Fixed an
- Media Player Background Playback Service (
UFMPlaybackService):- Fixed an
android.app.ForegroundServiceStartNotAllowedExceptionon Android 15 (SDK 35) when audio focus changed or progress tickers updated while backgrounded. - Added active foreground state tracking so notification updates and 1-second progress ticks use
NotificationManager.notify()instead of triggering redundantService.startForeground()IPCs. - Wrapped
ServiceCompat.startForegroundwith graceful fallback handling for background state restrictions.
- Fixed an
- ART Finalizer Watchdog Timeout Suppression (
CrashReportManager):- Fixed false-positive crashes caused by
java.util.concurrent.TimeoutException: android.content.res.ApkAssets.finalize() timed out after 10 secondson theFinalizerWatchdogDaemonthread on slow TV / set-top box hardware. - Enhanced the global uncaught exception handler to safely intercept and suppress ART finalizer watchdog timeouts without terminating the application process.
- Fixed false-positive crashes caused by