Skip to content

Fix: Fix dashboard showing duplicate cards for nearby AirPods of same model#502

Merged
d4rken merged 1 commit into
mainfrom
fix/duplicate-device-cards
Apr 13, 2026
Merged

Fix: Fix dashboard showing duplicate cards for nearby AirPods of same model#502
d4rken merged 1 commit into
mainfrom
fix/duplicate-device-cards

Conversation

@d4rken

@d4rken d4rken commented Apr 13, 2026

Copy link
Copy Markdown
Member

What changed

Fixed the dashboard sometimes showing duplicate cards for the same AirPods when other AirPods of the same model are nearby. Previously, a stranger's AirPods could be incorrectly matched to your profile via signal strength alone, even when your profile has identity keys configured.

Technical Context

  • Root cause: the signal-quality fallback in the BLE factory did not exclude profiles that have an identity key (IRK). When IRK matching failed for the current scan (e.g. due to BLE address rotation timing), the fallback would match ANY nearby AirPods of the same model to your keyed profile, creating a second card alongside the real IRK-matched one.
  • Fix is two-layered: (1) the factory now restricts the signal-quality fallback to profiles without an IRK -- keyed profiles must match via IRK only; (2) DeviceMonitor collapses duplicate live entries for the same IRK-backed profile, preferring the IRK-verified candidate, as a UI safety net.
  • A diagnostic WARN log is emitted when a keyed profile would have matched under the old fallback, to help detect stale IRKs in the field.
  • For profiles without identity keys, multiple same-profile matches are left intact since they represent genuinely different ambient devices.

@d4rken d4rken added the bug Something isn't working label Apr 13, 2026
@d4rken d4rken merged commit 70d9c04 into main Apr 13, 2026
10 checks passed
@d4rken d4rken deleted the fix/duplicate-device-cards branch April 13, 2026 12:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant