From 4e9c6dbda1b31dce82c7c3814e0c81d2cf8d7aa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Tue, 5 May 2026 23:27:26 +0800 Subject: [PATCH] Keep cross-platform tray menu imports available Linux release builds use MenuBuilder for the shared tray menu, while MenuItemBuilder and SubmenuBuilder are only used in the macOS native menu bar. Gate only the macOS-only imports so Linux builds no longer warn about them and still compile the shared tray path. Constraint: Linux builds compile the shared tray setup path and require MenuBuilder Constraint: MenuItemBuilder and SubmenuBuilder are only referenced inside cfg(target_os = "macos") Rejected: Gate the whole tauri::menu import on macOS | Linux still needs MenuBuilder for tray menu construction Confidence: high Scope-risk: narrow Directive: Do not gate MenuBuilder by platform unless setup_system_tray is also made platform-specific Tested: cargo fmt --check Tested: git diff --check Not-tested: Local Linux cargo check beyond system GTK/WebKit pkg-config setup; GitHub release Linux job is the verification surface --- desktop/src-tauri/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs index 53d61012..6bf247d6 100644 --- a/desktop/src-tauri/src/lib.rs +++ b/desktop/src-tauri/src/lib.rs @@ -16,8 +16,9 @@ use std::{ use portable_pty::{native_pty_system, ChildKiller, CommandBuilder, MasterPty, PtySize}; use serde::{Deserialize, Serialize}; +use tauri::menu::MenuBuilder; #[cfg(target_os = "macos")] -use tauri::menu::{MenuBuilder, MenuItemBuilder, SubmenuBuilder}; +use tauri::menu::{MenuItemBuilder, SubmenuBuilder}; use tauri::tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}; use tauri::Emitter; use tauri::{AppHandle, Manager, PhysicalPosition, PhysicalSize, RunEvent, State, WindowEvent};