v5.48.0 (2026-04-30)
Features
- Hot install — module takes effect without reboot on KSU, APatch, and Magisk hot-paths. Conflicting modules are now purged via
rm -rfat install time instead of flag-file disable, closing the boot-delay window where overlays kept mounting. Heuristic pass also removes any third-party module referencing known WebUI-companion conflict packages - HMA bypass — package enumeration and APK path resolution read
/data/system/packages.listand scan/data/app/directly, so HideMyAppList no longer hides apps from the target picker or the daemon. Falls back todumpsysfor label resolution - Default target.txt seeds —
com.facebook.appmanager,com.facebook.services,com.facebook.system, andcom.tencent.soter.soterserverare now seeded unconditionally alongside GMS/GSF/Vending. Covers Samsung/OEM-preinstalled Facebook system apps and the WeChat biometric/payment auth bridge on Chinese ROMs target.txtautosave with delta writes — every checkbox change auto-persists; rapid toggles coalesce into a single write per microtask. Hidden system entries are preserved verbatim. Save FAB is gone (#23)- WebUI compatibility toggles — Automation → Compatibility now exposes
disable_vbmeta_digest_spoofanddisable_prop_handlerflags from a single dialog (#21) - Inotify-driven status refresh — module description now updates the moment a status-relevant event fires instead of waiting for the 30s poll
- Task list in
daemon-status— CLI now reports the active scheduler task list (Status, Automation, Health, Keybox, SecurityPatch) config props-customCLI getter — prints user-definedprops.custom_propsasname<TAB>valuelines for shell consumption
Bug Fixes
- Fingerprint enrollment failure — boot-time
ro.boot.vbmeta.digestrewrite is now gated behind/data/adb/disable_vbmeta_digest_spoof, fixing enrollment on Snapdragon-class devices without losing Play Integrity. The/data/adb/disable_prop_handlerflag also short-circuits the digest rewrite (#21) - Keybox source rotation — KOW upstream URL repointed from the dead
main/.extrato the livekeybox/.extrabranch (#22) - Variant-aware boot hash —
prop.shpreviously trustedboot_hash.binfrom any TrickyStore variant, including forks without boothash persistence. Now checksmodule.propfor TEESimulator-RS before deferring, validates the file, and falls back to/data/adb/boot_hashif invalid - Spoof cleanup ordering — split into early and late phases so prop normalization runs before the VBMeta block, fixing edge cases where ordering left stale build-string values
custom_propsand test-keys loops — switched to heredoc-fed loops so values containing whitespace or shell metacharacters are applied verbatim- x86 and x86_64 uninstall — uninstall script now cleans the additional ABI binary directories shipped in v5.24.0
- Light-mode WebUI — full light-mode pass: text colors, hover surfaces, gradient-text fills, glass-surface backgrounds, source-card body, icon tile, pale Unknown/AOSP icons, and the FETCH INTERVAL caption all have proper light-mode contrast. Mode picker rows get per-row color stripes so Auto, Generated, and Custom stay distinguishable on any accent or theme (#20)
- IntegrityBox config migration — legacy
keybox.source = "integritybox"values now persist their migration toyurikeyon disk (previously rewritten in memory only) - Bundled JS null-deref on FAB removal — minified bundle hard-references
#saveand.floating-btnat module init; an invisible inert stub is restored at the original location so the import resolves while autosave remains the sole save path
Changed
- Boot-time spoofing consolidated into
service.sh— replaces the backgroundedprop.shwith a synchronous inline block gated on--wait sys.boot_completed 0, mirroring the susfs4ksu pattern. ZeroMount gating is no longer required for prop application - Property cleanup runs once inline at boot — folded
propclean.shinto the consolidated spoof block.--hexpatch-deletereplaced with--nukeeverywhere; the hexpatch fallback is gone since propdetect heuristics flag hexpatch artifacts (count anomalies, name destruction) - Standalone
resetprop-rsCLI — props now go through the standalone resetprop binary instead of the in-process Rust API pm listfor package enumeration — replaces directpackages.listparsing where appropriateresetprop-rsas cargo git dependency — switched from a vendored submodule so builds pull the latest commit- Denylist merge — gracefully no-ops on KSU/APatch (no upstream denylist enumeration API); Magisk path unchanged
Removed
- Rust
propsmodule — boot-time spoofing now lives entirely inservice.sh.Commands::PropsCLI variant,props/mod.rs,PropsConfig.enabled, andPropCleanConfigare gone.platform/props.rstrimmed toRP_PATH+getprop+set PropCleanTask— daemon no longer schedules a recurring property-cleanup timer. Cleanup is a one-shot inline boot step. Scheduler now tracks five tasks instead of sixinit.svc.*spoofing — dropped from the prop set; the entries created more attestation noise than they preventedpropclean.shandprop.sh— both deleted; their logic is inlined inservice.sh.hexpatch_deletepropremoved fromcommon.sh- IntegrityBox keybox source — upstream MeowDump replaced their artifact with an anti-fork taunt that decodes to "NICE TRY DIDDY". Existing configs auto-migrate to
yurikeyon next boot - Save FAB — replaced by autosave; the floating button is no longer rendered