From ceae2684edcee07210030e394081c8f8628fba53 Mon Sep 17 00:00:00 2001 From: Douglasymlai Date: Mon, 3 Nov 2025 10:28:35 +0000 Subject: [PATCH 1/5] update bug for mcp configure dialog --- src/components/AddWorker/index.tsx | 37 +++++++++++++----- utils/__pycache__/__init__.cpython-310.pyc | Bin 193 -> 214 bytes .../traceroot_wrapper.cpython-310.pyc | Bin 2523 -> 2544 bytes 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/components/AddWorker/index.tsx b/src/components/AddWorker/index.tsx index 073b7adab..d475aca06 100644 --- a/src/components/AddWorker/index.tsx +++ b/src/components/AddWorker/index.tsx @@ -16,7 +16,9 @@ import { RefreshCw, ChevronLeft, ArrowRight, - Edit, + Edit, + Eye, + EyeOff, } from "lucide-react"; import ToolSelect from "./ToolSelect"; import { Textarea } from "@/components/ui/textarea"; @@ -68,6 +70,7 @@ export function AddWorker({ const [showEnvConfig, setShowEnvConfig] = useState(false); const [activeMcp, setActiveMcp] = useState(null); const [envValues, setEnvValues] = useState<{ [key: string]: EnvValue }>({}); + const [secretVisible, setSecretVisible] = useState<{ [key: string]: boolean }>({}); const toolSelectRef = useRef<{ installMcp: (id: number, env?: any, activeMcp?: any) => Promise; } | null>(null); @@ -86,6 +89,7 @@ export function AddWorker({ console.log(mcp); if (mcp?.install_command?.env) { const initialValues: { [key: string]: EnvValue } = {}; + const initialVisibility: { [key: string]: boolean } = {}; for(const key of Object.keys(mcp.install_command.env)) { initialValues[key] = { value: "", @@ -95,8 +99,10 @@ export function AddWorker({ ?.replace(/{{/g, "") ?.replace(/}}/g, "") || "", }; + initialVisibility[key] = false; } setEnvValues(initialValues); + setSecretVisible(initialVisibility); } }; @@ -142,6 +148,7 @@ export function AddWorker({ setShowEnvConfig(false); setActiveMcp(null); setEnvValues({}); + setSecretVisible({}); }; const handleShowEnvConfig = (mcp: McpItem) => { @@ -150,6 +157,11 @@ export function AddWorker({ setShowEnvConfig(true); }; + const isSensitiveKey = (key: string) => /token|key|secret|password|id/i.test(key); + const toggleSecretVisibility = (key: string) => { + setSecretVisible((prev) => ({ ...prev, [key]: !prev[key] })); + }; + const handleSelectedToolsChange = (tools: McpItem[]) => { setSelectedTools(tools); }; @@ -364,18 +376,24 @@ export function AddWorker({ {Object.keys(activeMcp?.install_command?.env || {}).map( (key) => (
-
- {key}* -
updateEnvValue(key, e.target.value)} + note={envValues[key]?.tip} + backIcon={isSensitiveKey(key) ? ( + secretVisible[key] ? ( + + ) : ( + + ) + ) : undefined} + onBackIconClick={isSensitiveKey(key) ? () => toggleSecretVisibility(key) : undefined} /> -
- {envValues[key]?.tip} -
) )} @@ -392,7 +410,6 @@ export function AddWorker({ cancelButtonVariant="ghost" confirmButtonVariant="primary" > - {/* hidden but keep rendering ToolSelect component */}
diff --git a/utils/__pycache__/__init__.cpython-310.pyc b/utils/__pycache__/__init__.cpython-310.pyc index 10d1d4a69c028b0fa2e5b31e6afd01340e2b871d..177a6d910e7322d363b40ab215bce2ba970c0831 100644 GIT binary patch delta 69 zcmX@ec#V-OpO=@50SG45OysK8x6}_UPAw|dPsuM$&q*xScS$YIF3B&@cg{~qRd7ly XPSsD%Oi#@#(Jw8@%qiBNI9~|>-yatI delta 48 zcmcb{c#x4RpO=@50SMMhPUNbVQgOD5aV#jx&q_@$iAl{&Pt7ZdDJ{v&DUO-AMF{{! CW)F-2 diff --git a/utils/__pycache__/traceroot_wrapper.cpython-310.pyc b/utils/__pycache__/traceroot_wrapper.cpython-310.pyc index d695ee21dc2c1d82d5dfa3d82d7694ce6bef45e3..3aa22344d614d4f3bb6e0bb4df0d0af62852caef 100644 GIT binary patch delta 72 zcmcaD{6Uy2pO=@50SG45Y~*^)r0=93TAW%`te=u!nx2zbtnZRqoL!P%pzoZYlB(d8 aSe&Y#nwg%OSE659l9^MiznP!;3>yGS;21Oj delta 51 zcmew$d|Q|+pO=@50SMMhZsdB+B&F+Y72{Y?l%JKFToRL-nVyr}|nNu9IS%vuw F8vu?25X1lg From 2369dcb4546ce6248d759667a5626f554019bbd7 Mon Sep 17 00:00:00 2001 From: Douglasymlai Date: Tue, 4 Nov 2025 10:35:22 +0000 Subject: [PATCH 2/5] remove unused refresh icon --- src/components/AddWorker/index.tsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/AddWorker/index.tsx b/src/components/AddWorker/index.tsx index d475aca06..a89b3125b 100644 --- a/src/components/AddWorker/index.tsx +++ b/src/components/AddWorker/index.tsx @@ -442,11 +442,6 @@ export function AddWorker({ }} state={nameError ? "error" : "default"} note={nameError || ""} - backIcon={} - onBackIconClick={() => { - // Handle refresh/regenerate logic here - console.log("Refresh agent name"); - }} required />
From 68ee5e4054548400a5f968fdfd5af1a4a0111900 Mon Sep 17 00:00:00 2001 From: sw3205933776 <3205933776@qq.com> Date: Wed, 5 Nov 2025 17:59:21 +0800 Subject: [PATCH 3/5] fix: force home page refresh after ending project (#609) --- src/components/TopBar/index.tsx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/TopBar/index.tsx b/src/components/TopBar/index.tsx index 0e6c4c89f..c1fe76e5d 100644 --- a/src/components/TopBar/index.tsx +++ b/src/components/TopBar/index.tsx @@ -162,11 +162,15 @@ function HeaderWin() { console.log("Task may not exist on backend:", error); } - // Delete from history - try { - await proxyFetchDelete(`/api/chat/history/${taskId}`); - } catch (error) { - console.log("Task may not exist in history:", error); + // Delete from history using historyId + const projectId = projectStore.activeProjectId; + const historyId = projectId ? projectStore.getHistoryId(projectId) : null; + if (historyId) { + try { + await proxyFetchDelete(`/api/chat/history/${historyId}`); + } catch (error) { + console.log("History may not exist:", error); + } } // Remove from local store @@ -176,8 +180,8 @@ function HeaderWin() { const newTaskId = chatStore.create(); chatStore.setActiveTaskId(newTaskId); - // Navigate to home - navigate("/"); + // Navigate to home with replace to force refresh + navigate("/", { replace: true }); toast.success(t("layout.project-ended-successfully"), { closeButton: true, From 4bd8691b6dde006dac57a42999a19e23491cf30c Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Thu, 6 Nov 2025 03:01:09 +0800 Subject: [PATCH 4/5] enhance: update bug for mcp configure dialog PR605 --- src/components/AddWorker/index.tsx | 40 ++++++++++++++---------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/components/AddWorker/index.tsx b/src/components/AddWorker/index.tsx index a89b3125b..3c4a0dd9b 100644 --- a/src/components/AddWorker/index.tsx +++ b/src/components/AddWorker/index.tsx @@ -1,7 +1,6 @@ import { Button } from "@/components/ui/button"; import { Dialog, - DialogClose, DialogContent, DialogContentSection, DialogFooter, @@ -11,14 +10,10 @@ import { import { Input } from "@/components/ui/input"; import { Bot, - CircleAlert, Plus, - RefreshCw, - ChevronLeft, - ArrowRight, - Edit, - Eye, - EyeOff, + Edit, + Eye, + EyeOff, } from "lucide-react"; import ToolSelect from "./ToolSelect"; import { Textarea } from "@/components/ui/textarea"; @@ -27,7 +22,6 @@ import githubIcon from "@/assets/github.svg"; import { fetchPost } from "@/api/http"; import { useAuthStore, useWorkerList } from "@/store/authStore"; import { useTranslation } from "react-i18next"; -import { TooltipSimple } from "../ui/tooltip"; import useChatStoreAdapter from "@/hooks/useChatStoreAdapter"; interface EnvValue { @@ -142,6 +136,7 @@ export function AddWorker({ // clean status setActiveMcp(null); setEnvValues({}); + setSecretVisible({}); }; const handleCloseMcpEnvSetting = () => { @@ -173,6 +168,7 @@ export function AddWorker({ setShowEnvConfig(false); setActiveMcp(null); setEnvValues({}); + setSecretVisible({}); setNameError(""); }; @@ -216,9 +212,11 @@ export function AddWorker({ } }); console.log("mcpLocal.mcpServers", mcpLocal.mcpServers); - for(const key of Object.keys(mcpLocal.mcpServers)) { - if (!mcpList.includes(key)) { - delete mcpLocal.mcpServers[key]; + if (mcpLocal.mcpServers && typeof mcpLocal.mcpServers === 'object') { + for(const key of Object.keys(mcpLocal.mcpServers)) { + if (!mcpList.includes(key)) { + delete mcpLocal.mcpServers[key]; + } } } if (edit) { @@ -381,18 +379,18 @@ export function AddWorker({ title={key} required placeholder={envValues[key]?.tip || `Enter ${key}`} - type={isSensitiveKey(key) && !secretVisible[key] ? "password" : "text"} + type={isSensitiveKey(key) && !secretVisible[key] ? "password" : "text"} value={envValues[key]?.value || ""} onChange={(e) => updateEnvValue(key, e.target.value)} note={envValues[key]?.tip} - backIcon={isSensitiveKey(key) ? ( - secretVisible[key] ? ( - - ) : ( - - ) - ) : undefined} - onBackIconClick={isSensitiveKey(key) ? () => toggleSecretVisibility(key) : undefined} + backIcon={isSensitiveKey(key) ? ( + secretVisible[key] ? ( + + ) : ( + + ) + ) : undefined} + onBackIconClick={isSensitiveKey(key) ? () => toggleSecretVisibility(key) : undefined} /> ) From bfc54244595758a31227627dda6021baac9bddb3 Mon Sep 17 00:00:00 2001 From: Wendong-Fan Date: Thu, 6 Nov 2025 03:27:39 +0800 Subject: [PATCH 5/5] enhance: force home page refresh after ending project PR610 --- src/components/TopBar/index.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/TopBar/index.tsx b/src/components/TopBar/index.tsx index c1fe76e5d..03e65ce4a 100644 --- a/src/components/TopBar/index.tsx +++ b/src/components/TopBar/index.tsx @@ -145,9 +145,12 @@ function HeaderWin() { return; } + const projectId = projectStore.activeProjectId; + const historyId = projectId ? projectStore.getHistoryId(projectId) : null; + try { const task = chatStore.tasks[taskId]; - + // Stop the task if it's running if (task && task.status === 'running') { await fetchPut(`/task/${taskId}/take-control`, { @@ -163,14 +166,14 @@ function HeaderWin() { } // Delete from history using historyId - const projectId = projectStore.activeProjectId; - const historyId = projectId ? projectStore.getHistoryId(projectId) : null; if (historyId) { try { await proxyFetchDelete(`/api/chat/history/${historyId}`); } catch (error) { console.log("History may not exist:", error); } + } else { + console.warn("No historyId found for project, skipping history deletion"); } // Remove from local store