mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-09-07 15:07:17 +00:00
completeStereoPairMutation's refreshStereoPairMembersAsync ran after applyStereoPairProjection, and its UpdateDeviceStatus call always minted a strictly newer group generation via BeginGroupRefresh -- so ApplyPolledGroup's staleness guard could never reject it, even if its /getGroup read raced a slower path and was stale relative to the mutation that had already completed. The refresh now snapshots each member's post-projection generation and only applies its own read via ApplyPolledGroupIfBaseline, which requires nothing else (no other event or poll) to have changed group state in the meantime. Other UpdateDeviceStatus callers keep their existing always-newer semantics. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>