Skip to content

fix(call): an unmute on a paired device keeps the microphone - #188

Merged
TheCryptoDonkey merged 1 commit into
mainfrom
fix/paired-device-claims
Sep 27, 2026
Merged

TheCryptoDonkey merged 1 commit into
mainfrom
fix/paired-device-claims

Conversation

@TheCryptoDonkey

Copy link
Copy Markdown
Member

From a real call with two people each on Android and a desktop (Mac, Linux): audio stopped and pressing unmute did nothing; leaving and rejoining did not help.

  • RoomSession.participants() arbitrated the mic and monitor roles on the relay's echo of this device's own entry. Between publishing a claim and its echo, renderCallMedia saw the other device still holding the mic and switched off the track just unmuted; the echo then made this device the holder, muted. Roles are now resolved on this device's current claims.
  • Mic takes (turning the mic on, unmute, leaving "beside another device") are stamped with nextRoleClaim, past every claim seen, so a paired phone whose clock runs ahead cannot keep winning.
  • New acceptance test: a laptop takes the mic back from a paired phone running 20 s fast. Fails on main with "Mic: this device (muted)", passes here. media, call-stability and e2e specs: 31/31 locally on chromium.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CG4pPCsd8pdySNvBpt8fTk

Arbitrate singular roles on this device's current claims rather than the
relay's echo of them, so the render between publish and echo no longer
mutes the microphone just unmuted. Stamp a mic take past every claim seen,
so a paired phone with a fast clock cannot keep winning.
@TheCryptoDonkey
TheCryptoDonkey merged commit 83e266b into main Sep 27, 2026
9 of 10 checks passed
@TheCryptoDonkey
TheCryptoDonkey deleted the fix/paired-device-claims branch September 28, 2026 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant