Record two device lessons that cost real time

adb shell input tap is not trustworthy on this phone. It produced six
rounds of false conclusions in one session, including a confident
diagnosis that pointer events were dead which was actually a re-locked
screen eating the input. The CSS-to-device mapping is not css times
devicePixelRatio: 735 CSS px at dpr 3 is 2205 device px inside a 2460px
screen, and the 255px of system bars means the offset must be measured.
Two rival offsets both failed. When a known-good control looks dead,
check the lock state before suspecting the code.

svc power stayon usb writes stay_on_while_plugged_in = 2, and this phone
charges over AC, so it silently never engages. stayon true writes 7 and
works. The 30s screen timeout is a separate setting.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-17 21:00:52 +03:00
parent b95cff1be1
commit d0f872fc8b

View File

@@ -211,6 +211,28 @@ fingers routinely lift outside the key they went down on.
bugs. The cost is that a mistyped class renders with no class at all rather than bugs. The cost is that a mistyped class renders with no class at all rather than
failing, which is why the layout is pinned by tests instead. failing, which is why the layout is pinned by tests instead.
**Do not trust `adb shell input tap` on this device.** It cost six rounds of
false conclusions in one session: taps that hit a neighbouring key, taps that hit
nothing, and an entire diagnosis of "pointer events are dead" that turned out to
be a re-locked screen swallowing the input. The CSS-to-device mapping is not
simply `css × devicePixelRatio` — the viewport is 735 CSS px at dpr 3 = 2205
device px inside a 2460px screen, and the remaining 255px of system bars means
the offset has to be measured, not assumed. Two rival offsets both failed.
When a *known-good* control appears dead, check the lock state before suspecting
the code. For anything touch-related, one report from a person holding the phone
beats an afternoon of synthetic input.
**Stay awake needs `svc power stayon true`, not `usb`.** The `usb` form writes
`stay_on_while_plugged_in = 2`, and this phone charges over AC (`USB powered:
false`), so it silently never engages — `mStayOn` stays false. `true` writes 7
(any source) and works. The screen timeout is separate and was 30s:
```
adb shell svc power stayon true
adb shell settings put system screen_off_timeout 1800000 # restore: 30000
```
**Seeing the UI without the phone.** There is no Chromium on this machine, but **Seeing the UI without the phone.** There is no Chromium on this machine, but
Firefox can screenshot headlessly with no extra dependency: Firefox can screenshot headlessly with no extra dependency: