Repository navigation
v2.2.1
2.2.1
Fix: a follower could get stuck being "switched" forever after it had already arrived
If a device's disconnect notification was missed, flow-client and flow-server would keep trying to switch a device that had already moved to the target host — logging this once every two seconds, indefinitely:
Could not switch F262458A to the desired host yet (HID++ error 0x09); will retry
The reconciliation loop learned which devices were attached to the local receiver only from connect/disconnect notifications, so a single lost notification left it with a permanently wrong belief and no way to correct it. Meanwhile the receiver was answering on every attempt that it had no radio link to the device — which is exactly the information the lost notification would have carried.
- That answer is now believed. A receiver reporting no link to a device is treated as evidence the device isn't here, so switching stops until it comes back. A device that is merely asleep, mid-roam, or doesn't support host switching keeps the previous retry behaviour — those say nothing about where a device is.
- Both receiver families are handled. Bolt and Unifying receivers report the same "no link to that device" condition with different error codes (
0x04vs0x09) — verified on real hardware with an MX Keys Mini and an MX Anywhere 2S. Both are now recognised, so this isn't fixed for only half of your devices. - The reverse case is covered too. Devices believed absent are re-checked periodically while a switch is pending, so a missed connect notification can't leave a device permanently undriven either.
- The client no longer loses notifications to a failed register read. Follower connect/disconnect events are matched against the devices resolved at startup instead of being rebuilt from live reads that can fail or return slightly different values — one concrete way the disconnect above went missing. The server already worked this way.
- Quieter, more honest logs. A failure that persists is reported once rather than every tick, and the display now says when a device has left this host (or turned out to be here after all) instead of silently disagreeing with the reconciler.
switch-to-host also now reports device <id> is not reachable through its receiver instead of a bare HID++ error 0x09.
Full changelog: v2.2.0...v2.2.1