An Android sign-in driver (ios#7) #203

Merged
paulhitt merged 1 commits from tooling/android-signin-driver into main 2026-09-05 13:36:25 +00:00
1 Commits
Author SHA1 Message Date
Paul HittandClaude Opus 5 bd4818df9a An Android sign-in driver, and the three traps it exists to encode
The Android half of any cross-platform check has to be driven by something,
and `android-signup.sh` only signs UP — which on the live relay leaves a real
account behind and spends the account service's three-per-hour-per-IP budget.

🔴 **Three traps, all of which cost an hour today, all silent.**

  1. `input text` drops characters on longer strings. A 21-character
     passphrase arrived as 11. Nothing reports it; the sign-in just fails as
     though the password were wrong. So: chunks, and read the count back.

  2. The soft keyboard covers the button. A tap at the button's coordinates
     lands on a KEY — which types into the field you just filled, so the
     passphrase grew by one character every time I "pressed" sign in.

  3. Dismissing the keyboard MOVES the button, and on a slow emulator the
     layout is still settling when the tap goes out. ⚠️ This is not
     theoretical: it put the driver on the SIGN-UP form, one field from
     creating an account on production, with every coordinate correct at the
     moment it was read.

Trap 3 is why `tap_label` reads the bounds twice a second apart and refuses
to tap a control that is still moving — and why the sign-in button is found
by LABEL, never by index. An index picked "Create an account".

⚠️ It does not get all the way in yet. Filed separately: the app reaches the
sign-in screen with correct credentials, opens sockets, and then sits there
for four minutes showing nothing — no spinner that resolves, no error. TCP to
accounts.flamenet.io:443 and relay.flamenet.io:443 both succeed from inside
the emulator, and the same credentials sign in fine on iOS, so this is not
the network and not the credentials.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 09:33:20 -04:00