optimize format

This commit is contained in:
Ahao
2025-06-27 13:33:18 +08:00
Unverified
parent c8a314fb41
commit 4070e1ad1b
2 changed files with 42 additions and 14 deletions

View File

@@ -62,6 +62,7 @@
- 仅在 Ubuntu 22.04/24.04、Fedora 41 的 **GNOME 桌面环境** 做过简单测试,不保证其他 Linux 发行版兼容,后续将逐步适配和优化。
- macOS
- MacOS 下自动升级成功后请关闭程序等待 30 秒重启,因为 MacOS 的端口释放特性,卸载服务后需重启应用等 30 秒才能恢复内核通信。立即启动可能无法正常启动内核。
- 墙贴主要为浅色,深色 Tray 图标存在闪烁问题;
- 彩色 Tray 图标颜色偏淡;
@@ -99,11 +100,13 @@
- 托盘新增当前轻量模式状态显示
- 关闭系统代理时同时断开已建立的连接
- 新增 WebDAV 功能:
- 加入 UA 请求头
- 支持目录重定向
- 备份目录检查与上传重试机制
- 自动订阅更新机制:
- 加入请求超时机制防止卡死
- 支持在代理状态下自动重试订阅更新
- 支持订阅卡片点击切换下次自动更新时间,并显示更新结果提示
@@ -120,11 +123,13 @@
### 🚀 优化改进
- **系统相关:**
- 系统代理 Bypass 设置优化
- 优化代理设置更新逻辑与守卫机制
- Windows 启动方式调整为 Startup 文件夹,解决管理员模式下自启问题
- **性能与稳定性:**
- 全面异步化处理配置加载、UI 启动、事件通知等关键流程,解决卡顿问题
- 优化 MihomoManager 实现与窗口创建流程
- 改进内核日志等级为 `warn`,减少噪音输出
@@ -135,6 +140,7 @@
- 优化缓存 Mihomo proxy 和 providers 信息内存使用
- **前端与界面体验:**
- 切换规则页自动刷新数据
- 非激活订阅编辑时不再触发配置重载
- 优化托盘速率显示macOS 下默认关闭
@@ -145,6 +151,7 @@
- 优化保存机制,使用平滑函数防止卡顿
- **配置增强与安全性:**
- 配置缺失 `secret` 字段时自动补全为 `set-your-secret`
- 强制为 Mihomo 配置补全 `external-controller-cors` 字段(默认不允许跨域,限制本地访问)计划后续支持自定义 cors
- 优化窗口权限设置与状态初始化逻辑
@@ -279,6 +286,7 @@
#### 新增功能
1. **首页**
- 新增首页功能,默认启动页面改为首页。
- 首页流量图卡片显示上传/下载名称。
- 首页支持轻量模式切换。
@@ -286,17 +294,21 @@
- 限制首页配置文件卡片URL长度。
2. **DNS 设置与覆写**
- 新增 DNS 覆写功能。
- 默认启用 DNS 覆写。
3. **解锁测试**
- 新增解锁测试页面。
4. **轻量模式**
- 新增轻量模式及设置。
- 添加自动轻量模式定时器。
5. **系统支持**
- Mihomo(meta)内核升级 1.19.3
- macOS 支持 CMD+W 关闭窗口。
- 新增 macOS 应用菜单。
@@ -311,6 +323,7 @@
#### 修复
1. **系统**
- 修复 Windows 热键崩溃。
- 修复 macOS 无框标题。
- 修复 macOS 静默启动崩溃。
@@ -325,6 +338,7 @@
#### 优化
1. **性能**
- 重构后端,巨幅性能优化。
- 优化首页组件性能。
- 优化流量图表资源使用。
@@ -337,6 +351,7 @@
- 优化修改verge配置性能。
2. **重构**
- 重构后端,巨幅性能优化。
- 优化定时器管理。
- 重构 MihomoManager 处理流量。

View File

@@ -8,7 +8,7 @@ import {
List,
ListItem,
Switch,
TextField
TextField,
} from "@mui/material";
import { Delete as DeleteIcon } from "@mui/icons-material";
import { useLockFn, useRequest } from "ahooks";
@@ -34,18 +34,18 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
const cors = clash?.["external-controller-cors"];
return {
allowPrivateNetwork: cors?.["allow-private-network"] ?? true,
allowOrigins: cors?.["allow-origins"] ?? ["*"]
allowOrigins: cors?.["allow-origins"] ?? ["*"],
};
});
// 处理CORS配置变更
const handleCorsConfigChange = (
key: "allowPrivateNetwork" | "allowOrigins",
value: boolean | string[]
value: boolean | string[],
) => {
setCorsConfig(prev => ({
setCorsConfig((prev) => ({
...prev,
[key]: value
[key]: value,
}));
};
@@ -74,8 +74,10 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
await patchClash({
"external-controller-cors": {
"allow-private-network": corsConfig.allowPrivateNetwork,
"allow-origins": corsConfig.allowOrigins.filter(origin => origin.trim() !== "")
}
"allow-origins": corsConfig.allowOrigins.filter(
(origin) => origin.trim() !== "",
),
},
});
await mutateClash();
},
@@ -87,8 +89,8 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
},
onError: () => {
showNotice("error", t("Failed to save configuration"));
}
}
},
},
);
useImperativeHandle(ref, () => ({
@@ -96,7 +98,7 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
const cors = clash?.["external-controller-cors"];
setCorsConfig({
allowPrivateNetwork: cors?.["allow-private-network"] ?? true,
allowOrigins: cors?.["allow-origins"] ?? ["*"]
allowOrigins: cors?.["allow-origins"] ?? ["*"],
});
setOpen(true);
},
@@ -119,7 +121,6 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
onOk={handleSave}
>
<List sx={{ width: "90%", padding: 2 }}>
<ListItem sx={{ padding: "8px 0", fontWeight: "bold" }}>
{t("External Controller CORS Settings")}
</ListItem>
@@ -129,7 +130,12 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
control={
<Switch
checked={corsConfig.allowPrivateNetwork}
onChange={(e) => handleCorsConfigChange("allowPrivateNetwork", e.target.checked)}
onChange={(e) =>
handleCorsConfigChange(
"allowPrivateNetwork",
e.target.checked,
)
}
/>
}
label={t("Allow private network access")}
@@ -144,7 +150,14 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
{t("Allowed Origins")}
</div>
{corsConfig.allowOrigins.map((origin, index) => (
<div key={index} style={{ display: "flex", alignItems: "center", marginBottom: 8 }}>
<div
key={index}
style={{
display: "flex",
alignItems: "center",
marginBottom: 8,
}}
>
<TextField
fullWidth
size="small"
@@ -178,5 +191,5 @@ export const HeaderConfiguration = forwardRef<ClashHeaderConfigingRef>(
</List>
</BaseDialog>
);
}
},
);