Repository navigation
MCP listSources misses windows, and never says why #1140
Copy link
Copy link
Closed
Labels
status: fixed in mainWork is merged into main but may not be in a downloadable release yet.Work is merged into main but may not be in a downloadable release yet.status: pending releaseMerged change is waiting for a packaged desktop release.Merged change is waiting for a packaged desktop release.
Milestone
Description
Found during the v2.1.0 release-candidate QA (Windows 11, CI build of release/v2.1.0 @ 9c55596).
What happened
The stdio MCP listSources returned the windows ["Claude", "Claude", "OpenScreen"], while the HUD's source selector listed 5 windows at about the same time, and a Microsoft Edge window and the Settings app ("Paramètres", a UWP window) were open. startRecording {window: "Paramètres"} then failed with No window title contains "Paramètres".
What the investigation found
- The HUD's selector,
openscreen sourcesand the MCP all go through the sameget-sourcesIPC handler, which returnsdesktopCapturer.getSourcesunfiltered. Only the options differ: the HUD asks for 320×180 thumbnails and window icons, the CLI for 32×18 and no icons. - Those options do not change the list. Measured on this machine with Edge, Settings, Parsec and the NVIDIA overlay open: all four option sets (and a 0×0 thumbnail) return the same 5 windows, Settings included.
- The installed CI build's
openscreen sources --jsonand a running stdio MCPlistSourcesboth list Edge and "Paramètres" today. - In the failing call, Parsec and the NVIDIA GeForce Overlay were missing too, although they are always open, and a second "Claude" window was present. So the call saw a desktop on which every app but Claude and OpenScreen was not showing. That fits a computer-use session that hides the apps it has not been granted, but this was not reproduced.
- Chromium does not list windows that are minimized or hidden, in the HUD or anywhere else. So nothing in OpenScreen dropped those windows. The real gap is that
listSourcesandstartRecordingnever say so. An agent that gets "No window title contains" for a window it can see in the taskbar has nothing to go on.
Fix
listSourcessays that minimized and hidden windows are not listed.- The
startRecording/openscreen record --windowmiss says the window may be minimized or hidden, and to restore it. - The window/display pick moves to a pure function with unit tests.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status: fixed in mainWork is merged into main but may not be in a downloadable release yet.Work is merged into main but may not be in a downloadable release yet.status: pending releaseMerged change is waiting for a packaged desktop release.Merged change is waiting for a packaged desktop release.
Activity
EtienneLescot commentedon Oct 12, 2026
The macOS pass on the same candidate (build run 38252812147, macOS 26.5 arm64, PR #1131) saw the same kind of gap, in both directions:
OPENSCREEN_MAC_SOURCE_PICKER=legacy: the HUD's Windows tab listed 1 window (QuickTime),listSourceslisted 2 (OpenScreen,mini-boutique-demo.mp4), and the visible Claude desktop window was in neither.listSourceslisted 3 windows where the HUD listed 5.Same conclusion on macOS: there is no second enumeration to align.
CliSourcesRunner(MCPlistSources,openscreen sources),CliRecordRunner.pickSource(startRecording), the HUD'sSourceSelectorandRecStageall call the oneget-sourceshandler inelectron/ipc/handlers.ts, and the CLI/MCP process registers it through the sameregisterIpcHandlers(registerAppHandlersForCliinelectron/cli/cliMain.ts). OpenScreen applies no filter of its own.On macOS the filtering is Chromium's
ThumbnailCapturerMac(Electron 41.2.1 = Chromium 146.0.7680.188,chrome/browser/media/webrtc/thumbnail_capturer_mac.mm), identical for every caller:SCShareableContent getShareableContentExcludingDesktopWindows:true onScreenWindowsOnly:true: minimized windows, windows on another Space and windows behind a full-screen window are not listed;windowLayer == 0only: the HUD and the source selector (alwaysOnTop, floating level) are never listed, nor menus and the Dock;So the macOS differences are snapshots of different desktops, not different filters:
OpenScreenin pass 1 is the editor window, whichlistSourcescan see from theopenscreen mcpprocess but the HUD never can, because the HUD and the editor are never open together; and a Claude window on another Space, or in full screen while the HUD was up, is in neither list. For the fix here, the macOS wording worth adding to thelistSources/ miss message: windows on another Space or behind a full-screen app are not listed either, not only minimized ones.fix(mcp): say that minimized and hidden windows are not listed
github-actions commentedon Oct 13, 2026
Fixed by #1150 and merged into
main.This change is assigned to the
Next Releaserelease milestone and is not necessarily available in the latest downloadable desktop release yet. It is currently marked asstatus: pending releaseuntil a packaged release containing it is published.EtienneLescot commentedon Oct 15, 2026
Moved into
v2.1.0as part of the pre-release cut.