Repository navigation
docs: define admin-mute vs self-mute state model - #734
Conversation
Specifies the layered adminMuted/selfMuted state model, effective-mute logic (adminMuted || selfMuted), and the data-channel mute/unmute payload contract, per the acceptance criteria. Documentation only; implementation tracked in #676 and #678. Closes #677 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
code-reviewer verdict: NEEDS CHANGES (self-authored PR — recorded as a marker comment since GitHub blocks state-bearing self-review). An independent code-reviewer invocation (separate from the implementer) verified every cited identifier against the current source; the description of current behaviour is accurate and the proposed model meets #677's acceptance criteria. Changes required before this becomes the build-against spec: Major
Minor
Nit
Moving the board item back to Ready for a follow-up commit addressing these. |
- Retain the program-output special case (isProgramOutputLine / isProgramUser) explicitly in §2.1 and §5 instead of letting the effectiveMuted OR formula silently subsume it. - Fix §5 so isRemotelyMuted maps to adminMuted (not selfMuted). - Note that #678 must drop the consume/reset dispatch in use-mute-input.tsx:33-43 now that adminMuted is persisted. - Clarify in §3.2 that `from` on the "unmute" directive is injected by the SMB bridge, mirroring the mute path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
code-reviewer verdict: LGTM (self-authored PR — recorded as a marker comment since GitHub blocks state-bearing self-review). An independent code-reviewer invocation (separate from the implementer) verified every cited identifier in |
Prettier-only reformat (markdown table alignment and inline-code wrapping) of the already-reviewed content; no semantic change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
code-reviewer verdict: LGTM (carried forward to commit b534cb8). The independent code-reviewer LGTM above was on the content at e14d48b. Commit b534cb8 is a prettier-only reformat (markdown table alignment + inline-code wrapping) with no semantic change, applied to fix the failing |
Summary
muteParticipant: 'mute'->isRemoteMute->isRemotelyMuted->muteInput) and the gaps it leaves.CallState:adminMutedandselfMuted, layered so neither overwrites the other.effectiveMuted = adminMuted || selfMutedwithtrack.enabled = !(adminMuted || selfMuted).muteParticipant: 'mute'plus a new mirrormuteParticipant: 'unmute'(admin layer only), and keeps self-mute/unmute as local actions.Test plan
Closes #677
🤖 Generated with Claude Code