From 4ec920b7388dc94780bdb0a0685e4079c90ea558 Mon Sep 17 00:00:00 2001 From: zl Date: Mon, 20 Apr 2026 13:54:06 +0800 Subject: [PATCH 01/15] =?UTF-8?q?feat:=20=E5=89=8D=E7=AB=AF=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=9A=E4=BF=AE=E6=94=B9vite=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E5=90=8E=E7=AB=AF=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/vite.config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/vite.config.js b/web/vite.config.js index 73e46212a587..d6aa01a7502c 100644 --- a/web/vite.config.js +++ b/web/vite.config.js @@ -91,15 +91,15 @@ export default defineConfig({ host: '0.0.0.0', proxy: { '/api': { - target: 'http://localhost:3000', + target: 'https://zhang-liang.online', changeOrigin: true, }, '/mj': { - target: 'http://localhost:3000', + target: 'https://zhang-liang.online', changeOrigin: true, }, '/pg': { - target: 'http://localhost:3000', + target: 'https://zhang-liang.online', changeOrigin: true, }, }, From 3380e7cd2aaa5b33c207409e1b6dde1a0fa597f9 Mon Sep 17 00:00:00 2001 From: zl Date: Tue, 21 Apr 2026 11:31:35 +0800 Subject: [PATCH 02/15] =?UTF-8?q?feat=EF=BC=9A=E6=96=87=E6=A1=A3=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/App.jsx | 9 +++++ web/src/hooks/common/useNavigation.js | 19 +++------- web/src/pages/Docs/index.jsx | 51 +++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 web/src/pages/Docs/index.jsx diff --git a/web/src/App.jsx b/web/src/App.jsx index a5d1ebc00b32..a8e469e3effa 100644 --- a/web/src/App.jsx +++ b/web/src/App.jsx @@ -53,6 +53,7 @@ import SetupCheck from './components/layout/SetupCheck'; const Home = lazy(() => import('./pages/Home')); const Dashboard = lazy(() => import('./pages/Dashboard')); const About = lazy(() => import('./pages/About')); +const Docs = lazy(() => import('./pages/Docs')); const UserAgreement = lazy(() => import('./pages/UserAgreement')); const PrivacyPolicy = lazy(() => import('./pages/PrivacyPolicy')); @@ -342,6 +343,14 @@ function App() { } /> + } key={location.pathname}> + + + } + /> { itemKey: 'pricing', to: '/pricing', }, - ...(docsLink - ? [ - { - text: t('文档'), - itemKey: 'docs', - isExternal: true, - externalLink: docsLink, - }, - ] - : []), + { + text: t('文档'), + itemKey: 'docs', + to: '/docs', + }, { text: t('关于'), itemKey: 'about', @@ -68,11 +63,7 @@ export const useNavigation = (t, docsLink, headerNavModules) => { // 根据配置过滤导航链接 return allLinks.filter((link) => { - if (link.itemKey === 'docs') { - return docsLink && modules.docs; - } if (link.itemKey === 'pricing') { - // 支持新的pricing配置格式 return typeof modules.pricing === 'object' ? modules.pricing.enabled : modules.pricing; diff --git a/web/src/pages/Docs/index.jsx b/web/src/pages/Docs/index.jsx new file mode 100644 index 000000000000..674078f3e0b4 --- /dev/null +++ b/web/src/pages/Docs/index.jsx @@ -0,0 +1,51 @@ +/* +Copyright (C) 2025 QuantumNous + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + +For commercial licensing, please contact support@quantumnous.com +*/ + +import React from 'react'; + +const DOCS_URL = 'https://doc.zhang-liang.online'; + +const Docs = () => { + return ( +
+