feat(desktop): mute a browser tab - #7252
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review ... You can customize Macroscope's approvability policy. Learn more. |
869c01c to
1679e7b
Compare
1679e7b to
a44b7c9
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit a44b7c9. Configure here.
There was no way to silence a preview tab, or to tell which of several open tabs was making noise. Adds per-tab muting modelled on Chromium: "Mute tab"/"Unmute tab" in the tab's right-click menu, a speaker icon while a tab is playing sound that shows as crossed-out when muted, and click-to-toggle on that icon. Model: Claude Opus 4.5. Harness: T3 Code.
a44b7c9 to
d347f6f
Compare
There was a problem hiding this comment.
reviewed at d347f6f. the desktop mute lifecycle, audibility reconciliation, runtime tab routing, ipc contract, and ui interactions look sound. targeted, desktop, and web test suites pass, all required checks pass, and i found no remaining blockers.

What Changed
Preview tabs can now be muted, modelled on Chromium's behaviour.
crossed-out when muted.
Why
There was no way to silence a preview tab, or to tell which of several open
tabs was making noise.
UI Changes
CleanShot.2026-08-16.at.20.31.49-small.mp4
Checklist
Note
Medium Risk
Touches preview tab lifecycle and state emission (race-sensitive); contract adds required
audioMuted/audiblefields onDesktopPreviewTabStatefor all consumers.Overview
Adds Chromium-style mute for desktop preview tabs: users can silence a tab, see which tabs are playing audio, and toggle mute from the tab strip or context menu.
Desktop / contracts:
DesktopPreviewTabStategainsaudioMuted(user intent, survives navigation and webview swaps) andaudible(observed from Chromium).PreviewManagerimplementssetAudioMuted, listens foraudio-state-changed, reconciles audibility after attach, and usesemitIfCurrentin a few places so stale snapshots do not roll back live audio state. New IPCdesktop:preview-set-audio-mutedis wired through preload andDesktopPreviewBridge.Web UI:
RightPanelTabsshows a speaker control only while a tab is audible (muted tabs use a crossed-out icon). Mute/unmute in the tab context menu is always available for preview tabs. Desktop calls usepreviewRuntimeTabId(thread + server epoch + session tab id), not the raw server session id.Tests: Extensive
PreviewManagercoverage for mute re-apply, audibility races, stale guests, and navigation; component tests for indicator visibility and runtime id routing.Reviewed by Cursor Bugbot for commit d347f6f. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add mute control for browser tabs in the desktop preview panel
setAudioMuted(tabId, audioMuted)across the IPC bridge,PreviewManager, and preload layer to mute/unmute individual preview tabs.PreviewTabStateandDesktopPreviewOverlaywithaudioMutedandaudiblefields; mute intent persists across webview swaps and navigation.RightPanelTabs, visible when a tab is producing sound, using a runtime tab ID resolver passed fromChatView.audio-state-changedevents are tracked per-tab with deduplication and reconciliation on webview attach.Macroscope summarized d347f6f.