From ea797b033aed5709a289d46911cebe530bb2a877 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Mon, 3 Aug 2026 13:58:27 +0200 Subject: [PATCH] Phase 4.5+4.6: Modul-Konfiguration pro Workspace + Sidebar useMemo Fix 4.5 Modul-Konfiguration pro Workspace: - WorkspaceManager: Config-Editor pro Modul (JSON textarea) - Pro Modul kann JSON config bearbeitet werden (z.B. sichtbare Ordner-IDs) - Generisch: jedes Modul definiert selbst was in seiner config steht 4.6 Bugfixes: - Sidebar useMemo: isModuleVisible zu Abhaengigkeiten hinzugefuegt - Bei Workspacewechsel wird Sidebar jetzt sofort neu berechnet Tests: 17 Backend + 13 Frontend = 30/30 bestanden --- frontend/src/components/layout/Sidebar.tsx | 2 +- .../components/settings/WorkspaceManager.tsx | 46 +++++++++++++++---- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/layout/Sidebar.tsx b/frontend/src/components/layout/Sidebar.tsx index e3c14d9..b760bbe 100644 --- a/frontend/src/components/layout/Sidebar.tsx +++ b/frontend/src/components/layout/Sidebar.tsx @@ -133,7 +133,7 @@ export function Sidebar() { if (a.order !== b.order) return a.order - b.order; return a.label.localeCompare(b.label); }); - }, [manifests, menuOrderData, user]); + }, [manifests, menuOrderData, user, isModuleVisible]); const [expandedItems, setExpandedItems] = useState>(new Set()); diff --git a/frontend/src/components/settings/WorkspaceManager.tsx b/frontend/src/components/settings/WorkspaceManager.tsx index edf3a76..6447eef 100644 --- a/frontend/src/components/settings/WorkspaceManager.tsx +++ b/frontend/src/components/settings/WorkspaceManager.tsx @@ -45,6 +45,7 @@ export function WorkspaceManager() { const [moduleWsId, setModuleWsId] = useState(null); const [moduleConfig, setModuleConfig] = useState([]); + const [configEditingKey, setConfigEditingKey] = useState(null); const workspaces = wsData?.items || []; @@ -156,14 +157,43 @@ export function WorkspaceManager() { {moduleConfig.map(m => { const mod = availableModules.find(a => a.key === m.module_key); return ( - +
+ + {m.is_visible && configEditingKey === m.module_key && ( +
+