From 5bf3955b2624d555a7cd1f64a688b2a96ffe9ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=87=AF?= Date: Mon, 27 Jul 2026 19:16:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend-web/public/runtime-config.js | 4 + frontend-web/src/components/page-sdebar.css | 17 +++ .../src/components/page-sidebar-dark.tsx | 14 +- frontend-web/src/components/page-sidebar.tsx | 24 +++- .../workspace/workspace-nav-chat-list.tsx | 6 +- frontend-web/src/core/embed/embed-session.ts | 42 +++++- .../page-layout/chats-iframe-route.test.mjs | 38 ++++++ .../core/page-layout/chats-iframe-route.ts | 47 +++++++ frontend-web/src/pages/IframeChatPage.tsx | 116 +++++++++++++++-- frontend-web/src/pages/LoginPage.tsx | 54 ++++++-- frontend-web/src/pages/PageRoutes.tsx | 16 ++- frontend-web/src/pages/WorkspaceRoutes.tsx | 34 ++--- nginx-1.28-deployment/.dockerignore | 7 + nginx-1.28-deployment/DEPLOY.md | 104 +++++++++++++++ nginx-1.28-deployment/Dockerfile | 6 + nginx-1.28-deployment/build-image.sh | 35 +++++ nginx-1.28-deployment/deploy.sh | 120 ++++++++++++++++++ nginx-1.28-deployment/docker-compose.yml | 11 ++ .../nginx-oneclick-1.28.tar.gz.sha256 | 1 + offline-backend-20260512/backend/README.md | 1 + 20 files changed, 636 insertions(+), 61 deletions(-) create mode 100644 nginx-1.28-deployment/.dockerignore create mode 100644 nginx-1.28-deployment/DEPLOY.md create mode 100644 nginx-1.28-deployment/Dockerfile create mode 100644 nginx-1.28-deployment/build-image.sh create mode 100644 nginx-1.28-deployment/deploy.sh create mode 100644 nginx-1.28-deployment/docker-compose.yml create mode 100644 nginx-1.28-deployment/nginx-oneclick-1.28.tar.gz.sha256 diff --git a/frontend-web/public/runtime-config.js b/frontend-web/public/runtime-config.js index 02984b26..3a21c0aa 100644 --- a/frontend-web/public/runtime-config.js +++ b/frontend-web/public/runtime-config.js @@ -40,6 +40,10 @@ window.__CM_RUNTIME_CONFIG__ = { // Canvas/AI 写作独立 LangGraph 地址:为空时前端会回退使用 VITE_LANGGRAPH_BASE_URL。 VITE_CANVAS_LANGGRAPH_BASE_URL: "", + // routeKey 短路由的用户名直登口令:例如 #/login/admin?routeKey=a。 + // 填值时优先使用这里的 password;留空时使用 URL 中的 ?password=。 + VITE_ROUTE_LOGIN_PASSWORD: "", + // 轻应用「新建笔记」系列接口地址。 VITE_NOTE_API_BASE_URL: "http://47.88.25.99:8000", diff --git a/frontend-web/src/components/page-sdebar.css b/frontend-web/src/components/page-sdebar.css index 091df5fd..0093a30a 100644 --- a/frontend-web/src/components/page-sdebar.css +++ b/frontend-web/src/components/page-sdebar.css @@ -8,6 +8,17 @@ flex-shrink: 0; } +/* `?hideHeader=1`: keep the menu rail, but let it occupy the Header's space. */ +.sidebar-contnet--header-hidden { + top: 0; + height: 100vh; +} + +.sidebar-contnet--header-hidden .item-nav-content { + height: calc(100vh - 20px); + min-height: calc(100vh - 20px); +} + .sidebar-contents { width: 98px; min-height: calc(100% - 20px); @@ -618,6 +629,12 @@ html.lightyellow .light-topnav-item--active::after { width: 236px; } +/* `?hideHeader=1`: preserve the light sidebar while removing only Header. */ +.light-sidebar--header-hidden { + top: 0; + height: 100vh; +} + /* 二级列:固定 96px,竖排图标卡片 + 底部设置 */ .light-sidebar__primary { flex: 0 0 96px; diff --git a/frontend-web/src/components/page-sidebar-dark.tsx b/frontend-web/src/components/page-sidebar-dark.tsx index 4d409edf..3d5bda73 100644 --- a/frontend-web/src/components/page-sidebar-dark.tsx +++ b/frontend-web/src/components/page-sidebar-dark.tsx @@ -17,9 +17,15 @@ type PageSidebarDarkProps = { /** 是否收起(true 时只渲染左下角浮动入口,sidebar 主体隐藏) */ collapsed: boolean; onToggleCollapsed: () => void; + /** 全局 Header 隐藏时,侧边栏从视口顶部开始占满高度。 */ + headerHidden?: boolean; }; -export function PageSidebarDark({ collapsed, onToggleCollapsed }: PageSidebarDarkProps) { +export function PageSidebarDark({ + collapsed, + onToggleCollapsed, + headerHidden = false, +}: PageSidebarDarkProps) { const isAdmin = getStoredAuth()?.system_role === "admin"; const visibleMenuItems = useSidebarMenuItems(!!isAdmin); const inWujieEnv = isWujieEnv(); @@ -213,7 +219,11 @@ export function PageSidebarDark({ collapsed, onToggleCollapsed }: PageSidebarDar } return ( -