Releases
v5.0
Compare
Sorry, something went wrong.
No results found
Breaking Changes
Storage relocated from /data/misc/usbmassstorage/ to /data/adb/Usbmanagement/ (auto-migrated on first boot)
memfd RAM copy architecture removed — images mount directly from disk with zero memory overhead
New Features
Device reboot button in the main toolbar with confirmation dialog
Path-based mount protocol for file:// URIs — daemon opens images directly via /proc/pid/fd/N
Images of any size now mount instantly regardless of available RAM
Import external disk images into managed storage from any file picker
Batch stat/blkid queries for image metadata (single shell call instead of 2N)
Performance
R8 full mode enabled — release APK shrunk ~70% via aggressive tree-shaking and class merging
Log.d/Log.v calls stripped from release builds via ProGuard rules
Baseline profile added for Compose runtime AOT compilation on first install
Compose stability configuration for deterministic recomposition skipping
All infinite animations migrated to graphicsLayer — draw-phase only, zero recomposition overhead
Shell.cmd() calls removed from main thread: composition body, onClick handlers, and store operations
File I/O in DeviceCard moved to background coroutine with LaunchedEffect
SharedPreferences reads wrapped in remember to prevent redundant disk access during recomposition
enrichWithSize and scanImages batch all shell calls into single scripts
Regex instances hoisted to top-level compiled vals across 5 files
Keyed LazyColumn items for stable item identity during list mutations
@Stable annotation on UiState for correct recomposition skipping
configChanges declared on MainActivity to prevent unnecessary Activity recreation
Bug Fixes
Fixed mixed mount protocol where sequential daemon calls cleared previously mounted devices
Fixed enrichWithSize running java.io.File().length() as unprivileged app context — now uses root shell
Fixed automount config corruption from unchained shell writes (newline vs && join)
Fixed restartDaemon not killing parent service.sh loop alongside daemon process
DAC traversal fix: /data/adb/ mode 700 blocked daemon — added chmod o+x in service.sh
Tightened system_data_file SELinux permissions — removed stale write/create from old storage path
Added adb_data_file rules to runtime SELinux patcher for storage migration
Added untrusted_app fd use and shell_data_file read to KSU rules
Module
Full storage migration with backward-compatible path detection on first boot
Old /data/misc/usbmassstorage/ directory removed after successful migration
Gadget backup, automount config, and boot counter relocated to /data/adb/Usbmanagement/
Expanded SELinux policy for kernel→adb_data_file read access
Uninstall script updated for new data directory cleanup
You can’t perform that action at this time.