release 2.0.0

This commit is contained in:
wonfen 2024-11-23 11:34:17 +08:00
parent 335883f9f0
commit a3140f48b4
6 changed files with 25 additions and 19 deletions

View File

@ -10,7 +10,7 @@
- 重大框架升级:使用 Tauri 2.0(巨量改进与性能提升) - 重大框架升级:使用 Tauri 2.0(巨量改进与性能提升)
- 强烈建议完全删除 1.x 老版本再安装此版本 - 强烈建议完全删除 1.x 老版本再安装此版本
- 敬请测试,出现 bug 到 issues 中提出 - 出现 bug 到 issues 中提出以后不再接受1.x版本的bug反馈。
### Features ### Features
@ -49,6 +49,7 @@
- 修复已有多个订阅导入新订阅会跳选订阅的问题 - 修复已有多个订阅导入新订阅会跳选订阅的问题
- 修复多个 Linux 下的 bug, Tun 模式在 Linux 下目前工作正常 - 修复多个 Linux 下的 bug, Tun 模式在 Linux 下目前工作正常
- 修复 Linux wayland 下任务栏图标缺失的问题 - 修复 Linux wayland 下任务栏图标缺失的问题
- 修复 Linux KDE 桌面环境无法启动的问题
- 移除多余退出变量和钩子 - 移除多余退出变量和钩子
- 修复 MacOS 下 tray 菜单重启 app 失效的问题 - 修复 MacOS 下 tray 菜单重启 app 失效的问题
- 修复某些特定配置文件载入失败的问题 - 修复某些特定配置文件载入失败的问题
@ -57,6 +58,11 @@
- 修复快捷键设置的相关 bug - 修复快捷键设置的相关 bug
- 修复 Win 下点左键菜单闪现的问题Mac 下的操作逻辑相反,默认情况下不管点左/右键均会打开菜单,闪现不属于 bug - 修复 Win 下点左键菜单闪现的问题Mac 下的操作逻辑相反,默认情况下不管点左/右键均会打开菜单,闪现不属于 bug
### Know issues
- Windows 下窗口大小无法记忆(等待上游修复)
- Webdav 备份因为安全性和兼容性问题,暂不支持同步 Webdav 服务器地址和登录信息;跨平台配置同步
--- ---
## v1.7.7 ## v1.7.7

View File

