testsAndMisc/docs/superpowers/evidence/android-ui-vd-keyboard-2026-09-27.json
Krzysztof kuhy Rudnicki 375555fa37
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (mypy, mypy) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (pylint, pylint) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (rest, ) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (shellcheck, shellcheck) (push) Waiting to run
Python tests / test (push) Waiting to run
Shell tests / shell-tests (push) Waiting to run
Shell tests / lib-tests (push) Waiting to run
Shell tests / arch-tests (push) Waiting to run
android_ui: never check or dismiss the keyboard on a virtual display
keyboard_is_up read the phone-wide mInputShown, but Android draws the IME
on display 0 even when its target window is on a virtual display, so it can
never cover a VD tap. With two sessions on one phone, the other session's
keyboard on the real screen made dismiss_keyboard press BACK on this
display, popping the route under test and then closing the app.

Prunes the oldest evidence artifact to stay under the 60-file cap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeVXsWTuwjmZK5uvbw6vqF
2026-09-27 17:34:25 +02:00

41 lines
2.1 KiB
JSON

{
"intent": "Two Claude sessions sharing one phone must not disturb each other: a keyboard open on the real screen must never make android_ui press BACK on another session's virtual display.",
"scope": [
"python_pkg/android_ui/_text_entry.py (keyboard_is_up only)",
"Non-goal: no change to real-screen (display 0 / no display) behaviour, which still checks and dismisses the IME"
],
"changes": [
"keyboard_is_up returns False when the driver targets a virtual display (display not None and not 0), so dismiss_keyboard sends no ESCAPE/BACK there",
"Test: a VD driver with the phone-wide keyboard shown runs no adb command at all"
],
"verification": [
{
"command": "adb shell dumpsys input_method (live phone, 2026-09-27)",
"result": "pass",
"evidence": "every IME binding reads imeDisplayId=0, including one whose targetWin was com.kuhy.workout_app.sandbox on targetDisplayId=13: the IME is drawn on display 0 for VD windows"
},
{
"command": "python -m python_pkg.android_ui --display self tap ... (before the fix, while another session typed on the real screen)",
"result": "fail",
"evidence": "'the soft keyboard is still covering the screen after ESCAPE and BACK'; the BACK popped the workout route, a second run closed the app on the VD"
},
{
"command": "same taps after the fix",
"result": "pass",
"evidence": "tapped 'Dumbbell Lunge progression settings' / 'Warmup set' / 'Wins needed down' on the VD with the other session still active"
},
{
"command": "pytest python_pkg/android_ui --cov=python_pkg/android_ui --cov-branch",
"result": "pass",
"evidence": "87 passed; _text_entry.py 100% lines and branches"
}
],
"risks": [
"A future Android build that draws the IME on the VD itself would make taps under it land on keys; the phone would have to show imeDisplayId=<vd> for that, which it does not today"
],
"rollback": [
"git revert this commit",
"After rollback, VD taps work again only while no other session has a keyboard open on the real screen"
]
}