- app/build.gradle.kts: remove hardcoded keystore password (was '***REMOVED***'
in 4 spots across a duplicated signingConfigs block). Now reads VARROA_KEYSTORE_PATH
+ VARROA_KEYSTORE_PASSWORD + VARROA_KEY_PASSWORD from env. Password vaulted as
'Varroa — release keystore'. Drops orphan zxing/camera deps that aren't wired up.
- app/src/main/res/xml/network_security_config.xml: tighten cleartext scope from
global to just 192.168.0.10 (Bee AP). HTTPS strict for everything else.
- app/src/main/java/.../api/AdaMapsApiClient.kt: drop apiKey.take(8) in log to
apiKey.length — no need to leak prefix to logcat.
- README.md: add. Public repo without one was a bad first impression.
- docs/BEE-CAMERA.md: rewrite (811→467 lines). Keep all paths, pinouts, bus
diagrams, depthai/VPU/xlink details, intercept architecture. Strip
Executive-Summary framing, verdict box, phased roadmap, appendices.
- docs/AIR-QUALITY-INTEGRATION.md: rewrite (712→369 lines). Keep BOM, sensor
comparisons, wiring, IAQ calc, ingest endpoint shape. Strip feasibility-report
scaffolding.
- docs/AIR-API-PATCH.py: delete. Was a one-shot apply-and-discard patch script,
not docs.
- Add DeviceStatusScreen with full device info display
- Add WiFi client configuration
- Add storage status with usage bar
- Add GPS/GNSS status display
- Add upload mode toggle (auto/wifi/lte/off)
- Add plugin list display
- New API endpoints in BeeApiClient for device settings
- Navigate to Device Status from Settings screen
- Add walletAddress field to SettingsDataStore
- Settings screen: input field, QR scanner, address validation
- Include wallet_address in detection uploads to API
- Show linked wallet status in main UI (green wallet icon)
- Cardano address validation (addr1/stake1 prefixes)
- Version bumped to 1.7.5 (versionCode 11)
- APK built and signed at /root/.openclaw/workspace/projects/varroa-v7.5.apk
- Updated version to 1.7.4 (versionCode 10)
- Modified BeeApiClient.getLandmarks() to fetch 50,000 landmarks instead of 200
- Added cleanupLandmarks() method to attempt deletion from Bee device after upload
- Enhanced AdaMapsUploadWorker to call cleanup after successful upload to ADAMaps
- Cleanup tries multiple potential DELETE endpoints and cmd interface
- Documents limitation: Bee API may not support landmark deletion
Note: Cleanup functionality is exploratory - no confirmed DELETE endpoint found in Bee API docs
- Add JSch SSH library dependency
- Persistent device_id cache in DataStore (not just memory)
- Load cached device_id on app start
- Only fetch if missing or 'unknown'
- 30-second timeout for /api/1/info endpoint
- SSH fallback to root@192.168.0.10:22 when API fails
- Retry device_id fetch after successful landmark poll
- Fallback order: DataStore cache → API → SSH
- Build signed APK at /root/.openclaw/workspace/projects/varroa-v7.3.apk
BREAKING: Complete rewrite of data flow to fix network isolation issue.
Problem: When connected to Bee's WiFi AP (192.168.0.10), the phone has
NO internet access. The Bee AP is just a direct connection to the dashcam
with no upstream gateway. The old design tried to simultaneously pull from
Bee and push to ADAMaps, which fundamentally couldn't work.
Solution: Store-and-forward with two independent subsystems:
1. BeeCollectorService - Collection only
- Binds to unvalidated WiFi (Bee AP)
- Polls Bee for detections
- Stores to local Room database
- Does NOT attempt internet uploads
2. AdaMapsUploadWorker - Upload only
- WorkManager-based background worker
- Only runs when device has VALIDATED internet
- Reads from local DB, batch uploads to ADAMaps
- Marks as synced, retries with backoff
New components:
- Room database (DetectionEntity, DetectionDao, VarroaDatabase)
- NetworkStateMonitor for tracking validated vs unvalidated networks
- Improved UI with BEE/LOCAL/UPLOAD indicators
- Manual sync trigger when internet + pending data
Version: 1.7.0 (versionCode 7)
FIXES:
- Restored port 5000 (Bee's odc-api runs on 5000, not 5001)
- Restored multi-IP discovery (primary: Bee AP, alt: home WiFi)
- Added custom DNS resolver for ADAMaps (hardcodes 142.44.213.229)
This fixes the '0 sent' bug - DNS fails on Bee AP (no upstream)
- Restored alt URL field in settings
- Kept exponential backoff and retry queue from v3
The DNS fix is the key: when connected to Bee's AP (192.168.0.10),
Android's DNS resolver can't resolve api.adamaps.org because
the AP has no internet. Custom Dns object bypasses this.
Fixes:
- Multi-IP discovery: Try both primary (AP) and alt (home WiFi) IPs in parallel
with 3-4s timeouts each. First responder wins.
- Exponential backoff: When Bee is offline, retry with increasing delays
(5s → 60s max) instead of hammering every 10s
- Clean offline state: Show 'Bee offline' status instead of ugly red errors
- Retry queue: Failed ADAMaps sends are queued and retried (up to 5 attempts)
instead of being silently dropped
- Camera shows 'Bee offline' instead of spinning 'Awaiting frame...'
- Settings: Added 'Bee Alt URL' field for configuring home WiFi IP
- Better connection status display showing which mode is active
Fixes the '206 collected, 0 sent' bug - detections now queue and retry
Full rewrite of bee-debug-app as ADAMaps data proxy.
- Detection forwarder to ADAMaps API (polls landmarks/last/200, dedup by id+ts)
- 30s camera snapshot with 4-endpoint auto-detect
- GPS mini-map via osmdroid/OpenStreetMap
- Device status panel (firmware, GPS, AI ready flags)
- Connection status bar + forwarding toggle
- Foreground service with persistent notification
- Dark amber theme, no Google Play Services
- Package: com.adamaps.varroa, minSdk 26