Skip to content

Barrel 0.1.6

Choose a tag to compare

@DghostNinja DghostNinja released this 04 Aug 18:09

Added

  • File viewer — hover "View" button or double-click any file in the File Explorer tree to open a glass modal with syntax-highlighted content (JSON, XML, HTML, CSS, JS, YAML, shell scripts). Ctrl+A / Cmd+A inside the viewer selects only the content for easy copying. Close via X button, click outside, or Escape key.
  • adb_read_file Rust backend command — reads any device file via adb exec-out su -c cat with plain cat fallback.
  • Screenshot preview modal — capture device screen via adb exec-out screencap -p | base64 and render inline in a glass modal. Save/Save As buttons with native file dialog. New Rust commands: adb_screencap_base64, write_base64_file.
  • Logcat highlight rules — per-tab panel with text match / regex / color picker input. Rules persist to localStorage per tab (logcat_hl_<tabId>). Matching lines get a semi-transparent background highlight while preserving the log level foreground color. Toggle panel via Highlight button in toolbar.
  • Package actions — Launch, Force Stop (am force-stop), Clear Data (pm clear), and Clear Cache (su rm -rf cache/*) buttons on each package row. Clear Data and Uninstall have glass confirmation dialogs.

Fixed

  • Slow logcat tab switchingflushOutput() now checks offsetParent before reading scroll properties. Hidden tabs (display: none) skip forced layout on thousands of off-screen lines.
  • Highlight panel input white background — added -webkit-appearance: none, background, border, color, outline, and :focus state to highlight panel text inputs — matches toolbar input styling cross-platform.
  • File viewer close button not working — replaced inline onclick="closeViewer()" (inaccessible from module scope) with proper addEventListener — module-scoped functions can't be called from attribute-based event handlers.
  • Proxy verify ran curl on deviceadb_verify_proxy was running adb shell curl which fails on most Android devices. Changed to run curl on the host machine (detected at launch) against the proxy. Works on all platforms.
  • Splash screen freeze on hanging binariescheck_launch_components version checks ran --version with no timeout. A hanging binary (e.g. pipx frida circular symlink) blocked splash forever. All checks now use run_with_timeout_bytes with a 5-second timeout — timeout returns no version instead of blocking.
  • Frida pipx circular symlink hang — pipx creates a bash wrapper that symlinks back to itself, causing frida --version to hang. Permanent fix: standalone Python script at ~/.local/bin/frida imports from the pipx venv directly.
  • Logcat stream dying on binary log lines — the reader used BufReader::lines(), which aborts the whole stream on the first invalid UTF-8 byte, firing logcat-ended and stopping the tab a few seconds after Start. Now reads raw bytes via read_until(b'\n') with lossy UTF-8 decoding — invalid bytes become U+FFFD and streaming continues. Batching and line content are byte-identical for valid input.
  • Package uninstall failing on Windows with DELETE_FAILED_INTERNAL_ERRORadb_uninstall_package now falls back to adb shell pm uninstall --user 0 <pkg> when the legacy adb uninstall fails. Newer Android rejects plain all-user uninstalls for device-admin packages, and older adb clients don't support adb uninstall --user — routing through the device's pm makes the fallback work regardless of the host adb version. The legacy attempt stays first, so behavior is unchanged where uninstall already worked.
  • Package Launch not working on Windows — the Launch button relied on adb shell commands. An earlier attempt fed every device command through adb shell's standard input (echo "<cmd>" | adb shell), but on Windows that transport orphans each command's final whitespace token onto a separate shell line — monkey's event count arrived as its own line (** Error: Count not specified, then sh: <stdin>[2]: 1: inaccessible or not found), and the same orphaning silently broke cmd package resolve-activity ... <pkg> and am start ... -p <pkg>, which is why Launch always bottomed out at monkey. The fix: every device command is now passed to adb shell as a single argument (adb shell "<cmd>") — the exact delivery the app's adb_shell command already uses for Force Stop / Clear Data / Clear Cache, proven on Windows. adb forwards the one string to the device shell, which tokenizes it itself, so no trailing token is ever orphaned. Also: when an app is already running, am start -n prints Warning: Activity not started — now treated as SUCCESS (the intent reached the app), keeping Launch off the monkey fallback. The LAUNCHER-intent fallback (am start -a MAIN -c LAUNCHER -p <pkg>) covers devices where resolve-activity returns nothing, and monkey -p <pkg> 1 runs only as a last resort for genuine failures. Works on Windows, macOS, and Linux regardless of adb client version.

Changed

  • Frida sidebar icon — changed from F to R to avoid conflict with Files tab. Both had "F" as their single-character icon.