Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
32 lines
2.0 KiB
Plaintext
32 lines
2.0 KiB
Plaintext
android: the first run — a folder to keep music in, and an account to reach the network
|
|
|
|
Nobody had seen this app on a phone that has just installed it. On Android
|
|
the library root is never missing — config.rs falls back to the app's own
|
|
sandbox, a real folder nothing else can see — so "no folder yet" cannot be
|
|
a null check, and setup_done has never been written by the phone, so every
|
|
phone in existence reads as unstamped, Kyle's included. The tour therefore
|
|
opens on three clauses, not one: no flag, no saved account, and no records,
|
|
read only after the library and the credentials have both answered. Two
|
|
cards, skippable, and no password anywhere in it — the Soulseek step goes
|
|
to the card on Community and stops.
|
|
|
|
Every screen that is empty because of those two things now says so with the
|
|
row that fixes it: Home (whose copy predated the folder picker), Library →
|
|
Albums, Library → Artists, which had no empty state at all, and Search,
|
|
where a flat sentence about signing in became the row that does it. A row
|
|
goes away because the config moved, so the two doors onto the same folder
|
|
tell each other — You re-reads when the tour moves it, the tour's store is
|
|
told when You's own picker does — and the all-files row re-reads the grant
|
|
when the system screen hands the app back, the way You already did.
|
|
|
|
You → This phone opens the tour again as a preview that reads the config
|
|
and writes nothing, which is the door the phone walk drives on Kyle's own
|
|
device. The mock can answer as a fresh install now — an empty database, no
|
|
account, no permission, the sandbox root — so the whole thing is walked end
|
|
to end, and two commands that had no mock at all (player_control,
|
|
open_external) got one on the way past. It is the mock walk's first reload,
|
|
which turned up two things a reload does not clear by itself: the player
|
|
writes the session back on pagehide, so the fresh block clears it from a
|
|
pagehide listener of its own, and the viewport emulation lives on the
|
|
DevTools session, so the harness hands it back after the re-attach.
|