This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm install # Install dependencies
npm start # Run in development mode
npm run build # Build for current platform
npm run build:win # Build Windows installer
npm run build:mac # Build macOS installer
npm run build:linux # Build Linux installergit tag v1.0.0
git push origin v1.0.0 # Triggers GitHub Actions build & releaseBrowser -> Local Proxy (7890) -> ADB Tunnel (7891) -> Phone Proxy (7890) -> Internet
Port Configuration:
proxyPort(7890): Browser connects heretunnelPort(7891): ADB forwarded port to phoneremotePort(7890): Phone's Clash/proxy port
Data Flow:
- Browser traffic goes to local proxy server (SOCKS5/HTTP)
- Proxy server forwards through ADB tunnel
- ADB tunnel connects to phone's proxy (Clash)
- Phone's proxy handles actual network requests
Main Process (src/main/)
index.js- Entry point, ConnectionManager orchestrates ADB + Proxyadb/- Device detection and port forwarding via adbkitproxy/- SOCKS5 and HTTP proxy servers (native Node.js net module)tray.js- System tray integration
Renderer (src/renderer/)
- Control panel UI for device status and connection
Preload (src/preload/)
- IPC bridge between renderer and main process
adb:getDevices, connection:connect, connection:disconnect, connection:getStatus, config:get, config:set, browser:navigate, browser:goBack, browser:goForward, browser:refresh
- Electron 28
- adbkit (ADB protocol, no external adb binary needed)
- usb (libusb bindings for direct USB communication)
- Native SOCKS5/HTTP proxy implementation