Complete Linux desktop integration
Facebook Messenger on your desktop, without the Facebook clutter
Brought to you by:
kristoffer-r
Originally created by: kristofferR
Ref [#171]
Ref [#166]
Ref [#167]
Ref [#168]
Ref [#169]
Ref [#170]
Ref [#150]
Tickets: #150
Tickets: #166
Tickets: #167
Tickets: #168
Tickets: #169
Tickets: #170
Tickets: #171
Originally posted by: kristofferR
@coderabbitai review
Originally posted by: kristofferR
@codex review
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]
No actionable comments were generated in the recent review. 🎉
ℹ️ Recent review info
⚙️ Run configuration
**Configuration used**: Path: .coderabbit.yaml **Review profile**: ASSERTIVE **Plan**: Pro Plus **Run ID**: `c5122008-3a5b-4836-be56-2da7ab7ffeb4`📥 Commits
Reviewing files that changed from the base of the PR and between [e780e7] and d4aea695b34f44babb635944f17bbcbef92e9cf2.📒 Files selected for processing (1)
* `src-tauri/src/notifications.rs`📝 Walkthrough
## Walkthrough The PR adds Linux desktop actions, AppStream and Flatpak packaging, portal-based global shortcuts, KDE notification quick replies, unread tray and Unity badges, symbolic tray icons, Flatpak-aware settings, and CI validation. ### Changes **Linux desktop integration** |Layer / File(s)|Summary| |---|---| |**Desktop actions and packaging**`.github/workflows/ci.yml`, `src-tauri/linux/*`, `src-tauri/tauri.conf.json`, `packaging/flatpak/*`, `src-tauri/src/cli.rs`|Adds CLI actions, desktop entry actions, AppStream metadata, Flatpak manifests and vendored Cargo sources, plus CI validation for Linux packaging artifacts.| |**Runtime settings and tray indicators**
`dist/settings.html`, `src-tauri/src/settings.rs`, `src-tauri/src/tray.rs`, `src-tauri/src/tray_badge.rs`, `src-tauri/src/commands.rs`, `src-tauri/src/lib.rs`|Adds Flatpak capability reporting, tray icon style selection, symbolic icon rendering, unread badges, and Unity launcher count updates.| |**Portal global shortcuts**
`src-tauri/src/hotkey.rs`, `src-tauri/src/hotkey_portal.rs`|Adds XDG GlobalShortcuts portal sessions, fallback synchronization, activation handling, recovery, and persisted setting updates.| |**KDE notifications and quick replies**
`src-tauri/src/notifications.rs`, `inject/src/messenger/features/quick-reply.ts`, `inject/src/messenger/lib/quick-reply.ts`, `src-tauri/inject/messenger.js`|Adds Linux notification response handling, Messenger quick-reply delivery and draft preservation, acknowledgement routing, and tests for state transitions and response behavior.| **Estimated code review effort:** 5 (Critical) | ~120 minutes **Possibly related issues** - [[kristofferR/Carrier#170](https://github.com/kristofferR/Carrier/issues/170)](https://github.com/kristofferR/Carrier/issues/170) — Covers desktop actions, CLI flags, AppStream metadata, packaging, and CI validation. - [[kristofferR/Carrier#171](https://github.com/kristofferR/Carrier/issues/171)](https://github.com/kristofferR/Carrier/issues/171) — Covers the broader Linux integration work in this PR. - [[kristofferR/Carrier#166](https://github.com/kristofferR/Carrier/issues/166)](https://github.com/kristofferR/Carrier/issues/166) — Directly corresponds to the XDG GlobalShortcuts portal implementation. - [[kristofferR/Carrier#167](https://github.com/kristofferR/Carrier/issues/167)](https://github.com/kristofferR/Carrier/issues/167) — Covers KDE inline replies, notification handling, and reply bridging. - [[kristofferR/Carrier#168](https://github.com/kristofferR/Carrier/issues/168)](https://github.com/kristofferR/Carrier/issues/168) — Covers unread tray and Unity launcher indicators. - [[kristofferR/Carrier#169](https://github.com/kristofferR/Carrier/issues/169)](https://github.com/kristofferR/Carrier/issues/169) — Covers symbolic Linux tray icon settings and rendering. **Possibly related PRs** - [[kristofferR/Carrier#2](https://github.com/kristofferR/Carrier/issues/2)](https://github.com/kristofferR/Carrier/pull/2) — Related unread indicator and tray update plumbing. - [[kristofferR/Carrier#70](https://github.com/kristofferR/Carrier/issues/70)](https://github.com/kristofferR/Carrier/pull/70) — Related Messenger feature initialization and shared injected typings. - [[kristofferR/Carrier#155](https://github.com/kristofferR/Carrier/issues/155)](https://github.com/kristofferR/Carrier/pull/155) — Related Linux tray implementation and icon rendering changes. ### Sequence Diagram(s) :::mermaid sequenceDiagram participant KDE as KDE notification service participant Carrier as Carrier notifications participant Messenger as Messenger injection participant App as Carrier native runtime KDE->>Carrier: deliver inline reply Carrier->>Messenger: invoke quick-reply bridge Messenger->>Messenger: insert and send reply Messenger-->>App: emit carrier:reply-result App->>Carrier: complete pending reply :::mermaid sequenceDiagram participant User as User participant Carrier as Carrier settings participant Portal as GlobalShortcuts portal participant Main as Main window User->>Carrier: enable global hotkey Carrier->>Portal: create and bind shortcut session Portal-->>Carrier: activation event Carrier->>Main: toggle window
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation | | :------------------------: | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title accurately summarizes the main change: broad Linux desktop integration across notifications, tray, hotkeys, Flatpak, and packaging. | | Docstring Coverage | ✅ Passed | Docstring coverage is 98.83% which is sufficient. The required threshold is 80.00%. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |✨ Finishing Touches
📝 Generate docstrings
- [ ] Create stacked PR - [ ] Commit on current branch🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests - [ ] Commit unit tests in branch `agent/linux-integration-171`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)Comment
@coderabbitai helpto get the list of available commands.Originally posted by: kristofferR
@coderabbitai review
Originally posted by: kristofferR
@codex review
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: kristofferR
@codex review
Originally posted by: kristofferR
@coderabbitai review
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: kristofferR
@coderabbitai review
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: kristofferR
@codex review
Originally posted by: kristofferR
@coderabbitai review
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: kristofferR
@coderabbitai review
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: kristofferR
@codex review
Originally posted by: kristofferR
@coderabbitai review
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: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Swish!
Reviewed commit:
e780e77aefℹ️ 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: kristofferR
@coderabbitai review
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: kristofferR
@coderabbitai review
Originally posted by: kristofferR
@codex review