The device screen answered the wrong question. A rider arriving at it
has three: is the trainer on, will it take control, is the Click awake.
A list sorted by signal strength answers none of them without being
read, and it opened with a MAC address on every row — a number nobody
types, acts on, or can tell from the one below it, and on Android a
randomised one that changes anyway.
So the setup comes first, as slots: Trainer, Shifter, Heart rate. Each
says what is filling it, what is standing in the way, and the one action
that would fix it. The list is still everything FR-9.1 asks for; it is
just no longer the first thing to read.
- FR-9.3 lives in the trainer tile: green only when connected *and*
controlling, because a trainer that is attached and uncontrollable
will not move the resistance. Its action then is Reconnect, since FTMS
control is requested once at connect time — offering "acquire control"
as a button the rider had failed to press would be a lie about what
the protocol does.
- Peripherals of no known role fold into a collapsed list. A scan in a
flat picks up a dozen phones and a TV, and each was a full-height row
between the rider and their trainer. The fold opens itself when no
trainer has been identified at all, because a trainer that does not
advertise FTMS until something connects classifies as unknown — that
is the one case this must not swallow.
- Kind is a glyph, identity is the name. Where two rows would otherwise
be indistinguishable — a pair of pods, a room of "(no name)" — four
characters of the address disambiguate them and nothing more.
- Forget appears only on remembered devices. Forgetting a device that
was never remembered is a no-op the rider had to read past on every
row.
- The Click panel is a repair manual, so it appears when there is
something to repair. Its five-step drill used to be `open` by default
in exactly the state riders hit most; it is now folded behind a
summary, and its lede renders only while it is saying something the
tile cannot.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>