Originally created by: kristofferR
custom.css support with origin/size/UTF-8 guardsbun run check — 110 tests / 435 assertions; Biome, TypeScript, and generated-injection drift checks passbun test --coverage — 99.72% lines / 99.19% functions overall; update controller production source is 100% coveredbun audit — no vulnerabilitiescargo fmtcargo clippy --all-targets -- -D warningscargo test --lib — 87 passedcargo clippy --all-targets --features mcp -- -D warningscargo test --lib --features mcp — 88 passedGetMenu = 0) through focus/resize/maximize/restore and 50 exact-head close/reopen cycles; Settings keeps one HWND and a flat 598-handle process countcustom.css state were preserved after destructive-edge probes4e10c66 finished with zero findings; all prior actionable threads were fixed and resolvedRef [#51], Ref [#57], Ref [#58], Ref [#71], Ref [#72], Ref [#85], Ref [#87], Ref [#88], Ref [#90], Ref [#113], Ref [#118], Ref [#119], Ref [#122], Ref [#127], Ref [#128], Ref [#129], Ref [#130], Ref [#131], Ref [#135]
Refined Windows tray visibility/hide behavior and added keyboard shortcut overlay entries (including F1//).
Bug Fixes
Refined unread-badge readiness, cookie/login context detection, and Windows zoom relayout.
Documentation
Tickets: #113
Tickets: #118
Tickets: #119
Tickets: #122
Tickets: #127
Tickets: #128
Tickets: #129
Tickets: #130
Tickets: #131
Tickets: #135
Tickets: #32
Tickets: #51
Tickets: #57
Tickets: #58
Tickets: #71
Tickets: #72
Tickets: #85
Tickets: #87
Tickets: #88
Tickets: #90
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: coderabbitai[bot]
📝 Walkthrough
## Walkthrough The PR separates update discovery from consent-based installation, adds autoplay and custom CSS controls, refines Messenger and tray behavior, introduces bounded MCP page inspection, narrows capabilities, adds Linux theme observation, and updates documentation and validation. ### Changes **Update and settings controls** |Layer / File(s)|Summary| |---|---| |**Update commands and settings UI**`src-tauri/src/commands.rs`, `dist/settings.html`, `src-tauri/src/lib.rs`, `src-tauri/src/settings.rs`|Update discovery is separated from consented installation with single-flight installation and remembered availability. Settings expose autoplay, Windows tray, custom CSS, and update-install controls.| |**Shortcuts and Help menu**
`inject/src/panel/*`, `src-tauri/inject/panel.js`, `src-tauri/src/menu.rs`|Shortcut metadata, F1 and `/` toggles, Keyboard Shortcuts, and Report an Issue actions are added.| **Messenger and native behavior** |Layer / File(s)|Summary| |---|---| |**Media and Messenger refinements**
`inject/src/messenger/*`, `src-tauri/inject/messenger.js`|Autoplay suppression, live-track counting, cookie-policy detection, emoji reaction tagging, settings-button detection, unread readiness, feature diagnostics, and Windows zoom relayout are updated.| |**Notifications and tray lifecycle**
`src-tauri/src/{notifications,settings,tray,window}.rs`|Notifications are rate-limited, tray notices are persisted and guarded, Windows reveal behavior uses generation tokens, and auto-hide behavior depends on tray availability.| |**Reachability and custom CSS**
`src-tauri/src/{commands,custom_css,url_rules,window}.rs`, `dist/index.html`, `dist/settings.html`|DNS failures are surfaced with an Open anyway bypass, while custom CSS is provisioned, validated, scoped to Messenger URLs, and injected after page load.| **Capabilities and platform support** |Layer / File(s)|Summary| |---|---| |**MCP bridge and capability scopes**
`src-tauri/inject/mcp-bridge.js`, `src-tauri/capabilities/*`, `src-tauri/dev-capabilities/*`|Release permissions are narrowed, development event listening is isolated, and bounded `get-page-state` and `get-page-map` responders are added.| |**Linux theme and documentation**
`src-tauri/src/linux.rs`, `src-tauri/src/lib.rs`, `src-tauri/Cargo.toml`, `README.md`, `docs/index.html`, `inject/src/messenger/lib/injected-assets.test.ts`|Linux portal theme observation is added, update and trust documentation is revised, build metadata is refreshed, and injected-asset tests verify generated artifacts and locale content.| **Estimated code review effort:** 4 (Complex) | ~60 minutes ### Sequence Diagram(s) :::mermaid sequenceDiagram participant SettingsWindow participant UpdateCommands participant Installer SettingsWindow->>UpdateCommands: check_for_updates() UpdateCommands-->>SettingsWindow: available version or up-to-date SettingsWindow->>UpdateCommands: install_update() after confirmation UpdateCommands->>Installer: download and install update Installer-->>SettingsWindow: installation result **Possibly related issues** - [kristofferR/Carrier#135](https://github.com/kristofferR/Carrier/issues/135) — Covers the bundled update, capability, shortcut, tray, autoplay, and heuristic changes. - [kristofferR/Carrier#71](https://github.com/kristofferR/Carrier/issues/71) — Covers the Windows zoom resize dispatch. **Possibly related PRs** - [[kristofferR/Carrier#10](https://github.com/kristofferR/Carrier/issues/10)](https://github.com/kristofferR/Carrier/pull/10) — Related to the Settings-window update flow and tabbed settings UI. - [[kristofferR/Carrier#41](https://github.com/kristofferR/Carrier/issues/41)](https://github.com/kristofferR/Carrier/pull/41) — Related to the Messenger reachability and Open anyway flow. - [[kristofferR/Carrier#11](https://github.com/kristofferR/Carrier/issues/11)](https://github.com/kristofferR/Carrier/pull/11) — Related to the shared unread-badge and MCP bridge paths. **Suggested labels:** `javascript`
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation | | :------------------------: | :------- | :----------------------------------------------------------------------------------------------------------- | | Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% 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. | | Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. | | Title check | ✅ Passed | The title is broad, but it accurately reflects the PR’s focus on reliability and desktop behavior hardening. |✨ 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 `codex/windows-issue-sweep`Comment
@coderabbitai helpto get the list of available commands.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
@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
@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
@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
@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]
Rate Limit Exceeded
@kristofferRhave exceeded the limit for the number of chat messages per hour. Please wait 11 minutes and 43 seconds before sending another message.Originally posted by: kristofferR
@coderabbitai review
Originally posted by: kristofferR
@coderabbitai review