Skip to content

Barrel 0.1.4

Choose a tag to compare

@DghostNinja DghostNinja released this 22 Jul 17:23

Added

  • WSL support: detects Windows ADB via cmd.exe /c where, scans Downloads/platform-tools* dirs, creates bash wrapper ~/.local/bin/adbadb.exe so all commands resolve
  • Settings tab: users can manually set paths to ADB, Frida, scrcpy, curl, xz. Saves to ~/.config/barrel/settings.json, creates bash wrappers in ~/.local/bin/ so the whole app uses the configured binaries. Native Browse button uses file dialog.
  • Settings — Font Size: slider + preset buttons (Small–XX-Large), persists across restarts, scales entire app interface via CSS variable --app-font-size. Collapsible category groups for future extensibility.
  • Settings — Dark Mode toggle: iOS-style toggle switch in Appearance section, synced with Save button. Persisted to both localStorage and settings.json for reliable state on restart.
  • Comprehensive test suite: version_gt, check_for_update_inner (JSON parsing + version comparison), mock curl integration, ADB wrapper execution + argument forwarding, no-overwrite safety
  • Collapsible settings categories: Appearance and Tool Paths both start collapsed, toggle on header click
  • Intent Sender: new sidebar tab for crafting and firing adb shell am intents. Action presets, data URI, MIME, package/class, flags, dynamic extras (String/Int/Boolean/Float/Long). Four modes: Start Activity, Start Service, Send Broadcast, Foreground Service. Shows raw command and output.
  • Docs site: added Intent Sender and Settings documentation sections with sidebar links
  • --input-solid-bg CSS variable: fully opaque theme-aware fallback for input backgrounds on Windows WebView2
  • Docs site: Windows build labeled "Experimental" with SmartScreen troubleshooting section

Fixed

  • Windows build failure: std::os::unix::fs::symlink calls not gated behind #[cfg(unix)]
  • Launch screen update fetcher: replaced bare curl call with find_binary("curl") + wget fallback so it works on systems without curl
  • WSL ADB "Invalid argument" error: replaced symlink with bash wrapper script (exec 'adb.exe' "$@") — WSL interop for .exe symlinks is unreliable, bash wrapper works consistently
  • Font size preset buttons not responding: missing data-fsval attribute prevented slider from matching active preset
  • Theme state not persisted on Save: added dark_mode field to settings backend, save collects and applies saved theme on startup
  • Sidebar theme toggle removed: moved to Settings > Appearance for a cleaner sidebar
  • Tool Paths arrow direction mismatch: header starts with collapsed class so arrow points right when section is closed
  • Intent Sender now uses Command::arg() instead of bash -c — works on Windows and WSL without bash, eliminates shell injection surface
  • Tool path Browse button replaced with Detect — searches PATH and common install dirs instead of using native file dialog. Fixes freeze on WSL (no display server for GTK dialogs)
  • Device info on Dashboard now uses adb_shell Rust command instead of exec_command — no bash dependency, works on Windows natively
  • Shell terminal: PTY now initialised at actual terminal dimensions instead of 24×80 then immediately resizing — fixes "wwwwwwww" garbage output and ADB shell instability on resize
  • Proxy input white background on all platforms: moved glass effect to wrapper <div> (.proxy-input-wrap) with backdrop-filter: blur(8px); inputs use background: transparent. <input> elements don't support backdrop-filter cross-platform — applying it to the wrapper avoids the native white input backdrop compositing issue on WebView2/WKWebView/WebKitGTK.
  • Logcat cmd popup on Windows: added hide_window(&mut cmd) to adb_logcat_create in logcat.rs — the spawned adb logcat process was missing CREATE_NO_WINDOW flag.
  • Tab drag-and-drop on Windows/macOS: added dragenter event listeners with preventDefault() to shell/logcat tabs and tab bars. WebView2 and WKWebView require preventDefault() on dragenterdragover alone was silently cancelling drops.
  • Tab bar dragenter: tab bar containers in both shell.js and logcat.js now have dragenter handlers to allow drops.
  • Proxy section layout: host/port inputs on same row, green/red indicator dots for active/inactive status, pill-shaped badge with dot.
  • Docs site download grid: refactored from inline styles to shared CSS classes (.dl-sub, .dl-note, .dl-buttons, .dl-btn). Windows card shows Experimental badge + SmartScreen note. 3-column grid enforced from 769px+.

Changed

  • Settings tool paths reduced to ADB, Frida, scrcpy only (curl/xz removed — globally available on most systems)
  • Tool paths hint text updated to clarify they're optional overrides