diff --git a/.editorconfig b/.editorconfig index 8e94654d5f..4565d37812 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,6 +6,10 @@ end_of_line = lf indent_size = 2 insert_final_newline = true +[*.lua] +charset = utf-8 +indent_size = 4 + [*.rs] charset = utf-8 end_of_line = lf diff --git a/backend/tauri/src/enhance/builtin/clash_rs_comp.lua b/backend/tauri/src/enhance/builtin/clash_rs_comp.lua index 28915b8dc1..f0fb88fb4d 100644 --- a/backend/tauri/src/enhance/builtin/clash_rs_comp.lua +++ b/backend/tauri/src/enhance/builtin/clash_rs_comp.lua @@ -12,4 +12,4 @@ if config["allow_lan"] == true then config["bind_address"] = "0.0.0.0" end -return config; +return config diff --git a/backend/tauri/src/enhance/builtin/config_fixer.lua b/backend/tauri/src/enhance/builtin/config_fixer.lua new file mode 100644 index 0000000000..ccb4c535d1 --- /dev/null +++ b/backend/tauri/src/enhance/builtin/config_fixer.lua @@ -0,0 +1,5 @@ +if type(config['log-level']) == 'boolean' then + config['log-level'] = 'debug' +end + +return config diff --git a/backend/tauri/src/enhance/chain.rs b/backend/tauri/src/enhance/chain.rs index 3afc269516..8c5b9c1580 100644 --- a/backend/tauri/src/enhance/chain.rs +++ b/backend/tauri/src/enhance/chain.rs @@ -2,7 +2,7 @@ use crate::{ config::{nyanpasu::ClashCore, profile::item_type::ProfileItemType, ProfileItem}, utils::{dirs, help}, }; -use enumflags2::BitFlags; +use enumflags2::{BitFlag, BitFlags}; use serde::{Deserialize, Serialize}; use serde_yaml::Mapping; use std::fs; @@ -118,6 +118,12 @@ impl ChainItem { ChainTypeWrapper::new_js(include_str!("./builtin/meta_hy_alpn.js").to_string()), ); + // 修复配置的一些问题 + let config_fixer = ChainItem::to_script( + "config_fixer", + ChainTypeWrapper::new_lua(include_str!("./builtin/config_fixer.lua").to_string()), + ); + // 移除或转换 Clash Rs 不支持的字段 let clash_rs_comp = ChainItem::to_script( "clash_rs_comp", @@ -127,6 +133,7 @@ impl ChainItem { vec![ (ClashCore::Mihomo | ClashCore::MihomoAlpha, hy_alpn), (ClashCore::Mihomo | ClashCore::MihomoAlpha, meta_guard), + (ClashCore::all(), config_fixer), (ClashCore::ClashRs.into(), clash_rs_comp), ] } diff --git a/frontend/nyanpasu/src/components/setting/modules/create-props.ts b/frontend/nyanpasu/src/components/setting/modules/create-props.ts index 6cee9448d1..7ac3b1efc2 100644 --- a/frontend/nyanpasu/src/components/setting/modules/create-props.ts +++ b/frontend/nyanpasu/src/components/setting/modules/create-props.ts @@ -73,7 +73,7 @@ export const clash = { selected: getConfigs.data?.[propName] || fallbackSelect, onSelected: (value: OptionValue) => { Promise.all([ - setClashInfo({ [propName]: !getConfigs.data?.[propName] }), + setClashInfo({ [propName]: value }), setConfigs({ [propName]: value }), ]).finally(() => { mutate(