feat: add TOML validation for Codex config and improve code formatting

- Add real-time TOML syntax validation for Codex config field
- Validate config TOML when saving provider settings
- Format code to improve readability with proper error handling blocks
- Reorganize imports for better consistency

This ensures Codex config is valid TOML before saving, preventing runtime errors.
This commit is contained in:
Jason
2025-09-18 09:33:58 +08:00
parent efff780eea
commit b69d7f7979
3 changed files with 12 additions and 6 deletions

View File

@@ -32,6 +32,9 @@ fn validate_provider_settings(app_type: &AppType, provider: &Provider) -> Result
if !(config_value.is_string() || config_value.is_null()) {
return Err("Codex config 字段必须是字符串".to_string());
}
if let Some(cfg_text) = config_value.as_str() {
codex_config::validate_config_toml(cfg_text)?;
}
}
}
}

View File

@@ -7,13 +7,13 @@ mod provider;
mod store;
use store::AppState;
#[cfg(target_os = "macos")]
use tauri::RunEvent;
use tauri::{
menu::{CheckMenuItem, Menu, MenuBuilder, MenuItem},
tray::{TrayIconBuilder, TrayIconEvent},
};
use tauri::{Emitter, Manager};
#[cfg(target_os = "macos")]
use tauri::RunEvent;
/// 创建动态托盘菜单
fn create_tray_menu(
@@ -144,7 +144,9 @@ fn handle_tray_menu_event(app: &tauri::AppHandle, event_id: &str) {
provider_id,
)
.await
{ log::error!("切换Claude供应商失败: {}", e); }
{
log::error!("切换Claude供应商失败: {}", e);
}
});
}
id if id.starts_with("codex_") => {
@@ -161,7 +163,9 @@ fn handle_tray_menu_event(app: &tauri::AppHandle, event_id: &str) {
provider_id,
)
.await
{ log::error!("切换Codex供应商失败: {}", e); }
{
log::error!("切换Codex供应商失败: {}", e);
}
});
}
_ => {

View File

@@ -148,8 +148,7 @@ pub fn migrate_copies_into_config(config: &mut MultiAppConfig) -> Result<bool, S
// 如果已迁移过则跳过;若目录不存在则先创建,避免新装用户写入标记时失败
let marker = get_marker_path();
if let Some(parent) = marker.parent() {
std::fs::create_dir_all(parent)
.map_err(|e| format!("创建迁移标记目录失败: {}", e))?;
std::fs::create_dir_all(parent).map_err(|e| format!("创建迁移标记目录失败: {}", e))?;
}
if marker.exists() {
return Ok(false);