Originally created by: kristofferR
Messenger's voice and video call buttons do nothing in Carrier, on macOS, Windows and Linux (Ref [#335]).
Messenger starts a call by opening a blank window with window.open, then loading the call page into it. If no window comes back, it gives up silently. Carrier never handled new windows, so every WebView refused it: WKWebView and WebKitGTK return none, and WebView2 marks the request handled without a window. The Safari identity added in [#342] and [#343] gets Carrier past Messenger's unsupported-browser check, but the call still had nowhere to open.
Carrier now handles new windows:
popup-* windows that share the opener's web session, so the call is signed in. On macOS they identify as Safari like the main window. Other web pages open in the browser, and a page can never open Carrier's local pages.window.screenX/Y, which WKWebView reports wrongly (the window opened below the screen) and Wayland not at all.window.close() closes its window on macOS and Linux too. wry's macOS UI delegate gains webViewDidClose:, and on Linux the window closes when wry destroys its view.Tested with signed debug builds:
RTCPeerConnection is undefined and Messenger greys out calls in end-to-end encrypted chats. Recorded in docs/user-agent-policy.md; [#345] tracks a fix.
Tickets: #251
Tickets: #264
Tickets: #335
Tickets: #342
Tickets: #343
Tickets: #345
Originally posted by: chatgpt-codex-connector[bot]
Codex Review Summary
This comment shows the latest Codex review activity on this pull request.
05b83eaℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review" or "@codex security review". Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Delightful!
Reviewed commit:
a9b48e97dfℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Originally posted by: coderabbitai[bot]
Action performed
Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
Originally posted by: coderabbitai[bot]
<picture>
</picture>
Walkthrough
Messenger windows now route navigation and page-opened windows through separate URL policies. In-app popups share the opener’s session and receive call and close handling. Window targeting and Carrier’s injected features account for popup windows. **Changes: Messenger popup windows** |Layer / File(s)|Summary| |:---|:---| |**Navigation and popup route policies**
`src-tauri/src/url_rules.rs`|Added routing for internal URLs, external HTTP(S) URLs, tracking redirects, and blocked schemes. Popup rules keep `about:blank` and non-local HTTP(S) pages in-app. Tests cover both policies.| |**Popup creation and platform call handling**
`src-tauri/src/window.rs`, `src-tauri/src/linux.rs`, `src-tauri/src/macos/*`, `AGENTS.md`|Messenger windows now route navigation and `window.open` requests through the URL policies. In-app popups share the opener’s session and receive platform-specific call and close handling. Linux call windows enable WebRTC and media capture, with microphone, camera, and display-capture requests allowed. Carrier’s injected features skip windows with an opener.| |**Messenger-window targeting**
`src-tauri/src/menu.rs`, `src-tauri/src/macos/share_intake.rs`, `src-tauri/src/window.rs`|Focused-window selection, share intake, and macOS theme rebuilding now use the Messenger-window label predicate.| **Estimated code review effort:** 3 (Moderate) | ~25 minutes **Change:** Bug fix · **Severity of issue fixed:** Medium ### Sequence Diagram(s) :::mermaid sequenceDiagram participant MessengerWindow participant open_popup participant popup_route participant TauriWebviewWindow participant SystemBrowser MessengerWindow->>open_popup: Open requested URL open_popup->>popup_route: Classify popup URL popup_route-->>open_popup: Return route alt In-app route open_popup->>TauriWebviewWindow: Create popup with opener session else Browser route open_popup->>SystemBrowser: Open destination else Blocked route open_popup-->>MessengerWindow: Deny popup end **Possibly related issues** - kristofferR/Carrier issue 335: The report says Messenger voice and video calls do not work in Carrier. This change adds Linux call support and call-window handling.
Merge Risk: <picture>
</picture> Moderate · up to
a9b48On Linux, sign-in pages can receive microphone, camera, or screen-capture permission without a prompt. Call popups can also receive misdirected macOS commands or restore an earlier popup’s geometry. Scope the permission grant and correct popup targeting before merging.
Pre-merge checks: <picture>
</picture> 3 · <picture>
</picture> 2
<picture>
<picture>
</picture> Passed checks: 3 passed
| Check name | Status | Explanation | | :------------------------ | :--------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------ | | Title check |  | The title clearly identifies the primary change: Messenger call windows now open correctly. | | Linked Issues check |  | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check |  | Check skipped because no linked issues were found for this pull request. |
Full details: Docstring Coverage
**Explanation** Docstring coverage is 73.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 15 functions across 7 files. (1 skipped: 1 unsupported.) **Resolution** Write docstrings for the functions missing them to satisfy the coverage threshold.
Full details: Description check
**Explanation** The description covers the problem, the change, and the testing. It does not follow the repository template. The template requires an "AI models used" section and an optional "Reasoning levels" section. The author did not include either section. The description also has no "## Summary" heading. Its content is a detailed problem and change summary, so the check is mostly complete but misses a required section. **Resolution** Add a "## Summary" heading above the problem and change description. Add an "AI models used:" line that lists each model and version used to create or edit code, tests, or PR text, or write "None". Optionally add a "Reasoning levels" line, or write "Reasoning levels: Unavailable (not exposed by tool)" if the tool does not expose it.
Finishing Touches
Generate docstrings
- [ ] Commit to this branch - [ ] Create a new PR
Generate unit tests (beta)
- [ ] Commit to this branch - [ ] Create a new PR
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.
Share
- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Originally posted by: coderabbitai[bot]
Action not completed
Review rate limited. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
Originally posted by: chatgpt-codex-connector[bot]
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
Originally posted by: kristofferR
@codex review
Originally posted by: coderabbitai[bot]
Action not completed
Pull request is closed. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Keep it up!
Reviewed commit:
05b83eaeadℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Ticket changed by: kristofferR