fix(session): require entire-screen sharing on Windows - #203
Merged
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
📜 Recent review details⏰ Context from checks skipped due to timeout. (8)
📝 WalkthroughWalkthroughWindows screen sharing now requests monitor-oriented capture, rejects non-monitor surfaces, stops rejected tracks, and reports a dedicated error. The session view shows an Entire Screen toast. macOS capture behavior remains unchanged. ChangesScreen-share capture policy
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant SessionView
participant screenShare
participant BrowserPicker
participant MediaStreamTrack
SessionView->>screenShare: requestScreenShareStream()
screenShare->>BrowserPicker: getDisplayMedia(constraints)
BrowserPicker-->>screenShare: selected display stream
screenShare->>MediaStreamTrack: read displaySurface
alt Non-monitor surface
screenShare->>MediaStreamTrack: stop()
screenShare-->>SessionView: EntireScreenShareRequiredError
SessionView-->>SessionView: show entireScreenRequiredToast
else Monitor surface
screenShare-->>SessionView: accepted display stream
end
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
✨ Simplify code
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 |
16 tasks
scotej
added a commit
that referenced
this pull request
Aug 8, 2026
Preserve the stronger entire-screen capture implementation from #203 while distinguishing unverifiable WebView2 selections from explicit window or tab choices. Add Linux behavior, display-surface propagation, and native denial passthrough coverage.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #188.
Summary
displaySurface: 'monitor'andmonitorTypeSurfaces: 'include'.Platform contract
The Screen Capture specification does not allow application constraints to remove picker choices. The request therefore prefers a monitor, then enforces the Windows policy on the consented stream before publication. No browser flags or native WebView2 bypasses are used.
Validation
npm test— 93 files / 1,129 tests passednpm run lintnpm run buildnpm run format:checknpm run build-storybookgit diff --checkGitHub CI remains the authority for the browser-backed accessibility run and the macOS/Windows Rust and installer jobs, which are not available in this cloud VM. The interactive Windows picker path is covered at the policy boundary with injected
MediaStreamtracks; a packaged Windows smoke test should confirm the WebView2 picker presentation.Summary by CodeRabbit