Menu ▾ ▴

#74 macOS auto-update via the signed release DMG

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

Originally created by: kristofferR

Carrier ships only the user-facing DMG for macOS, but Tauri's stock updater expects an .app.tar.gz payload. This wires the macOS updater to the DMG end to end.

Release pipeline (release.yml)

  • Name Intel mac assets mac_intel (matching the Homebrew cask + release-notes asset names) instead of mac_x64.
  • After stapling the notarized DMG: sign it with the Tauri signer, then rewrite latest.json so the mac updater keys (darwin-aarch64 / darwin-x86_64 and their -app variants) point at the DMG URL + signature. Finally delete the stock unstapled .dmg and the .app.tar.gz updater archives so the public release stays clean.

App (commands.rs)

  • Split run_update_check by platform (#[cfg(target_os = "macos")] vs not).
  • The macOS path keeps Tauri's update check and minisign verification, then installs the verified DMG itself: mount with hdiutil (auto-detached via a Drop guard), locate Carrier.app, and swap the running bundle with ditto — with a backup/rollback if the copy fails, and an admin-privileges fallback (osascript) when the destination isn't user-writable.

Validation

Local gate green: cargo fmt --check, cargo clippy --all-targets -D warnings (compiles the macOS-only code on a mac runner), cargo test (60 passed), actionlint. The end-to-end update flow can only be exercised against a real signed/notarized release, so that's worth a manual check on the next tag.

Note: authored in a prior session and finalized here — I verified it builds/lints/tests clean and is correctly wired into check_for_updates and the auto-check in lib.rs. Independent of [#73] (different files); merge after.

Ref [#48]

https://claude.ai/code/session_01RJBYpVt2zj2i3defSHFuvj

Related

Tickets: #48
Tickets: #73
Tickets: #75

Discussion

  • Anonymous

    Anonymous - 2026-07-06

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-06

    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-07-06

    Originally posted by: coderabbitai[bot]

    [!WARNING]

    Review limit reached

    You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

    Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

    Next review available in: 17 minutes

    Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
    You're only billed for reviews past your plan's rate limits ($0.25/file).


    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

    Run ID: 991cea4a-017d-42f4-9421-8249fae0a444


    📥 Commits

    Reviewing files that changed from the base of the PR and between [2c3d95] and 7dcb1c5f7e8459288549219a65319d38c3b73dbc.


    📒 Files selected for processing (2)

    • .github/workflows/release.yml
    • src-tauri/src/commands.rs
    ✨ Finishing Touches
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `feat/macos-dmg-updater`

    Comment @coderabbitai help to get the list of available commands.

     

    Related

    Commit: [2c3d95]

  • Anonymous

    Anonymous - 2026-07-06

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-06

    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-07-06

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-06

    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-07-06

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 2026-07-06

    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-07-06

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.