From 18b8c6b5aa314ad62baa22494a85764bf0aa0a1d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 19:12:30 +0000 Subject: [PATCH 1/2] Initial plan From f7132de2060fbb3f7d083a4eb0c86d23856d5b93 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 19:24:59 +0000 Subject: [PATCH 2/2] Fix all clippy warnings and code quality issues Co-authored-by: SaladDay <92240037+SaladDay@users.noreply.github.com> --- src-tauri/src/cli/commands/config.rs | 2 +- src-tauri/src/cli/commands/provider.rs | 10 ++-- src-tauri/src/cli/commands/provider_input.rs | 2 - src-tauri/src/cli/i18n.rs | 54 ++++---------------- src-tauri/src/cli/interactive/mod.rs | 2 +- src-tauri/src/cli/interactive/provider.rs | 10 ++-- src-tauri/src/services/speedtest.rs | 19 +++---- 7 files changed, 31 insertions(+), 68 deletions(-) diff --git a/src-tauri/src/cli/commands/config.rs b/src-tauri/src/cli/commands/config.rs index c8a6285f..2905799d 100644 --- a/src-tauri/src/cli/commands/config.rs +++ b/src-tauri/src/cli/commands/config.rs @@ -119,7 +119,7 @@ fn show_path() -> Result<(), AppError> { Ok(()) } -fn export_config(file: &PathBuf) -> Result<(), AppError> { +fn export_config(file: &Path) -> Result<(), AppError> { println!( "{}", info(&format!("Exporting configuration to {}...", file.display())) diff --git a/src-tauri/src/cli/commands/provider.rs b/src-tauri/src/cli/commands/provider.rs index 98fcd373..cac66f92 100644 --- a/src-tauri/src/cli/commands/provider.rs +++ b/src-tauri/src/cli/commands/provider.rs @@ -530,7 +530,7 @@ fn extract_claude_config(settings_config: &serde_json::Value) -> ClaudeConfig { .get("ANTHROPIC_AUTH_TOKEN") .or_else(|| env.get("ANTHROPIC_API_KEY")) .and_then(|v| v.as_str()) - .map(|s| mask_api_key(s)), + .map(mask_api_key), base_url: env .get("ANTHROPIC_BASE_URL") .and_then(|v| v.as_str()) @@ -538,19 +538,19 @@ fn extract_claude_config(settings_config: &serde_json::Value) -> ClaudeConfig { model: env .get("ANTHROPIC_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), haiku_model: env .get("ANTHROPIC_DEFAULT_HAIKU_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), sonnet_model: env .get("ANTHROPIC_DEFAULT_SONNET_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), opus_model: env .get("ANTHROPIC_DEFAULT_OPUS_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), } } else { ClaudeConfig::default() diff --git a/src-tauri/src/cli/commands/provider_input.rs b/src-tauri/src/cli/commands/provider_input.rs index 2c7eaadb..26772136 100644 --- a/src-tauri/src/cli/commands/provider_input.rs +++ b/src-tauri/src/cli/commands/provider_input.rs @@ -41,8 +41,6 @@ pub fn generate_provider_id(name: &str, existing_ids: &[String]) -> String { .chars() .map(|c| if c.is_alphanumeric() || c == '-' || c == '_' { c - } else if c.is_whitespace() { - '-' } else { '-' }) diff --git a/src-tauri/src/cli/i18n.rs b/src-tauri/src/cli/i18n.rs index e9c70cf7..88fa6083 100644 --- a/src-tauri/src/cli/i18n.rs +++ b/src-tauri/src/cli/i18n.rs @@ -835,19 +835,11 @@ pub mod texts { } pub fn auth_type_api_key() -> &'static str { - if is_chinese() { - "API Key" - } else { - "API Key" - } + "API Key" } pub fn auth_type_service_account() -> &'static str { - if is_chinese() { - "Service Account (ADC)" - } else { - "Service Account (ADC)" - } + "Service Account (ADC)" } pub fn gemini_api_key_label() -> &'static str { @@ -915,11 +907,7 @@ pub mod texts { } pub fn packycode_api_key() -> &'static str { - if is_chinese() { - "PackyCode API Key" - } else { - "PackyCode API Key" - } + "PackyCode API Key" } pub fn generic_api_key() -> &'static str { @@ -1084,11 +1072,7 @@ pub mod texts { } pub fn id_label() -> &'static str { - if is_chinese() { - "ID" - } else { - "ID" - } + "ID" } pub fn website_label() -> &'static str { @@ -1201,19 +1185,11 @@ pub mod texts { } pub fn api_key_display_label() -> &'static str { - if is_chinese() { - "API Key" - } else { - "API Key" - } + "API Key" } pub fn base_url_display_label() -> &'static str { - if is_chinese() { - "Base URL" - } else { - "Base URL" - } + "Base URL" } pub fn model_config_header() -> &'static str { @@ -1233,27 +1209,15 @@ pub mod texts { } pub fn haiku_model_display() -> &'static str { - if is_chinese() { - "Haiku" - } else { - "Haiku" - } + "Haiku" } pub fn sonnet_model_display() -> &'static str { - if is_chinese() { - "Sonnet" - } else { - "Sonnet" - } + "Sonnet" } pub fn opus_model_display() -> &'static str { - if is_chinese() { - "Opus" - } else { - "Opus" - } + "Opus" } pub fn auth_type_display_label() -> &'static str { diff --git a/src-tauri/src/cli/interactive/mod.rs b/src-tauri/src/cli/interactive/mod.rs index 5f31cb53..53a27c4f 100644 --- a/src-tauri/src/cli/interactive/mod.rs +++ b/src-tauri/src/cli/interactive/mod.rs @@ -161,7 +161,7 @@ fn view_current_config(app_type: &AppType) -> Result<(), AppError> { if let Some(provider) = providers.get(¤t_provider) { println!("\n{}", highlight(texts::provider_label())); println!(" 名称: {}", provider.name); - let api_url = provider::extract_api_url(&provider.settings_config, &app_type) + let api_url = provider::extract_api_url(&provider.settings_config, app_type) .unwrap_or_else(|| "N/A".to_string()); println!(" API URL: {}", api_url); } diff --git a/src-tauri/src/cli/interactive/provider.rs b/src-tauri/src/cli/interactive/provider.rs index 42032f55..29a03d61 100644 --- a/src-tauri/src/cli/interactive/provider.rs +++ b/src-tauri/src/cli/interactive/provider.rs @@ -426,7 +426,7 @@ fn extract_claude_config(settings_config: &serde_json::Value) -> ClaudeConfig { .get("ANTHROPIC_AUTH_TOKEN") .or_else(|| env.get("ANTHROPIC_API_KEY")) .and_then(|v| v.as_str()) - .map(|s| mask_api_key(s)), + .map(mask_api_key), base_url: env .get("ANTHROPIC_BASE_URL") .and_then(|v| v.as_str()) @@ -434,19 +434,19 @@ fn extract_claude_config(settings_config: &serde_json::Value) -> ClaudeConfig { model: env .get("ANTHROPIC_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), haiku_model: env .get("ANTHROPIC_DEFAULT_HAIKU_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), sonnet_model: env .get("ANTHROPIC_DEFAULT_SONNET_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), opus_model: env .get("ANTHROPIC_DEFAULT_OPUS_MODEL") .and_then(|v| v.as_str()) - .map(|s| simplify_model_name(s)), + .map(simplify_model_name), } } else { ClaudeConfig::default() diff --git a/src-tauri/src/services/speedtest.rs b/src-tauri/src/services/speedtest.rs index 9eda5782..6f629dbe 100644 --- a/src-tauri/src/services/speedtest.rs +++ b/src-tauri/src/services/speedtest.rs @@ -140,20 +140,21 @@ mod tests { ); } - #[test] - fn test_endpoints_handles_empty_list() { - let result = - tauri::async_runtime::block_on(SpeedtestService::test_endpoints(Vec::new(), Some(5))) - .expect("empty list should succeed"); + #[tokio::test] + async fn test_endpoints_handles_empty_list() { + let result = SpeedtestService::test_endpoints(Vec::new(), Some(5)) + .await + .expect("empty list should succeed"); assert!(result.is_empty()); } - #[test] - fn test_endpoints_reports_invalid_url() { - let result = tauri::async_runtime::block_on(SpeedtestService::test_endpoints( + #[tokio::test] + async fn test_endpoints_reports_invalid_url() { + let result = SpeedtestService::test_endpoints( vec!["not a url".into(), "".into()], None, - )) + ) + .await .expect("invalid inputs should still succeed"); assert_eq!(result.len(), 2);