From 92619df026fea95d0a5a253ee9091c11f19fd7e1 Mon Sep 17 00:00:00 2001 From: kurihada Date: Mon, 15 Dec 2025 23:17:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(web):=20=E7=A7=BB=E9=99=A4=20Settings=20?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E5=9C=A8=20Header=20=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=98=BE=E7=A4=BA=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 ConfigPanel 及其入口按钮 - 在 Chat 页面 Header 左侧显示当前工作目录 - 初始化时并行获取会话列表和工作目录 --- packages/web/src/App.tsx | 24 ++++++++++++++------- packages/web/src/pages/Chat.tsx | 37 ++++++++++++++++----------------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx index 44c8e66..a5d544b 100644 --- a/packages/web/src/App.tsx +++ b/packages/web/src/App.tsx @@ -8,7 +8,6 @@ import { useState, useEffect, useCallback } from 'react'; import { Sidebar, FileBrowser, - ConfigPanel, CommandPanel, MCPPanel, HooksPanel, @@ -19,6 +18,7 @@ import { ThemeProvider, listSessions, createSession, + getWorkingDirectory, type Session, } from '@ai-assistant/ui'; import { ChatPage } from './pages/Chat'; @@ -27,7 +27,6 @@ export function App() { const [currentSessionId, setCurrentSessionId] = useState(null); const [isInitializing, setIsInitializing] = useState(true); const [showFileBrowser, setShowFileBrowser] = useState(false); - const [showConfig, setShowConfig] = useState(false); const [showCommands, setShowCommands] = useState(false); const [showMCP, setShowMCP] = useState(false); const [showHooks, setShowHooks] = useState(false); @@ -35,14 +34,26 @@ export function App() { const [showCheckpoints, setShowCheckpoints] = useState(false); const [showProviders, setShowProviders] = useState(false); const [sessionTitleUpdate, setSessionTitleUpdate] = useState<{ sessionId: string; name: string } | null>(null); + const [workingDirectory, setWorkingDirectory] = useState(''); - // 初始化:加载会话(只在首次启动时自动创建) + // 初始化:加载会话和工作目录 useEffect(() => { const HAS_SESSIONS_KEY = 'ai-assistant-has-sessions'; async function init() { try { - const { data: sessions } = await listSessions(); + // 并行获取会话和工作目录 + const [sessionsResult, workdirResult] = await Promise.all([ + listSessions(), + getWorkingDirectory().catch(() => null), + ]); + + const { data: sessions } = sessionsResult; + + // 设置工作目录 + if (workdirResult?.data?.workingDirectory) { + setWorkingDirectory(workdirResult.data.workingDirectory); + } if (sessions.length > 0) { // 有会话,选择最近的 @@ -130,13 +141,13 @@ export function App() { responsive showFileBrowser={showFileBrowser} onToggleFileBrowser={() => setShowFileBrowser(!showFileBrowser)} - onOpenConfig={() => setShowConfig(true)} onOpenCommands={() => setShowCommands(true)} onOpenMCP={() => setShowMCP(true)} onOpenHooks={() => setShowHooks(true)} onOpenAgents={() => setShowAgents(true)} onOpenCheckpoints={() => setShowCheckpoints(true)} onOpenProviders={() => setShowProviders(true)} + workingDirectory={workingDirectory} /> ) : (
@@ -182,9 +193,6 @@ export function App() { )}
- {/* 配置面板 */} - {showConfig && setShowConfig(false)} responsive />} - {/* 命令面板 */} {showCommands && setShowCommands(false)} responsive />} diff --git a/packages/web/src/pages/Chat.tsx b/packages/web/src/pages/Chat.tsx index 8470c24..7bd8346 100644 --- a/packages/web/src/pages/Chat.tsx +++ b/packages/web/src/pages/Chat.tsx @@ -3,7 +3,7 @@ */ import { useEffect, useRef } from 'react'; -import { WifiOff, MessageSquare, Settings, FolderOpen, Terminal, Plug, Zap, Bot, History, Server } from 'lucide-react'; +import { WifiOff, MessageSquare, FolderOpen, Terminal, Plug, Zap, Bot, History, Server, Folder } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; import { toast } from 'sonner'; import { @@ -23,13 +23,14 @@ interface ChatPageProps { // 工具栏按钮 showFileBrowser?: boolean; onToggleFileBrowser?: () => void; - onOpenConfig?: () => void; onOpenCommands?: () => void; onOpenMCP?: () => void; onOpenHooks?: () => void; onOpenAgents?: () => void; onOpenCheckpoints?: () => void; onOpenProviders?: () => void; + // Working Directory + workingDirectory?: string; } export function ChatPage({ @@ -39,13 +40,13 @@ export function ChatPage({ responsive = false, showFileBrowser, onToggleFileBrowser, - onOpenConfig, onOpenCommands, onOpenMCP, onOpenHooks, onOpenAgents, onOpenCheckpoints, onOpenProviders, + workingDirectory, }: ChatPageProps) { const { messages, @@ -152,8 +153,19 @@ export function ChatPage({
{/* Header */}
-

Chat

-
+
+

Chat

+ {/* Working Directory */} + {workingDirectory && ( +
+ + + {workingDirectory} + +
+ )} +
+
{/* 上下文使用情况 - 紧凑模式 */} {sessionId && ( {/* 工具栏按钮 */} - {(onOpenConfig || onToggleFileBrowser || onOpenCommands || onOpenMCP || onOpenHooks || onOpenAgents || onOpenCheckpoints || onOpenProviders) && ( + {(onToggleFileBrowser || onOpenCommands || onOpenMCP || onOpenHooks || onOpenAgents || onOpenCheckpoints || onOpenProviders) && (
{/* Checkpoints 按钮 */} {onOpenCheckpoints && ( @@ -248,19 +260,6 @@ export function ChatPage({ )} - {/* 配置按钮 */} - {onOpenConfig && ( - - - - )} - {/* 文件浏览器按钮 - 仅桌面端显示 */} {onToggleFileBrowser && (