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:
@@ -32,6 +32,9 @@ fn validate_provider_settings(app_type: &AppType, provider: &Provider) -> Result
|
|||||||
if !(config_value.is_string() || config_value.is_null()) {
|
if !(config_value.is_string() || config_value.is_null()) {
|
||||||
return Err("Codex config 字段必须是字符串".to_string());
|
return Err("Codex config 字段必须是字符串".to_string());
|
||||||
}
|
}
|
||||||
|
if let Some(cfg_text) = config_value.as_str() {
|
||||||
|
codex_config::validate_config_toml(cfg_text)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ mod provider;
|
|||||||
mod store;
|
mod store;
|
||||||
|
|
||||||
use store::AppState;
|
use store::AppState;
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
use tauri::RunEvent;
|
||||||
use tauri::{
|
use tauri::{
|
||||||
menu::{CheckMenuItem, Menu, MenuBuilder, MenuItem},
|
menu::{CheckMenuItem, Menu, MenuBuilder, MenuItem},
|
||||||
tray::{TrayIconBuilder, TrayIconEvent},
|
tray::{TrayIconBuilder, TrayIconEvent},
|
||||||
};
|
};
|
||||||
use tauri::{Emitter, Manager};
|
use tauri::{Emitter, Manager};
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
use tauri::RunEvent;
|
|
||||||
|
|
||||||
/// 创建动态托盘菜单
|
/// 创建动态托盘菜单
|
||||||
fn create_tray_menu(
|
fn create_tray_menu(
|
||||||
@@ -144,7 +144,9 @@ fn handle_tray_menu_event(app: &tauri::AppHandle, event_id: &str) {
|
|||||||
provider_id,
|
provider_id,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{ log::error!("切换Claude供应商失败: {}", e); }
|
{
|
||||||
|
log::error!("切换Claude供应商失败: {}", e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
id if id.starts_with("codex_") => {
|
id if id.starts_with("codex_") => {
|
||||||
@@ -161,7 +163,9 @@ fn handle_tray_menu_event(app: &tauri::AppHandle, event_id: &str) {
|
|||||||
provider_id,
|
provider_id,
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
{ log::error!("切换Codex供应商失败: {}", e); }
|
{
|
||||||
|
log::error!("切换Codex供应商失败: {}", e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
|
|||||||
@@ -148,8 +148,7 @@ pub fn migrate_copies_into_config(config: &mut MultiAppConfig) -> Result<bool, S
|
|||||||
// 如果已迁移过则跳过;若目录不存在则先创建,避免新装用户写入标记时失败
|
// 如果已迁移过则跳过;若目录不存在则先创建,避免新装用户写入标记时失败
|
||||||
let marker = get_marker_path();
|
let marker = get_marker_path();
|
||||||
if let Some(parent) = marker.parent() {
|
if let Some(parent) = marker.parent() {
|
||||||
std::fs::create_dir_all(parent)
|
std::fs::create_dir_all(parent).map_err(|e| format!("创建迁移标记目录失败: {}", e))?;
|
||||||
.map_err(|e| format!("创建迁移标记目录失败: {}", e))?;
|
|
||||||
}
|
}
|
||||||
if marker.exists() {
|
if marker.exists() {
|
||||||
return Ok(false);
|
return Ok(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user