d42786d0c7
PLAN.md (AI requirements doc) converted to README.md (human-facing project overview with feature status table). CLAUDE.md added for Claude Code with commands, architecture, and key conventions. DEVELOPMENT.md covers first-time setup, per-component build commands, hot-reload guidance, and ADB bundling notes. TODO.md tracks implementation status across all phases.
4.9 KiB
4.9 KiB
DroidScope — TODO
Legend
[x]Done[ ]Not started[~]In progress
Infrastructure
- Project scaffold (Wails + Go + React/TS + Kotlin SDK)
- Monorepo structure (
desktop/,backend-go/,frontend-react/,android-sdk/) - Go workspace (
go.work) - Shared event protocol (Go structs + TypeScript types)
- Dev script (
scripts/dev.sh) — builds backend, desktop, regenerates bindings, type-checks, then starts - Build script (
scripts/build.sh) - Development guide (
DEVELOPMENT.md) - Bundle ADB binary infrastructure (
desktop/internal/adbembed/) - ADB discovery at runtime (embedded → ANDROID_HOME → PATH fallback)
- Download ADB binaries for distribution (
scripts/download-adb.shready, run once) - CI/CD pipeline
Phase 1 — MVP
Device Management
- ADB wrapper (
backend-go/adb/) - List connected devices (1s poll)
- Device connect / disconnect
- Wireless ADB support
- Device reconnect handling
- Emulator support
- Static device info (model, Android version, ABI, manufacturer, screen, build fingerprint)
- Live device stats — 1s poll (available RAM, battery level/status, thermal status, available storage, IP)
- Frontend: device list panel with real-time updates
- Frontend: wireless connect dialog
- Frontend: disconnect action
- Frontend: device info panel — static fields fetched once, live fields pulsing every second
- Frontend: RAM usage progress bar (live)
- Frontend: split layout — device list + info detail side by side
- Frontend: selected device (info view) vs profiled device (monitoring target) — separate concepts
- Frontend: Profile / Stop profiling toggle per device card
- Frontend: active profiling indicator bar in device list
- Frontend: auto-clear selected + profiled device when device disconnects or goes offline
Logcat
- [~] Backend stub (
backend-go/logcat/stream.go) - Real-time logcat streaming via ADB
- Structured log parsing (priority, tag, PID, message)
- Wails event push to frontend
- Frontend: log table with virtualized rendering
- Frontend: filter by tag
- Frontend: filter by priority (V/D/I/W/E/A)
- Frontend: search
- Frontend: export logs
Network Inspector
- Android SDK: OkHttp interceptor
- Backend: receive + store network events
- Frontend: request list
- Frontend: request detail (headers, body, timing)
- Frontend: response detail (status, headers, body, size)
- Frontend: JSON formatting
- Frontend: cURL export
- Frontend: filter / search
Shared Preferences Inspector
- Backend: pull + parse SharedPreferences XML via ADB
- Backend: write-back support
- Frontend: key/value table
- Frontend: inline editing (String, Int, Long, Float, Boolean, StringSet)
- Frontend: live update polling
SQLite Browser
- Backend: pull database file via ADB
- Backend: query execution
- Frontend: table list
- Frontend: table data viewer (paginated)
- Frontend: SQL query editor
- Frontend: query history
- Frontend: export
File Browser
- Backend:
adb shell lstraversal - Backend: file download (
adb pull) - Backend: file upload (
adb push) - Backend: file delete
- Frontend: file tree / list
- Frontend: text / JSON / image preview
Runtime Configuration
- Android SDK: base URL override hook
- Android SDK: feature flag toggle
- Backend: send config command to device
- Frontend: URL override input
- Frontend: feature flag toggles
- Frontend: deep link launcher
Phase 2
- FPS monitoring (backend + frontend chart)
- Memory monitoring (heap, GC events)
- StrictMode violation monitoring
- Thread monitoring + ANR risk
Phase 3
- Memory leak detection (Activity/Fragment)
- Compose recomposition tooling
- Advanced tracing
- Flamegraphs
Android SDK
- Project skeleton (
android-sdk/) DroidScope.init()/shutdown()entry point- WebSocket transport to desktop
- Network interceptor (OkHttp)
- SharedPreferences observer
- Logcat forwarder (SDK-side filtering)
- FPS collector (Choreographer)
- Memory collector (Debug.MemoryInfo)
- StrictMode collector
- Compose recomposition collector
Frontend Shell
- Sidebar navigation
- Dark theme
- Selected device vs profiled device — two independent concepts in store
useActiveDevicehook — readsprofiledDeviceId;isMonitoring = falsepauses all feature panelsNoDeviceSelectedshared component — guides user to Profile a device- Per-device data cache (
deviceCache) — retained on device switch, never cleared automatically - Persistent profiled device indicator in sidebar or top bar
- Multi-tab panel support
- Keyboard shortcuts
- Global search
- Settings page