diff --git a/UPDATELOG.md b/UPDATELOG.md index 6fe8f8f1..e40d82d7 100644 --- a/UPDATELOG.md +++ b/UPDATELOG.md @@ -35,6 +35,7 @@ - 配置重载失败时自动重启核心 - 启用 TUN 前等待服务就绪 - 卸载 TUN 时会先关闭 +- 优化应用启动页 ### 🐞 修复问题 diff --git a/package.json b/package.json index 411c1921..5980fd7b 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "react-i18next": "16.1.0", "react-markdown": "10.1.0", "react-monaco-editor": "0.59.0", - "react-router-dom": "7.9.4", + "react-router": "^7.9.4", "react-virtuoso": "^4.14.1", "swr": "^2.3.6", "tauri-plugin-mihomo-api": "git+https://github.com/clash-verge-rev/tauri-plugin-mihomo", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7bf57f9d..eb3b3252 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,8 +119,8 @@ importers: react-monaco-editor: specifier: 0.59.0 version: 0.59.0(monaco-editor@0.54.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-router-dom: - specifier: 7.9.4 + react-router: + specifier: ^7.9.4 version: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react-virtuoso: specifier: ^4.14.1 @@ -3638,13 +3638,6 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-router-dom@7.9.4: - resolution: {integrity: sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - react-router@7.9.4: resolution: {integrity: sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==} engines: {node: '>=20.0.0'} @@ -8241,12 +8234,6 @@ snapshots: react-refresh@0.17.0: {} - react-router-dom@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): - dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-router: 7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-router@7.9.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: cookie: 1.0.2 diff --git a/src-tauri/src/config/verge.rs b/src-tauri/src/config/verge.rs index b1f0efa4..d2b12f89 100644 --- a/src-tauri/src/config/verge.rs +++ b/src-tauri/src/config/verge.rs @@ -338,7 +338,15 @@ impl IVerge { pub async fn new() -> Self { match dirs::verge_path() { Ok(path) => match help::read_yaml::(&path).await { - Ok(config) => config, + Ok(mut config) => { + // compatibility + if let Some(start_page) = config.start_page.clone() + && start_page == "/home" + { + config.start_page = Some(String::from("/")); + } + config + } Err(err) => { log::error!(target: "app", "{err}"); Self::template() @@ -362,7 +370,7 @@ impl IVerge { env_type: Some("bash".into()), #[cfg(target_os = "windows")] env_type: Some("powershell".into()), - start_page: Some("/home".into()), + start_page: Some("/".into()), traffic_graph: Some(true), enable_memory_usage: Some(true), enable_group_icon: Some(true), diff --git a/src-tauri/src/utils/resolve/window.rs b/src-tauri/src/utils/resolve/window.rs index 75334227..4603fee7 100644 --- a/src-tauri/src/utils/resolve/window.rs +++ b/src-tauri/src/utils/resolve/window.rs @@ -1,6 +1,7 @@ use tauri::WebviewWindow; use crate::{ + config::Config, core::handle, logging_error, utils::{ @@ -17,13 +18,19 @@ const MINIMAL_WIDTH: f64 = 520.0; const MINIMAL_HEIGHT: f64 = 520.0; /// 构建新的 WebView 窗口 -pub fn build_new_window() -> Result { +pub async fn build_new_window() -> Result { let app_handle = handle::Handle::app_handle(); + let start_page = Config::verge() + .await + .latest_ref() + .start_page + .clone() + .unwrap_or("/".to_string()); match tauri::WebviewWindowBuilder::new( app_handle, "main", /* the unique window label */ - tauri::WebviewUrl::App("index.html".into()), + tauri::WebviewUrl::App(start_page.into()), ) .title("Clash Verge") .center() diff --git a/src-tauri/src/utils/window_manager.rs b/src-tauri/src/utils/window_manager.rs index fa86f7e0..a4d50d4b 100644 --- a/src-tauri/src/utils/window_manager.rs +++ b/src-tauri/src/utils/window_manager.rs @@ -328,7 +328,7 @@ impl WindowManager { return false; } - match build_new_window() { + match build_new_window().await { Ok(_) => { logging!(info, Type::Window, "新窗口创建成功"); } diff --git a/src/components/home/current-proxy-card.tsx b/src/components/home/current-proxy-card.tsx index 015d93c2..f2b9ca93 100644 --- a/src/components/home/current-proxy-card.tsx +++ b/src/components/home/current-proxy-card.tsx @@ -30,7 +30,7 @@ import { useLockFn } from "ahooks"; import React from "react"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import { delayGroup, healthcheckProxyProvider } from "tauri-plugin-mihomo-api"; import { EnhancedCard } from "@/components/home/enhanced-card"; diff --git a/src/components/home/home-profile-card.tsx b/src/components/home/home-profile-card.tsx index 812debe0..3638f0f0 100644 --- a/src/components/home/home-profile-card.tsx +++ b/src/components/home/home-profile-card.tsx @@ -22,7 +22,7 @@ import { useLockFn } from "ahooks"; import dayjs from "dayjs"; import { useCallback, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import { useAppData } from "@/providers/app-data-context"; import { openWebUrl, updateProfile } from "@/services/cmds"; diff --git a/src/components/home/system-info-card.tsx b/src/components/home/system-info-card.tsx index 4b428f5a..e9f483b7 100644 --- a/src/components/home/system-info-card.tsx +++ b/src/components/home/system-info-card.tsx @@ -17,7 +17,7 @@ import { import { useLockFn } from "ahooks"; import { useCallback, useEffect, useMemo, useReducer } from "react"; import { useTranslation } from "react-i18next"; -import { useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router"; import useSWR from "swr"; import { useSystemState } from "@/hooks/use-system-state"; diff --git a/src/components/layout/layout-item.tsx b/src/components/layout/layout-item.tsx index 15d4fb93..13ebe403 100644 --- a/src/components/layout/layout-item.tsx +++ b/src/components/layout/layout-item.tsx @@ -5,7 +5,7 @@ import { ListItemText, ListItemIcon, } from "@mui/material"; -import { useMatch, useResolvedPath, useNavigate } from "react-router-dom"; +import { useMatch, useResolvedPath, useNavigate } from "react-router"; import { useVerge } from "@/hooks/use-verge"; interface Props { diff --git a/src/components/setting/setting-verge-basic.tsx b/src/components/setting/setting-verge-basic.tsx index a5a0438d..15b48132 100644 --- a/src/components/setting/setting-verge-basic.tsx +++ b/src/components/setting/setting-verge-basic.tsx @@ -7,7 +7,7 @@ import { useTranslation } from "react-i18next"; import { DialogRef } from "@/components/base"; import { TooltipIcon } from "@/components/base/base-tooltip-icon"; import { useVerge } from "@/hooks/use-verge"; -import { routers } from "@/pages/_routers"; +import { navItems } from "@/pages/_routers"; import { copyClashEnv } from "@/services/cmds"; import { supportedLanguages } from "@/services/i18n"; import { showNotice } from "@/services/noticeService"; @@ -170,7 +170,7 @@ const SettingVergeBasic = ({ onError }: Props) => { onGuard={(e) => patchVerge({ start_page: e })} >