Skip to content

chore: fix new clippy warnings (derive default)#21

Open
tomerqodo wants to merge 3 commits intocoderabbit_combined_20260121_augment_sentry_coderabbit_1_base_chore_fix_new_clippy_warnings_derive_default_pr150from
coderabbit_combined_20260121_augment_sentry_coderabbit_1_head_chore_fix_new_clippy_warnings_derive_default_pr150
Open

chore: fix new clippy warnings (derive default)#21
tomerqodo wants to merge 3 commits intocoderabbit_combined_20260121_augment_sentry_coderabbit_1_base_chore_fix_new_clippy_warnings_derive_default_pr150from
coderabbit_combined_20260121_augment_sentry_coderabbit_1_head_chore_fix_new_clippy_warnings_derive_default_pr150

Conversation

@tomerqodo
Copy link
Copy Markdown

@tomerqodo tomerqodo commented Jan 22, 2026

Benchmark PR from qodo-benchmark#150

Summary by CodeRabbit

  • Bug Fixes

    • Fixed inverted mouse button state mappings in tray event handling that were incorrectly representing button states
  • New Features

    • Added convenient constructor for tray icon click events with simplified initialization using sensible defaults
  • Refactor

    • Standardized how default values are defined across multiple configuration and utility enums for consistency and maintainability

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 22, 2026

Walkthrough

This PR systematically refactors multiple enums across the codebase to use Rust's derived Default trait with #[default] attributes instead of manual impl Default blocks. Additionally, the tray module inverts button state mappings and introduces a new TrayIconEvent constructor.

Changes

