Skip to content

Linux CI cannot lint macOS-gated Rust — -D warnings gap #5019

Description

@oxoxDev

Summary

The Rust Quality CI job runs cargo clippy -- -D warnings on ubuntu-22.04. Every #[cfg(target_os = "macos")] region is configured out before clippy sees it, so macOS-only Rust is never linted in CI. After #4872 wired -D warnings into the pre-push hook, this gap surfaced as a hard block: 11 clippy errors sat green on main (invisible to Linux CI) while blocking every macOS dev's git push (#5018).

Impact

  • Lint regressions in macOS-gated code (window management, notifications, native panels — app/src-tauri/src/{mascot_native_window,notch_window,claude_code,native_notifications,imessage_scanner}.rs, plus ~26 cfg(macos) blocks in lib.rs) reach main undetected.
  • Discovered only when a macOS dev's pre-push hook fires — after the code is already merged.

Options considered

Approach Cost Verdict
Piggyback cargo clippy (shell + core) onto CI Full's existing build-macos-full job ~2-3 min marginal, warm compile cache Recommended
Dedicated per-PR macOS clippy lane macOS runners billed ~10x; 8-40 min/PR Expensive
Cross-target clippy from Linux (--target aarch64-apple-darwin) Non-viable: libsqlite3-sys, whisper cmake, cef-dll-sys need Apple clang/SDK

Recommendation

Add clippy to the existing macOS build job in CI Full rather than a new per-PR lane — the runner and compile cache already exist there. Residual: lint drift can still land via Linux/cloud-agent pushes between release promotions (bounded by macOS pre-push firing loudly, as happened in #5018).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions