Files
BikeControl/src-tauri
dtourolleandClaude Opus 5 3f23643e86
🚴 Build and Test BikeControl / Workspace tests (push) Failing after 2s
🚴 Build and Test BikeControl / Android compile check (push) Skipped
One pod is the whole controller
Measured on the hardware: connected on its own, the `−` pod delivers all
ten buttons. Its own paddle on bit 8 and its D-pad on bits 0-3, and the
`+` paddle on bit 12 with the face buttons on 4-7 relayed from its twin —
445 frames, one characteristic, one link, with the `+` pod never
connected at all.

§2.3.1 already recorded that a pod relays its twin's paddle when both are
connected. What was not known is that it does so when it is the *only*
one connected, and that changes the shape of the problem: the second link
is not carrying anything the first one does not already have.

So the `+` pod is no longer connected while the `−` pod is there to speak
for it, and if it did connect first — it is whichever one the rider
happened to wake — the housekeeping sweep closes that link once the `−`
pod arrives. `auto` is left alone, so it is picked up again on its next
advertisement if the `−` pod goes away. It remains a real fallback for a
rider who only has that half, or whose `−` pod is asleep.

This deletes the configuration the bug lives in rather than working
around it. Both pods connected is the state where the `+` press arrives
twice — which is the only reason the pair-merge in `Buttons` exists — and
it is also the state where the `−` pod stops reporting its own paddle,
which is what an evening went into. One link removes both, halves the
connections and reconnect paths, and makes the swap machinery moot in the
normal case.

The merge and swap logic stay for now. They are still correct if both
pods do end up connected, and they should not be torn out until this has
ridden a few sessions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 22:21:40 +02:00
..
2026-08-20 22:21:40 +02:00