Menu ▾ ▴

#394 chore: combined review of open PRs (do not merge)

closed
nobody
None
2026-11-07
2026-11-07
Anonymous
No

Originally created by: kristofferR

Do not merge. This PR exists only so CodeRabbit can review every open change at once: the account allows about one CodeRabbit review per hour, and these 17 PRs would otherwise queue for most of a day. Each change merges through its own PR; findings here are fixed on the PR they belong to.

It merges, onto main:
[#372], [#373], [#374], [#389] (stacked on [#374]), [#375], [#376], [#377], [#378], [#381] (stacked on [#378]), [#379], [#380], [#383], [#385], [#384], [#387], [#386], [#388], and branch feat/macos-communication-notifications for [#366] (its own PR follows)

The last commit only resolves conflicts between those branches (settings tab lists, adjacent settings tests, a notification wait condition, README bullets) and rebuilds the generated bundles.

Validated on this tree: bun run check (798 tests), cargo clippy -D warnings for Linux, macOS and Windows targets, and cargo test --lib (354 tests).

Summary by CodeRabbit

  • New Features
  • Customize notifications with group-chat controls, muted-conversation policies, scheduled pauses, test notifications, and optional sender details.
  • Choose separate privacy controls for names and avatars, hide typing status, and return focus to the message box when switching back to Messenger.
  • View unread badges as a dot, configure update-check frequency, and access release notes for available updates.
  • Windows now provides guidance when the WebView2 runtime is missing.
  • Bug Fixes
  • Improved notification matching to conversations, group filtering, and unread counts.
  • Pasting images and dropped files into Messenger works more reliably.
  • Notification delivery respects pause settings, Messenger Do Not Disturb, and open calls.

Related

Tickets: #366
Tickets: #372
Tickets: #373
Tickets: #374
Tickets: #375
Tickets: #376
Tickets: #377
Tickets: #378
Tickets: #379
Tickets: #380
Tickets: #381
Tickets: #383
Tickets: #384
Tickets: #385
Tickets: #386
Tickets: #387
Tickets: #388
Tickets: #389
Tickets: #395
Tickets: #398
Tickets: #400
Tickets: #401
Tickets: #404

Discussion

  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review Summary: ✅ Completed This comment shows the latest Codex review activity on this pull request. | Review | Status | Commit | Review trigger | | --- | --- | --- | --- | | 📝 **Code Review** | ✅ **Completed** <relative-time datetime="2026-11-07T17:59:20.904026Z">2026-11-07T17:59:20.904026Z</relative-time> | `efc01ed` | Manual request |
    ℹ️ 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.
     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-11-07

    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.
     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: coderabbitai[bot]

    <picture>Explain Change →</picture>

    Walkthrough

    The pull request adds Messenger notification, privacy, and interaction features, plus notification controls, update settings, and desktop release and runtime changes. It also updates settings UI, tests, documentation, and generated bundles. **Changes: Messenger notification flow** |Layer / File(s)|Summary| |:---|:---| |**Capture and correlate notifications**
    `inject/src/messenger/features/page-notifications.ts`, `inject/src/messenger/features/facebook-modules.ts`, `inject/src/messenger/lib/page-notifications.ts`, `inject/src/messenger/lib/notification-fallback.ts`, `inject/src/messenger/features/notifications.ts`|The Messenger module interceptor captures page notifications and records message-to-thread identity. Tagged notifications and persisted receipts restrict matching to the identified conversation.| |**Apply delivery rules and sender data**
    `inject/src/messenger/features/notifications.ts`, `inject/src/messenger/lib/thread-kind.ts`, `inject/src/messenger/lib/messenger-dnd.ts`, `inject/src/messenger/lib/notification-names.ts`, `src-tauri/src/notifications.rs`, `src-tauri/src/macos/notifications.rs`, `src-tauri/Info.plist`, `src-tauri/Cargo.toml`|Delivery applies global mute, muted-conversation, and group-chat rules. Visible notifications can include sender metadata. macOS can use communication-style notification content and fallback images.| **Notification settings, pause, and unread badges** |Layer / File(s)|Summary| |:---|:---| |**Persist notification preferences**
    `inject/src/types.d.ts`, `src-tauri/src/settings.rs`, `dist/settings.html`, `README.md`|Settings add notification pause, group-chat notification control, muted-conversation policies, configurable check intervals, and dot badge mode.| |**Pause notifications and render badges**
    `src-tauri/src/pause.rs`, `src-tauri/src/menu.rs`, `src-tauri/src/tray.rs`, `src-tauri/src/tray_badge.rs`, `src-tauri/src/lib.rs`, `inject/src/messenger/features/unread-badge.ts`, `inject/src/messenger/lib/thread-state.ts`|Tray and Dock menus expose pause choices and expiry. Unread state can come from Messenger’s database, with rendered-row fallback, and badge renderers support dot mode.| **Messenger privacy and interaction controls** |Layer / File(s)|Summary| |:---|:---| |**Separate name and avatar privacy**
    `inject/src/messenger/features/hide-names.ts`, `inject/src/messenger/lib/privacy.ts`, `src-tauri/inject/messenger.css`, `src-tauri/src/menu.rs`, `src-tauri/inject/mcp-bridge.js`|Name and avatar settings resolve independently, with fallback to the legacy combined setting. Messenger marking, styles, menus, and diagnostics recognize both identity and avatar markers.| |**Add composer, paste, and typing controls**
    `inject/src/messenger/features/composer-focus.ts`, `inject/src/messenger/features/image-paste.ts`, `inject/src/messenger/features/typing-block.ts`, `inject/src/messenger/lib/composer-focus.ts`, `inject/src/messenger/lib/image-paste.ts`, `inject/src/messenger/lib/typing-block.ts`, `inject/src/messenger/index.ts`, `README.md`|The injector adds focus-on-return, image-paste filtering, and typing-indicator blocking. Explicit native actions suppress automatic composer focus for a short period.| **Update discovery and release notes** |Layer / File(s)|Summary| |:---|:---| |**Refresh update offers and notes**
    `inject/src/settings/update-consent.ts`, `inject/src/settings/update-consent.test.ts`, `dist/settings-update.js`, `dist/settings.html`, `src-tauri/src/commands.rs`|Update offers refresh when the settings window regains focus. The UI requests release notes for the current offer, ignores stale responses, and supports configurable automatic-check intervals.| **macOS release signing and permissions** |Layer / File(s)|Summary| |:---|:---| |**Install and bundle the provisioning profile**
    `.github/workflows/debug.yml`, `.github/workflows/release.yml`, `.gitignore`, `src-tauri/tauri.conf.release.json`, `src-tauri/entitlements.release.plist`, `src-tauri/capabilities/default.json`, `AGENTS.md`|macOS workflows install the provisioning profile from a secret. Release configuration maps the profile and entitlements. The capability origins and IPC documentation are updated.| **Desktop runtime and recovery** |Layer / File(s)|Summary| |:---|:---| |**Check runtime availability and Messenger reachability**
    `src-tauri/src/windows/webview2.rs`, `src-tauri/src/lib.rs`, `inject/src/messenger/lib/stuck-worker.ts`, `src-tauri/inject/messenger.js`, `src-tauri/src/window.rs`|Windows startup checks WebView2 availability and can show download guidance. Messenger reachability probes race same-origin and Facebook endpoints. The Messenger window disables Tauri’s native drag-drop handler.| **Estimated code review effort:** 5 (Critical) | ~100 minutes **Change:** Other ### Sequence Diagram(s) :::mermaid sequenceDiagram participant MessengerPage participant PageNotificationInterceptor participant NotificationBridge participant ConversationRows participant NativeNotifications MessengerPage->>PageNotificationInterceptor: Register notification modules PageNotificationInterceptor->>NotificationBridge: Record message-to-thread identity MessengerPage->>NotificationBridge: Send notification tag NotificationBridge->>ConversationRows: Match tagged conversation NotificationBridge->>NativeNotifications: Deliver notification with sender metadata **Possibly related issues** - [[kristofferR/Carrier#366](https://github.com/kristofferR/Carrier/issues/366)](https://github.com/kristofferR/Carrier/issues/366) — The PR adds macOS communication notifications, sender and group metadata, and fallback images. - [[kristofferR/Carrier#349](https://github.com/kristofferR/Carrier/issues/349)](https://github.com/kristofferR/Carrier/issues/349) — The PR includes changes to file handling, notifications, unread and mute state, and update checks listed in this tracking issue. - [[kristofferR/Carrier#262](https://github.com/kristofferR/Carrier/issues/262)](https://github.com/kristofferR/Carrier/issues/262) — The PR adds configurable update-check frequency and release-note display. - [[kristofferR/Carrier#351](https://github.com/kristofferR/Carrier/issues/351)](https://github.com/kristofferR/Carrier/issues/351) — The PR adds Messenger page-notification interception and thread-aware matching. - [[kristofferR/Carrier#350](https://github.com/kristofferR/Carrier/issues/350)](https://github.com/kristofferR/Carrier/issues/350) — The PR changes image paste and dropped-file handling. - [[kristofferR/Carrier#365](https://github.com/kristofferR/Carrier/issues/365)](https://github.com/kristofferR/Carrier/issues/365) — The PR adds a startup message when WebView2 is missing. - [[kristofferR/Carrier#368](https://github.com/kristofferR/Carrier/issues/368)](https://github.com/kristofferR/Carrier/issues/368) — The PR adds a group-chat notification preference and suppression. - [[kristofferR/Carrier#352](https://github.com/kristofferR/Carrier/issues/352)](https://github.com/kristofferR/Carrier/issues/352) — The PR reads Messenger database unread and mute state. - [[kristofferR/Carrier#348](https://github.com/kristofferR/Carrier/issues/348)](https://github.com/kristofferR/Carrier/issues/348) — The PR adds timed notification pauses and call-window notification suppression. - [[kristofferR/Carrier#353](https://github.com/kristofferR/Carrier/issues/353)](https://github.com/kristofferR/Carrier/issues/353) — The PR reads Messenger’s account-level Do Not Disturb state and applies it to notification delivery. - [[kristofferR/Carrier#358](https://github.com/kristofferR/Carrier/issues/358)](https://github.com/kristofferR/Carrier/issues/358) — The PR adds account-level Do Not Disturb handling, but the supplied changes do not establish a settings display for that state. - [[kristofferR/Carrier#360](https://github.com/kristofferR/Carrier/issues/360)](https://github.com/kristofferR/Carrier/issues/360) — The PR adds a second-host reachability probe. - [[kristofferR/Carrier#259](https://github.com/kristofferR/Carrier/issues/259)](https://github.com/kristofferR/Carrier/issues/259) — The PR adds muted-conversation policies and notification test controls. **Possibly related PRs** - [[kristofferR/Carrier#340](https://github.com/kristofferR/Carrier/issues/340)](https://github.com/kristofferR/Carrier/pull/340) — Both changes address notification correlation; this PR restricts fallback receipt matching to the tagged conversation. - [[kristofferR/Carrier#327](https://github.com/kristofferR/Carrier/issues/327)](https://github.com/kristofferR/Carrier/pull/327) — This PR changes the `probeFacebook` reachability check introduced in the earlier worker-recovery change.
    Merge Risk: <picture></picture> Low · up to efc01

    The changes are mergeable with small follow-ups. One macOS communication notification can lose its sender styling under heavy route-less load, and the local release build instructions need the correct configuration flag.
    Pre-merge checks: <picture>Passed</picture> 3 · <picture>Inconclusive</picture> 2

    <picture>Failed</picture> Failed checks: 2 inconclusive | Check name | Status | Explanation | Resolution | | :---------------- | :--------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | | Description check | ![Inconclusive](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-inconclusive.svg) | The description explains the review purpose and validation, but omits the AI models section. The contributor's repository-owner status is unknown. | Confirm whether the contributor is the repository owner. If not, add an AI models section listing the models and versions used, or state None. | | Docstring Coverage | ![Inconclusive](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-inconclusive.svg) | Docstring coverage is 50.00% 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. Documenta… | Write docstrings for the functions missing them to satisfy the coverage threshold. |
    <picture>Passed</picture> Passed checks: 3 passed

    | Check name | Status | Explanation | | :------------------------ | :--------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------- | | Title check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | The title clearly identifies the combined review and its non-mergeable status. | | Linked Issues check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | Check skipped because no linked issues were found for this pull request. |
    Full details: Docstring Coverage

    **Explanation** Docstring coverage is 50.00% 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 56 functions across 49 files. (27 skipped: 12 unsupported, 1 too large, 14 over the file limit.) **Resolution** Write docstrings for the functions missing them to satisfy the coverage threshold.
    Finishing Touches

    Generate docstrings

    - [ ] Commit to this branch - [ ] Create a new PR
    Generate unit tests (beta)

    - [ ] Commit to this branch - [ ] Create a new PR
    • [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

    [!WARNING]
    Some tools did not complete. Review the errors below.


    <picture></picture> ast-grep (0.51.1)




    src-tauri/inject/messenger.js



    ast-grep timed out on this file





    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)
     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. Breezy!

    Reviewed commit: 6c2a150113

    ℹ️ 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".
     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. You're on a roll.

    Reviewed commit: 64beeeb858

    ℹ️ 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".
     
  • Anonymous

    Anonymous - 2026-11-07

    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.
     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. Keep them coming!

    Reviewed commit: efc01ed6f4

    ℹ️ 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".
     
  • Anonymous

    Anonymous - 2026-11-07

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.