From 6755b7c90e978cd7fdc1a8ebebe02287b608b30a Mon Sep 17 00:00:00 2001 From: lzt404 <2596933790@qq.com> Date: Sat, 29 Aug 2026 17:07:41 +0800 Subject: [PATCH] feat: add easy mode and improve OAuth, API, and agent setup flow --- src/App.tsx | 35 +- src/i18n/ja.ts | 52 ++ src/i18n/locales/en.ts | 52 ++ src/i18n/locales/zh-CN.ts | 52 ++ src/navigation.ts | 2 +- src/pages/EasyModePage.tsx | 279 +++++++++ src/styles.css | 958 ++++++++++++++++++++++++++++++ tests/navigationAndUpdate.test.ts | 6 +- 8 files changed, 1429 insertions(+), 7 deletions(-) create mode 100644 src/pages/EasyModePage.tsx diff --git a/src/App.tsx b/src/App.tsx index 39ba6d7..4ad3c8f 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -15,6 +15,7 @@ import { PackageOpen, ServerCog, Settings, + Sparkles, X, } from 'lucide-react'; import appLogo from './assets/logo.jpg'; @@ -25,6 +26,7 @@ import { KernelPage } from './pages/Kernel'; import { VersionManagementPage } from './pages/VersionManagementPage'; import { OAuthManagementPage } from './pages/ManagementPages'; import { AgentsPage } from './pages/AgentsPage'; +import { EasyModePage, type EasyModeDestination } from './pages/EasyModePage'; import { UsageRecordsPage } from './pages/UsageRecordsPage'; import { languageOptions, useI18n } from './i18n'; import { AppUpdateDialog, AppUpdateProvider, useAppUpdate } from './appUpdate'; @@ -35,6 +37,13 @@ import { detectInitialTheme, saveTheme, type AppTheme } from './theme'; const CONTACT_URL = 'https://qm.qq.com/q/3queDaIG'; const pages = [ + { + id: 'easy', + labelKey: 'app.nav.easy', + icon: Sparkles, + // The easy page is rendered separately so it can receive navigation callbacks. + component: HomePage, + }, { id: 'home', labelKey: 'app.nav.home', @@ -127,7 +136,6 @@ function AppContent() { const ActivePage = activePage.component; const selectedLanguage = languageOptions.find((option) => option.value === locale) ?? languageOptions[0]; - useEffect(() => { saveTheme(theme); }, [theme]); @@ -220,6 +228,10 @@ function AppContent() { setActive(pageId); }; + const openPage = (pageId: EasyModeDestination) => { + setActive(pageId); + }; + const openContact = async () => { try { await invoke('open_external_url', { url: CONTACT_URL }); @@ -275,7 +287,7 @@ function AppContent() {