149 lines
4.9 KiB
Markdown
149 lines
4.9 KiB
Markdown
# DroidScope — TODO
|
|
|
|
## Legend
|
|
- `[x]` Done
|
|
- `[ ]` Not started
|
|
- `[~]` In progress
|
|
|
|
---
|
|
|
|
## Infrastructure
|
|
|
|
- [x] Project scaffold (Wails + Go + React/TS + Kotlin SDK)
|
|
- [x] Monorepo structure (`desktop/`, `backend-go/`, `frontend-react/`, `android-sdk/`)
|
|
- [x] Go workspace (`go.work`)
|
|
- [x] Shared event protocol (Go structs + TypeScript types)
|
|
- [x] Dev script (`scripts/dev.sh`) — builds backend, desktop, regenerates bindings, type-checks, then starts
|
|
- [x] Build script (`scripts/build.sh`)
|
|
- [x] Development guide (`DEVELOPMENT.md`)
|
|
- [x] Bundle ADB binary infrastructure (`desktop/internal/adbembed/`)
|
|
- [x] ADB discovery at runtime (embedded → ANDROID_HOME → PATH fallback)
|
|
- [x] Download ADB binaries for distribution (`scripts/download-adb.sh` ready, run once)
|
|
- [ ] CI/CD pipeline
|
|
|
|
---
|
|
|
|
## Phase 1 — MVP
|
|
|
|
### Device Management
|
|
- [x] ADB wrapper (`backend-go/adb/`)
|
|
- [x] List connected devices (1s poll)
|
|
- [x] Device connect / disconnect
|
|
- [x] Wireless ADB support
|
|
- [x] Device reconnect handling
|
|
- [x] Emulator support
|
|
- [x] Static device info (model, Android version, ABI, manufacturer, screen, build fingerprint)
|
|
- [x] Live device stats — 1s poll (available RAM, battery level/status, thermal status, available storage, IP)
|
|
- [x] Frontend: device list panel with real-time updates
|
|
- [x] Frontend: wireless connect dialog
|
|
- [x] Frontend: disconnect action
|
|
- [x] Frontend: device info panel — static fields fetched once, live fields pulsing every second
|
|
- [x] Frontend: RAM usage progress bar (live)
|
|
- [x] Frontend: split layout — device list + info detail side by side
|
|
- [x] Frontend: selected device (info view) vs profiled device (monitoring target) — separate concepts
|
|
- [x] Frontend: Profile / Stop profiling toggle per device card
|
|
- [x] Frontend: active profiling indicator bar in device list
|
|
- [x] 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 ls` traversal
|
|
- [ ] 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
|
|
|
|
- [x] Project skeleton (`android-sdk/`)
|
|
- [x] `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
|
|
|
|
- [x] Sidebar navigation
|
|
- [x] Dark theme
|
|
- [x] Selected device vs profiled device — two independent concepts in store
|
|
- [x] `useActiveDevice` hook — reads `profiledDeviceId`; `isMonitoring = false` pauses all feature panels
|
|
- [x] `NoDeviceSelected` shared component — guides user to Profile a device
|
|
- [x] 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
|