Menu ▾ ▴

#233 Windows integration push: badge, toasts, quick reply, protocol, jump list, flash, mono tray

closed
nobody
None
2026-10-05
2026-08-16
Anonymous
No

Originally created by: kristofferR

Brings Windows to parity with the macOS/Linux integrations — the umbrella of Epic [#187], delivered as one PR per the maintainer's request.

What's in it

Issue Feature
[#183] Taskbar unread overlay badge (set_overlay_icon) on every Messenger window, reusing tray_badge.rs's renderer widened to Windows
[#180] Native WinRT toast module (src/windows/toast.rs): per-conversation grouping (SetTag/SetGroup), clear-on-read (RemoveGroupWithId), a capped keep-alive map so Action Center clicks fire after the banner times out, and AUMID registration for the portable zip — replaces notify-rust on Windows
[#181] / [#86] Inline quick reply input + Open action on eligible toasts, reusing the shared reply machinery (now compiled on Windows)
[#184] CLI flags + carrier:// protocol: one action_from_argv parser for the cold and single-instance surfaces + tauri-plugin-deep-link registration
[#56] Recent-conversations taskbar jump list (ICustomDestinationList); entries launch --thread <id>
[#182] Taskbar flash on new message via the shared attention_on_message setting
[#185] Monochrome tray icon tinted for the taskbar theme, reading SystemUsesLightTheme (not AppsUseLightTheme, which diverges under Win11 Custom)

Settings rows: the attention_on_message and tray_icon_style gates in dist/settings.html widen to include Windows (attention relabelled "Flash Taskbar Icon").

Verification

Developed and checked by cross-compiling to x86_64-pc-windows-gnu with zig (this box has no MSVC/mingw that rustc accepts):

  • cargo fmt --check, cargo zigbuild --tests — compiles + links clean, zero rustc warnings, all cfg(windows) code included (WinRT, windows-sys, COM).
  • bun test — green except one pre-existing macOS-only test (PlistBuddy absent on this host).
  • The pure helpers (badge/tint rendering, toast XML + activation parsing, argv parsing, theme mapping, reply eligibility) are unit-tested and run on every platform's normal CI.

Not verified here: the runtime WinRT/COM behavior (actual toast delivery, taskbar badge/flash, jump list) could not be exercised — that needs an interactive Windows session, and clippy couldn't run under the zig cross-toolchain (ring's build script rejects the target query). Please run the normal macOS/Linux gate (fmt/clippy/cargo test --lib) and a manual Windows QA pass (#28) before merging.

Notes for review

  • tauri-plugin-deep-link is used for runtime register("carrier") only (HKCU, no admin, covers portable + moved folders). I deliberately did not add plugins.deep-link to tauri.conf.json, because that config also drives the macOS/Linux bundlers and I can't validate the generated installer here — so NSIS install-time registration + uninstall cleanup is a follow-up, documented rather than done.
  • Windows always groups toasts by conversation (its Action Center grouping is the group id, needed for clear-on-read), so the group_notifications_by_conversation toggle isn't consulted there.
  • Post-quit toast activation (COM INotificationActivationCallback) remains out of scope, as the issue specifies.

⚠️ Heads-up: pre-existing working-tree changes reverted

When I started, the working tree already had uncommitted, unrelated changes to dist/settings.html, dist/settings-update.js, and dist/index.html that removed shipped features (the strip_link_tracking row, notification grouping/clear rows, attention_on_message, IS_LINUX, runtime-capability handling). They looked accidental (a regression against main) and would have corrupted this PR, so I reverted those three files to HEAD before making my edits. If that was intentional WIP, it will need to be re-applied — it is not included here.

Summary by CodeRabbit

  • New Features
  • Added native Windows notifications with conversation grouping, avatars, sounds, inline replies, and Action Center support.
  • Added taskbar jump lists for reopening recent conversations.
  • Added Windows tray icon styles, unread badges, and live theme-aware updates.
  • Added Windows support for deep links, thread launching, reply handling, and notification clearing.

  • Enhancements

  • Added the “Flash Taskbar Icon” attention setting for Windows.
  • Attention controls are now available on macOS and Windows.

Related

Tickets: #180
Tickets: #181
Tickets: #182
Tickets: #183
Tickets: #184
Tickets: #185
Tickets: #187
Tickets: #247
Tickets: #56
Tickets: #86

Discussion

  • Anonymous

    Anonymous - 2026-08-16

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-08-16

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-08-16

    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-08-16

    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.
    To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

     
  • Anonymous

    Anonymous - 2026-08-16

    Originally posted by: coderabbitai[bot]

    Review Change Stack

    [!WARNING]

    Review limit reached

    @kristofferR, you've reached your PR review limit, so we couldn't start this review.

    Next review available in: 14 minutes

    Limit details: You’ve used all 1 included review currently available under your plan.

    You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.


    How can I continue?

    After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

    To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.


    How do review limits work?

    CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

    For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

    Please refer docs for additional details.


    Review details


    ⚙️ Run configuration

    Configuration used: Path: .coderabbit.yaml

    Review profile: ASSERTIVE

    Plan: Pro Plus

    Run ID: d056f462-f3ae-413c-91d6-92c5e463595f


    📥 Commits

    Reviewing files that changed from the base of the PR and between [bf40e6] and 8d32ba2e64448c2ac54841c679e7b60e67c1a780.


    📒 Files selected for processing (1)

    • inject/src/messenger/lib/injected-assets.test.ts

    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**: `7905942c-d31d-419d-bd24-f8fa4a65f317`
    📥 Commits Reviewing files that changed from the base of the PR and between [eb7833] and bf40e6731656aaecca5ff79acf66e011f21ffde4.
    📒 Files selected for processing (7) * `dist/settings.html` * `inject/src/messenger/lib/injected-assets.test.ts` * `src-tauri/Cargo.toml` * `src-tauri/src/lib.rs` * `src-tauri/src/settings.rs` * `src-tauri/src/tray_badge.rs` * `src-tauri/src/windows/jumplist.rs`
    **Included review availability:** Your plan includes up to 1 review per rolling hour; 0 remain after this review.

    📝 Walkthrough ## Walkthrough The PR adds Windows support for launch routing, carrier deep links, WinRT toast notifications, inline replies, tray styling, unread badges, taskbar jump lists, and related settings. ### Changes **Windows desktop support** |Layer / File(s)|Summary| |---|---| |**Windows launch and protocol routing**
    `src-tauri/Cargo.toml`, `src-tauri/src/actions.rs`, `src-tauri/src/cli.rs`, `src-tauri/src/lib.rs`|Windows launch arguments, carrier URLs, deep links, and cold-start thread actions use shared routing.| |**Windows toast notifications and replies**
    `src-tauri/src/windows/*`, `src-tauri/src/notifications.rs`, `src-tauri/src/lib.rs`, `src-tauri/src/window.rs`|WinRT toasts support grouping, activation, inline replies, attention requests, sync alerts, and conversation clearing.| |**Tray, taskbar badges, and jump lists**
    `src-tauri/src/tray.rs`, `src-tauri/src/tray_badge.rs`, `src-tauri/src/windows/jumplist.rs`, `src-tauri/src/menu.rs`, `src-tauri/src/lib.rs`|Windows tray styles follow taskbar themes, unread counts render as overlay badges, and recent conversations populate jump lists.| |**Windows settings and test coverage**
    `dist/settings.html`, `inject/src/messenger/lib/injected-assets.test.ts`, `src-tauri/src/settings.rs`|Windows exposes tray style and attention settings with Windows-specific labels and platform assertions. Notification clearing documentation includes Windows Action Center toasts.| **Estimated code review effort:** 5 (Critical) | ~90 minutes **Merge Risk:** _🟡 Moderate_ · up to `bf40e` The PR should receive owner follow-up before merge because Windows may briefly restore cleared conversation names in the taskbar jump list, and the Windows notification path may apply a clear-on-view setting that users cannot configure there. ### Sequence Diagram(s) :::mermaid sequenceDiagram participant Messenger participant WindowsToast participant User participant SharedHandlers Messenger->>WindowsToast: deliver notification with route and reply metadata WindowsToast->>User: show grouped toast User->>WindowsToast: activate open or reply action WindowsToast->>SharedHandlers: route activation or reply
    🚥 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 PR's Windows integration work and names its main features, although it is somewhat list-like. | | 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. |
    ✨ Finishing Touches 💡 1
    🛠️ Fix failing CI checks 💡 - [ ] Create stacked PR - [ ] Commit on current branch
    📝 Generate docstrings - [ ] Create stacked PR - [ ] Commit on current branch
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `feat/windows-integration-push`

    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 help to get the list of available commands.

     
  • Anonymous

    Anonymous - 2026-08-16

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-08-16

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-08-16

    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-08-16

    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.
    To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

     
  • Anonymous

    Anonymous - 2026-08-17

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-08-17

    Originally posted by: kristofferR

    @codex review

     
  • Anonymous

    Anonymous - 2026-08-17

    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-08-17

    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.
    To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

     
  • Anonymous

    Anonymous - 2026-08-17

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.