You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
APK Pull — new Pull button beside Uninstall on each package row. Resolves the on-device APK via pm path <pkg>, pulls it with normal adb pull, and falls back to adb exec-out su -c cat writing bytes locally on permission errors (same as the file explorer). Saves via a native save dialog defaulting to <pkg>.apk. All invocations use the app's hide_window-hardened runner, so no cmd popups on Windows.
Tool path auto-resolve on detect — detect_tool now unwraps Barrel's ~/.local/bin wrappers and returns the real binary they point to. When a user clicks Detect and Save, the saved tool path is always the canonical tool (e.g. /usr/lib/android-sdk/platform-tools/adb), never a Barrel wrapper. Handles wrapper chains safely.
Fixed
Tool wrappers corrupted into infinite self-recursion — apply_tool_wrappers and create_adb_wrapper could write a wrapper whose exec target was the wrapper file itself (when a configured tool path pointed at ~/.local/bin/<tool>), which hung every adb/frida/scrcpy call — including Barrel's own device polling. Both writers now detect and skip any target that resolves to the wrapper being written. New regression tests cover the self-reference guard and wrapper unwrapping.
Frida download failing with Unexpected end of input — a truncated .xz (interrupted download) surfaced as a cryptic xz error. The download now retries the full download+decompress cycle up to 3 times, curl uses --retry 5 + -C - resume with a 600s budget, truncation is detected at the curl step (transfer closed), and the final error tells the user the byte count and manual download URL.
Frida version timeout string used as a version number — frida --version timing out returned [frida version timed out after 10s] as a "successful" result, which the download flow then embedded into the GitHub URL (curl: (3) bad range in URL). frida_version now rejects timeout/garbage output, and the frontend validates version against /^\d+(\.\d+)*$/ and arch against a known-set regex before downloading.
Frida-server not staying running on rooted emulators — frida_start_server now starts with the su -c '<server>' & form (outer &, survives adb exit, the command that works on Android Studio emulators), then Magisk-style nohup inside su, then plain shell-user as a last resort — checking pidof between attempts so it stops as soon as the server is up as root.