@ -1,6 +1,6 @@
{ {
"name": "clash-verge", "name": "clash-verge",
"version": "2.0.0-rc.7", "version": "2.0.0",
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"scripts": { "scripts": {
"dev": "cross-env RUST_BACKTRACE=1 tauri dev", "dev": "cross-env RUST_BACKTRACE=1 tauri dev",

View File

@ -52,7 +52,7 @@ pub async fn get_proxy_delay(
let (url, headers) = clash_client_info()?; let (url, headers) = clash_client_info()?;
let url = format!("{url}/proxies/{name}/delay"); let url = format!("{url}/proxies/{name}/delay");
let default_url = "https://cp.cloudflare.com/generate_204"; let default_url = "http://cp.cloudflare.com/generate_204";
let test_url = test_url let test_url = test_url
.map(|s| if s.is_empty() { default_url.into() } else { s }) .map(|s| if s.is_empty() { default_url.into() } else { s })
.unwrap_or(default_url.into()); .unwrap_or(default_url.into());

View File

@ -25,7 +25,7 @@
"devUrl": "http://localhost:3000/" "devUrl": "http://localhost:3000/"
}, },
"productName": "Clash Verge", "productName": "Clash Verge",
"version": "2.0.0-rc.7", "version": "2.0.0",
"identifier": "io.github.clash-verge-rev.clash-verge-rev", "identifier": "io.github.clash-verge-rev.clash-verge-rev",
"plugins": { "plugins": {
"updater": { "updater": {

View File

@ -205,7 +205,7 @@ export const MiscViewer = forwardRef<DialogRef>((props, ref) => {
spellCheck="false" spellCheck="false"
sx={{ width: 250, marginLeft: "auto" }} sx={{ width: 250, marginLeft: "auto" }}
value={values.defaultLatencyTest} value={values.defaultLatencyTest}
placeholder="https://cp.cloudflare.com/generate_204" placeholder="http://cp.cloudflare.com/generate_204"
onChange={(e) => onChange={(e) =>
setValues((v) => ({ ...v, defaultLatencyTest: e.target.value })) setValues((v) => ({ ...v, defaultLatencyTest: e.target.value }))
} }

View File

@ -72,16 +72,16 @@ export const getRules = async () => {
export const getProxyDelay = async ( export const getProxyDelay = async (
name: string, name: string,
url?: string, url?: string,
timeout?: number timeout?: number,
) => { ) => {
const params = { const params = {
timeout: timeout || 10000, timeout: timeout || 10000,
url: url || "https://cp.cloudflare.com/generate_204", url: url || "http://cp.cloudflare.com/generate_204",
}; };
const instance = await getAxios(); const instance = await getAxios();
const result = await instance.get( const result = await instance.get(
`/proxies/${encodeURIComponent(name)}/delay`, `/proxies/${encodeURIComponent(name)}/delay`,
{ params } { params },
); );
return result as any as { delay: number }; return result as any as { delay: number };
}; };
@ -108,8 +108,8 @@ export const getProxies = async () => {
// provider name map // provider name map
const providerMap = Object.fromEntries( const providerMap = Object.fromEntries(
Object.entries(providerRecord).flatMap(([provider, item]) => Object.entries(providerRecord).flatMap(([provider, item]) =>
item.proxies.map((p) => [p.name, { ...p, provider }]) item.proxies.map((p) => [p.name, { ...p, provider }]),
) ),
); );
// compatible with proxy-providers // compatible with proxy-providers
@ -154,7 +154,7 @@ export const getProxies = async () => {
} }
return acc; return acc;
}, },
[] [],
); );
let globalNames = new Set(globalGroups.map((each) => each.name)); let globalNames = new Set(globalGroups.map((each) => each.name));
@ -167,8 +167,8 @@ export const getProxies = async () => {
const proxies = [direct, reject].concat( const proxies = [direct, reject].concat(
Object.values(proxyRecord).filter( Object.values(proxyRecord).filter(
(p) => !p.all?.length && p.name !== "DIRECT" && p.name !== "REJECT" (p) => !p.all?.length && p.name !== "DIRECT" && p.name !== "REJECT",
) ),
); );
const _global: IProxyGroupItem = { const _global: IProxyGroupItem = {
@ -193,7 +193,7 @@ export const getProxyProviders = async () => {
Object.entries(providers).filter(([key, item]) => { Object.entries(providers).filter(([key, item]) => {
const type = item.vehicleType.toLowerCase(); const type = item.vehicleType.toLowerCase();
return type === "http" || type === "file"; return type === "http" || type === "file";
}) }),
); );
}; };
@ -210,7 +210,7 @@ export const getRuleProviders = async () => {
Object.entries(providers).filter(([key, item]) => { Object.entries(providers).filter(([key, item]) => {
const type = item.vehicleType.toLowerCase(); const type = item.vehicleType.toLowerCase();
return type === "http" || type === "file"; return type === "http" || type === "file";
}) }),
); );
}; };
@ -218,7 +218,7 @@ export const getRuleProviders = async () => {
export const providerHealthCheck = async (name: string) => { export const providerHealthCheck = async (name: string) => {
const instance = await getAxios(); const instance = await getAxios();
return instance.get( return instance.get(
`/providers/proxies/${encodeURIComponent(name)}/healthcheck` `/providers/proxies/${encodeURIComponent(name)}/healthcheck`,
); );
}; };
@ -254,16 +254,16 @@ export const closeAllConnections = async () => {
export const getGroupProxyDelays = async ( export const getGroupProxyDelays = async (
groupName: string, groupName: string,
url?: string, url?: string,
timeout?: number timeout?: number,
) => { ) => {
const params = { const params = {
timeout: timeout || 10000, timeout: timeout || 10000,
url: url || "https://cp.cloudflare.com/generate_204", url: url || "http://cp.cloudflare.com/generate_204",
}; };
const instance = await getAxios(); const instance = await getAxios();
const result = await instance.get( const result = await instance.get(
`/group/${encodeURIComponent(groupName)}/delay`, `/group/${encodeURIComponent(groupName)}/delay`,
{ params } { params },
); );
return result as any as Record<string, number>; return result as any as Record<string, number>;
}; };