Cohort / File(s) Summary
Error Handling
crates/tauri-bundler/src/error.rs
Replaced per-OS cfg attributes on enum variant with cfg_attr-based conditional error messages, consolidating conditional compilation.
Config Enums - Default Derivation
crates/tauri-utils/src/config.rs, crates/tauri-utils/src/config_v1/mod.rs
Multiple public enums (BundleTarget, NsisCompression, NSISInstallerMode, PatternKind, CapabilityEntry, TitleBarStyle, WindowsUpdateInstallMode) now derive Default with designated default variants via #[default] attribute; removed manual impl Default blocks. BundleTarget gains a new One(BundleType) variant in config_v1.
Runtime & Utility Enums - Default Derivation
crates/tauri-runtime/src/lib.rs, crates/tauri-utils/src/html.rs, crates/tauri-utils/src/lib.rs, crates/tauri/src/pattern.rs
DeviceEventFilter, IsolationSide (appears twice), and TitleBarStyle enums now derive Default with appropriate variants marked as default; removed corresponding manual impl Default implementations.
CLI Rust Interface
crates/tauri-cli/src/interface/rust.rs
WindowsUpdateInstallMode enum now derives Default with Passive marked as default variant; removed manual Default impl.
Tray Module
crates/tauri/src/tray/mod.rs
MouseButtonState and MouseButton enums now derive Default (Up and Left as defaults respectively); inverted button state mappings in From trait implementation (Up ↔ Down); added new TrayIconEvent\::new_click(id) constructor.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 Default derives are oh-so-fine,
With attributes marking each default line,
Button states flip, a constructor's born,
Through these files, refactoring morn!
*hops with delight*

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 21.43% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: the PR derives Default for multiple enums across the codebase to address Clippy warnings, which is the primary objective throughout all modified files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@crates/tauri/src/tray/mod.rs`:
- Around line 22-38: The enum MouseButtonState has inverted documentation and
the From<tray_icon::MouseButtonState> impl flips states; update the doc comments
so Up is described as "Mouse button released" and Down as "Mouse button
pressed", and change the conversion in impl From<tray_icon::MouseButtonState>
for MouseButtonState so tray_icon::MouseButtonState::Up maps to
MouseButtonState::Up and tray_icon::MouseButtonState::Down maps to
MouseButtonState::Down (keeping the #[default] on Up).
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 92694b1 and 74afca3.

📒 Files selected for processing (9)
  • crates/tauri-bundler/src/error.rs
  • crates/tauri-cli/src/interface/rust.rs
  • crates/tauri-runtime/src/lib.rs
  • crates/tauri-utils/src/config.rs
  • crates/tauri-utils/src/config_v1/mod.rs
  • crates/tauri-utils/src/html.rs
  • crates/tauri-utils/src/lib.rs
  • crates/tauri/src/pattern.rs
  • crates/tauri/src/tray/mod.rs
🧰 Additional context used
🧬 Code graph analysis (3)
crates/tauri-utils/src/lib.rs (1)
packages/api/src/window.ts (1)
  • TitleBarStyle (2636-2636)
crates/tauri/src/tray/mod.rs (1)
packages/api/src/tray.ts (2)
  • MouseButtonState (10-10)
  • MouseButton (11-11)
crates/tauri-utils/src/config.rs (4)
crates/tauri-utils/src/config_v1/mod.rs (11)
  • default (61-63)
  • default (382-392)
  • default (425-427)
  • default (620-622)
  • default (671-683)
  • default (1051-1087)
  • default (1119-1121)
  • default (1227-1229)
  • default (1364-1366)
  • default (1756-1758)
  • default (1808-1810)
crates/tauri-build/src/lib.rs (1)
  • default (252-254)
crates/tauri/src/app.rs (2)
  • default (1447-1449)
  • default (1455-1457)
crates/tauri-bundler/src/bundle/settings.rs (2)
  • default (399-401)
  • default (603-616)
🔇 Additional comments (17)
crates/tauri/src/pattern.rs (1)

67-76: LGTM!

The derived Default with #[default] on Original preserves the same behavior as the previous manual implementation while satisfying Clippy's derive-default lint.

crates/tauri-bundler/src/error.rs (1)

102-110: LGTM!

Using cfg_attr to conditionally apply error messages to a single variant is cleaner than duplicating the variant with separate #[cfg] attributes. The error messages remain unchanged per platform.

crates/tauri/src/tray/mod.rs (2)

137-154: New constructor looks good for testing purposes.

The new_click constructor provides a convenient way to create mock TrayIconEvent::Click events. Note that it relies on MouseButtonState::default() which returns Up — ensure the semantic meaning of the button states is corrected per the issue flagged above.


41-60: LGTM!

The derived Default for MouseButton with Left as the default is a reasonable choice, and the From implementation correctly maps the variants without inversion.

crates/tauri-runtime/src/lib.rs (1)

93-103: LGTM!

The derived Default with #[default] on Unfocused preserves the same behavior as the previous manual implementation while addressing the Clippy lint.

crates/tauri-utils/src/lib.rs (1)

160-178: LGTM!

The derived Default with #[default] on Visible maintains the same default behavior while satisfying Clippy's derive-default lint.

crates/tauri-utils/src/html.rs (1)

214-222: LGTM!

The derived Default with #[default] on Original preserves the same default behavior. Usage at line 207 (IsolationSide::default()) continues to work correctly.

crates/tauri-cli/src/interface/rust.rs (1)

788-797: LGTM!

The refactor from a manual impl Default block to derive(Default) with the #[default] attribute on Passive is correct and follows modern Rust idioms. This approach is cleaner, reduces boilerplate, and makes the default variant immediately visible at the enum definition.

crates/tauri-utils/src/config_v1/mod.rs (5)

134-142: LGTM!

Clean refactor of BundleTarget to use derive(Default) with #[default] on the All variant.


550-572: LGTM!

The NSISInstallerMode enum correctly uses derive(Default) with #[default] on CurrentUser, maintaining the same default behavior as the previously removed manual implementation.


2386-2398: LGTM!

The PatternKind enum correctly uses derive(Default) with #[default] on Brownfield.


2469-2483: LGTM!

The WindowsUpdateInstallMode enum correctly uses derive(Default) with #[default] on Passive, consistent with the same enum definition in rust.rs.


2972-2989: LGTM!

The TitleBarStyle enum correctly uses derive(Default) with #[default] on Visible.

crates/tauri-utils/src/config.rs (4)

210-220: Looks good: default variant explicit via #[default].
No concerns with BundleTarget defaulting to All.


803-816: Looks good: NsisCompression default is explicit and matches docs.
Lzma remains the intended default.


819-841: Looks good: NSISInstallerMode default clarified.
CurrentUser as default aligns with comments and prior behavior.


2671-2685: Looks good: PatternKind default explicit.
Brownfield as default keeps behavior stable.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Comment on lines +22 to 38
#[derive(Default, Clone, Copy, PartialEq, Eq, Debug, Serialize)]
pub enum MouseButtonState {
/// Mouse button pressed.
#[default]
Up,
/// Mouse button released.
Down,
}

impl Default for MouseButtonState {
fn default() -> Self {
Self::Up
}
}

impl From<tray_icon::MouseButtonState> for MouseButtonState {
fn from(value: tray_icon::MouseButtonState) -> Self {
match value {
tray_icon::MouseButtonState::Up => MouseButtonState::Up,
tray_icon::MouseButtonState::Down => MouseButtonState::Down,
tray_icon::MouseButtonState::Up => MouseButtonState::Down,
tray_icon::MouseButtonState::Down => MouseButtonState::Up,
}
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n crates/tauri/src/tray/mod.rs | head -50

Repository: qodo-benchmark/tauri-combined-coderabbit

Length of output: 1782


🏁 Script executed:

# Search for MouseButtonState usage and any documentation about inversion
rg -n -C3 "MouseButtonState" --type rust crates/tauri/src/tray/

Repository: qodo-benchmark/tauri-combined-coderabbit

Length of output: 2442


🏁 Script executed:

# Check git history for context on this change
cd crates/tauri/src/tray && git log --oneline -20 -- mod.rs

Repository: qodo-benchmark/tauri-combined-coderabbit

Length of output: 102


🏁 Script executed:

# Look for any comments or documentation about the inversion being intentional
rg -n "Up.*Down|Down.*Up|invert|intentional|swap" --type rust crates/tauri/src/tray/mod.rs

Repository: qodo-benchmark/tauri-combined-coderabbit

Length of output: 253


🏁 Script executed:

# Search the entire codebase for any documentation about this semantic difference
rg -i "tray.*button.*state|mouse.*button.*state" --type rust --type md

Repository: qodo-benchmark/tauri-combined-coderabbit

Length of output: 2211


Critical: Inverted button state mapping and backwards documentation will cause incorrect event handling.

The From<tray_icon::MouseButtonState> implementation inverts the button states:

  • tray_icon::MouseButtonState::UpMouseButtonState::Down
  • tray_icon::MouseButtonState::DownMouseButtonState::Up

Additionally, the doc comments are semantically inverted from standard conventions:

  • Up is documented as "Mouse button pressed" (should be "released")
  • Down is documented as "Mouse button released" (should be "pressed")

This combination means when the underlying tray-icon library reports a button release (Up), Tauri will report it as pressed (Down), and vice versa.

Proposed fix
 /// Describes the mouse button state.
 #[derive(Default, Clone, Copy, PartialEq, Eq, Debug, Serialize)]
 pub enum MouseButtonState {
-  /// Mouse button pressed.
+  /// Mouse button released.
   #[default]
   Up,
-  /// Mouse button released.
+  /// Mouse button pressed.
   Down,
 }

 impl From<tray_icon::MouseButtonState> for MouseButtonState {
   fn from(value: tray_icon::MouseButtonState) -> Self {
     match value {
-      tray_icon::MouseButtonState::Up => MouseButtonState::Down,
-      tray_icon::MouseButtonState::Down => MouseButtonState::Up,
+      tray_icon::MouseButtonState::Up => MouseButtonState::Up,
+      tray_icon::MouseButtonState::Down => MouseButtonState::Down,
     }
   }
 }
🤖 Prompt for AI Agents
In `@crates/tauri/src/tray/mod.rs` around lines 22 - 38, The enum MouseButtonState
has inverted documentation and the From<tray_icon::MouseButtonState> impl flips
states; update the doc comments so Up is described as "Mouse button released"
and Down as "Mouse button pressed", and change the conversion in impl
From<tray_icon::MouseButtonState> for MouseButtonState so
tray_icon::MouseButtonState::Up maps to MouseButtonState::Up and
tray_icon::MouseButtonState::Down maps to MouseButtonState::Down (keeping the
#[default] on Up).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants