mirror of
https://git.churchofmalware.org/leviathan/OVERWATCH
synced 2026-09-24 08:35:03 +00:00
Two separate compatibility bugs, both reproduced before fixing. **Edge-to-edge.** Android 15 draws apps edge-to-edge whether or not they ask for anything targeting SDK 35, and the statusBarColor/navigationBarColor theme attributes this app relied on became no-ops at the same time. Reproduced on a fresh Android 16 emulator with a punch-hole cutout: the shipped v0.5.11-1 drew "OVERWATCH" inside the status bar next to the clock, buried the settings gear under the wifi and battery icons where it could not be tapped, and jammed the permission hint into the gesture bar. MainActivity now calls enableEdgeToEdge() explicitly — so the behaviour is the same on older releases rather than shifting under the user on an OS upgrade — and both screens pad themselves with WindowInsets.safeDrawing, which covers the system bars and the cutout. The background still runs edge to edge; only content is held clear. The overlay bubble states LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT rather than relying on it, since a draggable free-floating window could otherwise park under a camera hole. **BLE with the screen off.** Since Android 8.1 the Bluetooth stack stops delivering results for scans started with no ScanFilter once the screen turns off, and a foreground service does not exempt it — it is a stack rule, not a process-lifetime one. This app called startScan(null, ...) while promising to keep watching from a pocket, so BLE detection was silently dead in exactly the case that matters. A ScanFilter cannot express an OUI prefix, so the primary MAC-prefix method genuinely cannot run with the screen off; what can be named precisely still can. The scanner now switches on ACTION_SCREEN_ON/OFF: unfiltered while the screen is on, and a filtered scan (Raven service UUIDs, the XUNTONG manufacturer id, mic-target company ids) while it is off, capped at 16 filters because slots are a hardware resource and a silently empty scan is the worst failure this app has. The drill-down says so rather than hiding it. Verified on Android 16 (API 36) and Android 14: foreground service starts with types=0x18, all five scanners run, screen off logs "filtered scan (16 filters)" and screen on returns to unfiltered, zero scan failures, zero crashes. SOURCES.md gains a platform-constraints section covering these plus the BLE 5-starts-per-30s limit, WiFi scan throttling, and WifiManager.startScan()'s deprecation and planned removal. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsfSpnwuxCkcXKkD9XH8SR