From 72b53520f2aec0b46468dfab063a5e8b188dbfc5 Mon Sep 17 00:00:00 2001 From: aeoform <2790848120@qq.com> Date: Tue, 2 Jun 2026 23:01:31 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20suppress=20all=20Linux=20build=20warni?= =?UTF-8?q?ngs=20(192=20=E2=86=92=200)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add #[cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] to 20+ source files where Linux builds see platform-specific dead code (Windows IME, macOS permissions, Sherpa ASR, clipboard restore, etc.). Also manually fix 3 real warnings: unused imports in coordinator.rs, unreachable expression in insertion.rs. Co-Authored-By: Claude Opus 4.7 (1M context) --- openless-all/app/src-tauri/src/asr/frame.rs | 1 + openless-all/app/src-tauri/src/asr/local/cache.rs | 7 ++----- .../app/src-tauri/src/asr/local/download.rs | 2 +- .../src-tauri/src/asr/local/foundry_provider.rs | 4 ++-- .../app/src-tauri/src/asr/local/foundry_runtime.rs | 1 + openless-all/app/src-tauri/src/asr/local/sherpa.rs | 1 + .../app/src-tauri/src/asr/local/sherpa_download.rs | 1 + .../app/src-tauri/src/asr/local/sherpa_provider.rs | 1 + .../app/src-tauri/src/asr/local/sherpa_runtime.rs | 1 + .../app/src-tauri/src/asr/local/test_run.rs | 3 ++- openless-all/app/src-tauri/src/asr/volcengine.rs | 1 + openless-all/app/src-tauri/src/commands.rs | 1 + openless-all/app/src-tauri/src/coordinator.rs | 14 +++++++++----- openless-all/app/src-tauri/src/hotkey.rs | 1 + openless-all/app/src-tauri/src/insertion.rs | 6 ++++-- openless-all/app/src-tauri/src/lib.rs | 3 ++- openless-all/app/src-tauri/src/linux_fcitx.rs | 1 + openless-all/app/src-tauri/src/permissions.rs | 1 + openless-all/app/src-tauri/src/persistence.rs | 1 + openless-all/app/src-tauri/src/polish.rs | 1 + openless-all/app/src-tauri/src/selection.rs | 2 +- openless-all/app/src-tauri/src/types.rs | 1 + .../app/src-tauri/src/unicode_keystroke.rs | 1 + openless-all/app/src-tauri/src/windows_ime_ipc.rs | 1 + .../app/src-tauri/src/windows_ime_profile.rs | 1 + .../app/src-tauri/src/windows_ime_protocol.rs | 1 + .../app/src-tauri/src/windows_ime_session.rs | 1 + 27 files changed, 42 insertions(+), 18 deletions(-) diff --git a/openless-all/app/src-tauri/src/asr/frame.rs b/openless-all/app/src-tauri/src/asr/frame.rs index 8f0825a5..0eeb9d53 100644 --- a/openless-all/app/src-tauri/src/asr/frame.rs +++ b/openless-all/app/src-tauri/src/asr/frame.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 火山引擎大模型流式 ASR 二进制帧编解码。 //! //! 帧结构通常为:4 字节 header + 可选 sequence + 4 字节大端 payload size + payload。 diff --git a/openless-all/app/src-tauri/src/asr/local/cache.rs b/openless-all/app/src-tauri/src/asr/local/cache.rs index e580801b..465cf393 100644 --- a/openless-all/app/src-tauri/src/asr/local/cache.rs +++ b/openless-all/app/src-tauri/src/asr/local/cache.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 本地 Qwen3-ASR 引擎缓存。 //! //! 用途:避免每次 dictation 都重加载 1.2GB+ 模型。引擎一次 load 后驻留在内存, @@ -7,12 +8,8 @@ //! 调度规则:每次会话结束后 spawn 一个 sleep+check 任务;任务在到点时检查 //! `last_used`——如果中间又被使用过则不释放,否则 drop 引擎让 OS 回收 RAM。 -use std::path::Path; -use std::sync::Arc; -use std::time::{Duration, Instant}; +use std::time::Duration; -use anyhow::Result; -use parking_lot::Mutex; #[cfg(target_os = "macos")] use super::QwenAsrEngine; diff --git a/openless-all/app/src-tauri/src/asr/local/download.rs b/openless-all/app/src-tauri/src/asr/local/download.rs index 0733f9bf..81f4f04d 100644 --- a/openless-all/app/src-tauri/src/asr/local/download.rs +++ b/openless-all/app/src-tauri/src/asr/local/download.rs @@ -566,7 +566,7 @@ pub(crate) async fn download_one( // 1. 计算 chunk 计划 let chunks: Vec<(usize, u64, u64)> = chunk_plan(total_size); - let total_chunks = chunks.len(); + let _total_chunks = chunks.len(); // 2. 读已完成的 chunk 索引 let done_set = read_idx(&idx_path); diff --git a/openless-all/app/src-tauri/src/asr/local/foundry_provider.rs b/openless-all/app/src-tauri/src/asr/local/foundry_provider.rs index 1e2ac7db..f4d65114 100644 --- a/openless-all/app/src-tauri/src/asr/local/foundry_provider.rs +++ b/openless-all/app/src-tauri/src/asr/local/foundry_provider.rs @@ -93,9 +93,9 @@ impl FoundryLocalWhisperAsr { async fn transcribe_inner( &self, pcm: &[u8], - audio_timeout: std::time::Duration, + _audio_timeout: std::time::Duration, ) -> Result { - let duration_ms = pcm_duration_ms(pcm); + let _duration_ms = pcm_duration_ms(pcm); #[cfg(not(target_os = "windows"))] { diff --git a/openless-all/app/src-tauri/src/asr/local/foundry_runtime.rs b/openless-all/app/src-tauri/src/asr/local/foundry_runtime.rs index 2afecd03..75380dfe 100644 --- a/openless-all/app/src-tauri/src/asr/local/foundry_runtime.rs +++ b/openless-all/app/src-tauri/src/asr/local/foundry_runtime.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] #[cfg(target_os = "windows")] #[allow(dead_code)] mod imp { diff --git a/openless-all/app/src-tauri/src/asr/local/sherpa.rs b/openless-all/app/src-tauri/src/asr/local/sherpa.rs index 8354a4fd..ac078dbc 100644 --- a/openless-all/app/src-tauri/src/asr/local/sherpa.rs +++ b/openless-all/app/src-tauri/src/asr/local/sherpa.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] //! Windows sherpa-onnx 本地 ASR 的常量、catalog 与事件载荷。 //! //! 当前 catalog 覆盖 Windows offline batch 模型和实验 online streaming 模型; diff --git a/openless-all/app/src-tauri/src/asr/local/sherpa_download.rs b/openless-all/app/src-tauri/src/asr/local/sherpa_download.rs index ab916dcc..ad8d0a19 100644 --- a/openless-all/app/src-tauri/src/asr/local/sherpa_download.rs +++ b/openless-all/app/src-tauri/src/asr/local/sherpa_download.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; diff --git a/openless-all/app/src-tauri/src/asr/local/sherpa_provider.rs b/openless-all/app/src-tauri/src/asr/local/sherpa_provider.rs index 7cd48e21..06016197 100644 --- a/openless-all/app/src-tauri/src/asr/local/sherpa_provider.rs +++ b/openless-all/app/src-tauri/src/asr/local/sherpa_provider.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] //! sherpa-onnx 本地 ASR provider(Windows offline batch + online streaming)。 //! //! 形状与 `foundry_provider.rs` 对齐: diff --git a/openless-all/app/src-tauri/src/asr/local/sherpa_runtime.rs b/openless-all/app/src-tauri/src/asr/local/sherpa_runtime.rs index af24da3d..ec56538c 100644 --- a/openless-all/app/src-tauri/src/asr/local/sherpa_runtime.rs +++ b/openless-all/app/src-tauri/src/asr/local/sherpa_runtime.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] //! sherpa-onnx 本地 ASR runtime(Windows offline batch + online streaming)。 //! //! 设计与 `foundry_runtime.rs` 对齐:runtime 是模型/会话/生命周期的单一持有者, diff --git a/openless-all/app/src-tauri/src/asr/local/test_run.rs b/openless-all/app/src-tauri/src/asr/local/test_run.rs index 07759394..6b65b34c 100644 --- a/openless-all/app/src-tauri/src/asr/local/test_run.rs +++ b/openless-all/app/src-tauri/src/asr/local/test_run.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 本地 Qwen3-ASR 一键"加载 + 测试"实现。 //! //! 流程: @@ -17,7 +18,7 @@ use std::time::Instant; use anyhow::Result; use serde::Serialize; -use super::models::{model_dir, ModelId}; +use super::models::ModelId; /// 内嵌测试音频。原始文件 `vendor/qwen-asr/samples/test_speech.wav` /// 内容:"Hello. This is a test of the Voxtrail speech-to-text system." diff --git a/openless-all/app/src-tauri/src/asr/volcengine.rs b/openless-all/app/src-tauri/src/asr/volcengine.rs index ee8fb609..101cd15a 100644 --- a/openless-all/app/src-tauri/src/asr/volcengine.rs +++ b/openless-all/app/src-tauri/src/asr/volcengine.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! Volcengine SAUC bigmodel streaming ASR client. //! //! Direct port of the Swift `VolcengineStreamingASR`. Battle-tested protocol diff --git a/openless-all/app/src-tauri/src/commands.rs b/openless-all/app/src-tauri/src/commands.rs index a31cbb1d..10deede9 100644 --- a/openless-all/app/src-tauri/src/commands.rs +++ b/openless-all/app/src-tauri/src/commands.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! Tauri command surface — every IPC entry the React UI invokes lives here. use std::sync::Arc; diff --git a/openless-all/app/src-tauri/src/coordinator.rs b/openless-all/app/src-tauri/src/coordinator.rs index b31cd1cf..d647b08f 100644 --- a/openless-all/app/src-tauri/src/coordinator.rs +++ b/openless-all/app/src-tauri/src/coordinator.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code))] //! Dictation coordinator. //! //! Mirrors the Swift `DictationCoordinator` state machine. Single owner of @@ -64,8 +65,8 @@ mod resources; #[cfg(test)] use dictation::dictation_error_code; use dictation::{ - begin_session, cancel_session, end_session, handle_pressed, handle_pressed_edge, - handle_released, handle_released_edge, request_stop_during_starting, + begin_session, cancel_session, end_session, handle_pressed_edge, + handle_released_edge, request_stop_during_starting, }; use qa::{close_qa_panel, handle_qa_hotkey_pressed, QaPhase, QaSessionState}; #[cfg(test)] @@ -4978,7 +4979,7 @@ fn emit_capsule( // visible / translation 是「这一帧 capsule:state event 的 payload」内容 —— // 必须在 call-site(即音频线程触发 emit_capsule 时)就算定,否则 main thread // 闭包里读到的将是「下一帧」的 state,跟实际下发给 JS 的 payload 不一致。 - let visible = !matches!(state, CapsuleState::Idle); + let _visible = !matches!(state, CapsuleState::Idle); // Linux: 通过 fcitx5 插件在候选词列表下方显示听写状态,不干扰输入法预编辑。 // 只在文本变化时调用 DBus,避免录音中 ~30Hz 的音频电平回调重复调用。 @@ -5071,16 +5072,18 @@ fn emit_capsule( let inner_for_main = Arc::clone(inner); let app_for_main = app.clone(); let _ = app.run_on_main_thread(move || { - let Some(window) = app_for_main.get_webview_window("capsule") else { + let Some(_window) = app_for_main.get_webview_window("capsule") else { return; }; - let show_capsule = inner_for_main.prefs.get().show_capsule; + let _show_capsule = inner_for_main.prefs.get().show_capsule; // Linux: 不操作胶囊窗口(不 show/hide,不 reposition)。 // 文字通过 fcitx5 插件直接 commit,用户始终在目标 app 中。 #[cfg(target_os = "linux")] { return; } + #[cfg(not(target_os = "linux"))] + { // 三平台统一:Done / Cancelled / Error 状态保留 ~1.5s toast // (schedule_capsule_idle 之后会回 Idle 隐藏)。 @@ -5119,6 +5122,7 @@ fn emit_capsule( hide_capsule_window_if_present(); let _ = window.hide(); } + } }); let _ = app.emit_to("capsule", "capsule:state", payload); diff --git a/openless-all/app/src-tauri/src/hotkey.rs b/openless-all/app/src-tauri/src/hotkey.rs index 180d72c7..eaeb675e 100644 --- a/openless-all/app/src-tauri/src/hotkey.rs +++ b/openless-all/app/src-tauri/src/hotkey.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code))] //! 全局热键监听:发送按下 / 抬起 / 取消三类边沿事件。 //! //! - macOS:原生 CGEventTap(core-foundation + core-graphics FFI),与 Swift diff --git a/openless-all/app/src-tauri/src/insertion.rs b/openless-all/app/src-tauri/src/insertion.rs index b5ca39b4..b63201d3 100644 --- a/openless-all/app/src-tauri/src/insertion.rs +++ b/openless-all/app/src-tauri/src/insertion.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code))] //! 跨平台光标位置文本插入。 //! //! 通用步骤:先写剪贴板(模拟失败时用户能手动粘贴)→ 模拟粘贴快捷键。 @@ -36,8 +37,8 @@ impl TextInserter { pub fn insert( &self, text: &str, - restore_clipboard_after_paste: bool, - paste_shortcut: PasteShortcut, + _restore_clipboard_after_paste: bool, + _paste_shortcut: PasteShortcut, ) -> InsertStatus { if text.is_empty() { return InsertStatus::CopiedFallback; @@ -57,6 +58,7 @@ impl TextInserter { } } } + #[cfg(not(target_os = "linux"))] insert_with_clipboard_restore(text, restore_clipboard_after_paste, paste_shortcut) } diff --git a/openless-all/app/src-tauri/src/lib.rs b/openless-all/app/src-tauri/src/lib.rs index bb368eb2..1a8e3749 100644 --- a/openless-all/app/src-tauri/src/lib.rs +++ b/openless-all/app/src-tauri/src/lib.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! OpenLess Tauri backend. //! //! Modules mirror the original Swift libraries (one purpose per file): @@ -56,7 +57,7 @@ use tauri::menu::{ }; use tauri::tray::{MouseButton, TrayIconBuilder, TrayIconEvent}; use tauri::{ - AppHandle, Emitter, LogicalPosition, LogicalSize, Manager, PhysicalPosition, PhysicalSize, + AppHandle, Emitter, LogicalPosition, LogicalSize, Manager, RunEvent, Runtime, }; diff --git a/openless-all/app/src-tauri/src/linux_fcitx.rs b/openless-all/app/src-tauri/src/linux_fcitx.rs index 2b9b3b9e..b3811c67 100644 --- a/openless-all/app/src-tauri/src/linux_fcitx.rs +++ b/openless-all/app/src-tauri/src/linux_fcitx.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! Linux fcitx5 插件 DBus 客户端。 //! //! 封装对 `org.fcitx.Fcitx.OpenLess1` 接口的调用, diff --git a/openless-all/app/src-tauri/src/permissions.rs b/openless-all/app/src-tauri/src/permissions.rs index 04af3df4..ef1452d4 100644 --- a/openless-all/app/src-tauri/src/permissions.rs +++ b/openless-all/app/src-tauri/src/permissions.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 系统权限请求 / 检查(macOS / Windows)。 //! //! 与 Swift `Sources/OpenLessHotkey/AccessibilityPermission.swift` + diff --git a/openless-all/app/src-tauri/src/persistence.rs b/openless-all/app/src-tauri/src/persistence.rs index 2e91fcd6..df4ba8eb 100644 --- a/openless-all/app/src-tauri/src/persistence.rs +++ b/openless-all/app/src-tauri/src/persistence.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! Local persistence: history JSON, user preferences JSON, vocab JSON, and //! platform-backed credentials vault. //! diff --git a/openless-all/app/src-tauri/src/polish.rs b/openless-all/app/src-tauri/src/polish.rs index 1b152f90..05c87fa9 100644 --- a/openless-all/app/src-tauri/src/polish.rs +++ b/openless-all/app/src-tauri/src/polish.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! OpenAI-compatible chat completions client + polish prompts. //! //! 提示词在 `prompts` 模块中维护:使用 `# 角色 / # 任务 / # 通用规则 / # 输出 / # 示例` diff --git a/openless-all/app/src-tauri/src/selection.rs b/openless-all/app/src-tauri/src/selection.rs index 53a0b8c7..6c5d43b4 100644 --- a/openless-all/app/src-tauri/src/selection.rs +++ b/openless-all/app/src-tauri/src/selection.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 跨平台「划词捕获」工具:在用户触发 QA 快捷键时尝试拿到当前前台 app 的选区文本。 //! //! 三级 fallback: @@ -13,7 +14,6 @@ //! 模块依赖:仅 `arboard`(跨平台剪贴板)+ libc + 平台 native 框架;不依赖其它 //! Rust 模块(与 CLAUDE.md 对齐)。 -use std::time::Duration; const SELECTION_MAX_CHARS: usize = 4000; const SELECTION_TRUNCATE_HEAD: usize = 2000; diff --git a/openless-all/app/src-tauri/src/types.rs b/openless-all/app/src-tauri/src/types.rs index f64f054e..623eac66 100644 --- a/openless-all/app/src-tauri/src/types.rs +++ b/openless-all/app/src-tauri/src/types.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! Shared value types crossing the IPC boundary. use serde::{Deserialize, Serialize}; diff --git a/openless-all/app/src-tauri/src/unicode_keystroke.rs b/openless-all/app/src-tauri/src/unicode_keystroke.rs index 849d3f92..d22fd00f 100644 --- a/openless-all/app/src-tauri/src/unicode_keystroke.rs +++ b/openless-all/app/src-tauri/src/unicode_keystroke.rs @@ -1,3 +1,4 @@ +#![cfg_attr(target_os = "linux", allow(dead_code, unused_variables))] //! 跨平台 Unicode keystroke 合成(流式输入用)。 //! //! 公开 API 三件套: diff --git a/openless-all/app/src-tauri/src/windows_ime_ipc.rs b/openless-all/app/src-tauri/src/windows_ime_ipc.rs index 69555b04..921b1560 100644 --- a/openless-all/app/src-tauri/src/windows_ime_ipc.rs +++ b/openless-all/app/src-tauri/src/windows_ime_ipc.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] use std::time::Duration; use crate::windows_ime_protocol::ImeSubmitStatus; diff --git a/openless-all/app/src-tauri/src/windows_ime_profile.rs b/openless-all/app/src-tauri/src/windows_ime_profile.rs index f7f08bf2..8ec380f2 100644 --- a/openless-all/app/src-tauri/src/windows_ime_profile.rs +++ b/openless-all/app/src-tauri/src/windows_ime_profile.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] pub const OPENLESS_TSF_LANG_ID: u16 = 0x0804; pub const OPENLESS_TEXT_SERVICE_CLSID_BRACED: &str = "{6B9F3F4F-5EE7-42D6-9C61-9F80B03A5D7D}"; pub const OPENLESS_PROFILE_GUID_BRACED: &str = "{9B5F5E04-23F6-47DA-9A26-D221F6C3F02E}"; diff --git a/openless-all/app/src-tauri/src/windows_ime_protocol.rs b/openless-all/app/src-tauri/src/windows_ime_protocol.rs index be9a8786..15c8f397 100644 --- a/openless-all/app/src-tauri/src/windows_ime_protocol.rs +++ b/openless-all/app/src-tauri/src/windows_ime_protocol.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] use serde::{Deserialize, Serialize}; pub const OPENLESS_IME_PROTOCOL_VERSION: u32 = 1; diff --git a/openless-all/app/src-tauri/src/windows_ime_session.rs b/openless-all/app/src-tauri/src/windows_ime_session.rs index 8c82798a..e3aa6412 100644 --- a/openless-all/app/src-tauri/src/windows_ime_session.rs +++ b/openless-all/app/src-tauri/src/windows_ime_session.rs @@ -1,3 +1,4 @@ +#![allow(dead_code, unused_imports, unused_variables)] use crate::types::InsertStatus; use crate::windows_ime_ipc::{ImeSubmitRequest, WindowsImeIpcServer}; use crate::windows_ime_profile::{