Pair the pod that works
Both pods, same bench, minutes apart, no writes: − pod buttons stop at ~51 s, every session; flag 0 -> 1; 2 key offers + pod 133 s, 78 paddle edges, flag never flipped, no key offer at all So the `−` pod is not the controller. It relays more when it works — all ten buttons, its twin's included — but "when it works" is under a minute without a Zwift blessing in the last day, and the `+` pod alone is a complete shifter: its paddle shifts up, `Y` shifts down, both already mapped. Shifting is what a ride cannot do without. `take_plus_pod` becomes `take_minus_pod` — the same rule with the pods exchanged — and the housekeeping, the connect guard and the no-pod-named default follow it. Opening both is still what stops the `−` pod reporting its own paddle, so it is still one link, just the other one. The UI stops telling riders to press the pod that dies: the panel asks for the `+` pod, the tile prefers it, and the `−` pod's row says what it actually offers — all ten buttons, for about fifty seconds. This settles A-2 from the other end too. The keep-alive that "removes the daily unlock, but only for the right controller" removes nothing. The right controller never needed it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -166,7 +166,8 @@
|
||||
|
||||
const minus = app.controller?.minus;
|
||||
const plus = app.controller?.plus;
|
||||
const live = minus?.state === 'connected' ? minus : plus?.state === 'connected' ? plus : null;
|
||||
// The `+` pod first: it is the one that keeps reporting (§2.3.3).
|
||||
const live = plus?.state === 'connected' ? plus : minus?.state === 'connected' ? minus : null;
|
||||
const searching = minus?.state === 'searching' || plus?.state === 'searching';
|
||||
out.push({
|
||||
key: 'click',
|
||||
@@ -177,13 +178,13 @@
|
||||
primary: live ? `Zwift Click · ${live.symbol} pod` : searching ? 'Searching…' : 'Not connected',
|
||||
detail: live
|
||||
? [
|
||||
live.pod === 'minus' ? 'All ten buttons' : 'Fallback — no D-pad',
|
||||
live.pod === 'plus' ? 'Shift up · Y shifts down' : 'All ten buttons, for ~50 s',
|
||||
live.batteryPercent != null ? `${live.batteryPercent}%` : null,
|
||||
live.buttonsSeen > 0 ? `${live.buttonsSeen} presses` : 'no presses yet',
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(' · ')
|
||||
: 'Press a button to wake it — the keyboard works meanwhile',
|
||||
: 'Press a button on the + pod — the keyboard works meanwhile',
|
||||
tone: live ? 'tone-ok' : 'tone-idle',
|
||||
// Connected, the useful action is *rebuild the link*. A Click can wedge
|
||||
// while looking perfectly healthy — battery arriving every five seconds,
|
||||
@@ -229,7 +230,7 @@
|
||||
|
||||
/** The Click panel is a repair manual, so it appears when there is something
|
||||
* to repair. Connected, the tile above has already said everything it knows. */
|
||||
const clickNeedsHelp = $derived(app.controller?.minus.state !== 'connected');
|
||||
const clickNeedsHelp = $derived(app.controller?.plus.state !== 'connected');
|
||||
|
||||
/**
|
||||
* What the row has to say, as badges. Nothing is emitted for a device that is
|
||||
|
||||
Reference in New Issue
Block a user