github Kilowatch/ultimate-file-manager-pro v1.9.1

5 hours ago

Added

  • Added Cancel button support and back-cancellation to the initial "Set Vault PIN" and confirmation flows in VaultActivity on 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/l movement, gg / G top/bottom jumping, and single-letter operations (y copy, x cut, p paste, d delete, r rename, n new folder, g go 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.

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 SecretKey reference in VaultCrypto, eliminating repeated Binder IPC roundtrips across all cryptographic operations.
    • Implemented multi-core concurrent file decryption and re-encryption in VaultBrowserActivity and VaultActivity using 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 NetworkShare resolution via NetworkShareRepository for network items in dual-pane transfers.
    • Secured onProgress and LinearProgressIndicator UI 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 onPathCopied instead of onPathMoved.
    • Added immediate database metadata indexing for downloaded network files in Twin Window mode.
    • Hardened LibNfsClient native 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.InflateException caused by inflating dialog_transfer_progress with a LinearProgressIndicator inside a background IO coroutine, which threw Animators may only be run on Looper threads. Dialog inflation and display are now dispatched on the Main UI thread before starting the background transfer.
  • TV Background Server Foreground Service (TvServerForegroundService):
    • Fixed an android.app.ForegroundServiceDidNotStartInTimeException on 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.
  • SAF Network Documents Provider Memory Optimization (UfmDocumentsProvider):
    • Fixed an OutOfMemoryError caused by eager 2 MB byte array allocations in ProxyFileDescriptorCallback constructors 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 when branch warnings for ShareType.WEBDAV.
  • Media Player Background Playback Service (UFMPlaybackService):
    • Fixed an android.app.ForegroundServiceStartNotAllowedException on 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 redundant Service.startForeground() IPCs.
    • Wrapped ServiceCompat.startForeground with graceful fallback handling for background state restrictions.
  • 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 seconds on the FinalizerWatchdogDaemon thread 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.

Don't miss a new ultimate-file-manager-pro release

NewReleases is sending notifications on new releases.