From 0a0733def75eba807fd7c99390bc5f98536f44fe Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 8 Apr 2026 18:02:29 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20consolidate=20tabs=20=E2=80=94=20re?= =?UTF-8?q?move=20standalone=20Logs=20and=20Config=20tabs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Logs functionality already exists in Runtime tab (AgentHealth/AgentInstance). Config functionality moved to Deployments tab ConfigSubTab. Old routes redirect to /runtime and /apps respectively. Navigation links updated throughout. Co-Authored-By: Claude Opus 4.6 (1M context) --- ui/src/components/ContentTabs.tsx | 2 -- .../components/ExecutionDiagram/tabs/LogTab.tsx | 4 ++-- ui/src/components/LayoutShell.tsx | 6 +++--- ui/src/hooks/useScope.ts | 4 ++-- ui/src/pages/Exchanges/ExchangeHeader.tsx | 2 +- ui/src/router.tsx | 16 ++++++---------- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/ui/src/components/ContentTabs.tsx b/ui/src/components/ContentTabs.tsx index 6444cbe3..9007e281 100644 --- a/ui/src/components/ContentTabs.tsx +++ b/ui/src/components/ContentTabs.tsx @@ -9,8 +9,6 @@ const BASE_TABS = [ { label: 'Exchanges', value: 'exchanges' }, { label: 'Dashboard', value: 'dashboard' }, { label: 'Runtime', value: 'runtime' }, - { label: 'Logs', value: 'logs' }, - { label: 'Config', value: 'config' }, ]; interface ContentTabsProps { diff --git a/ui/src/components/ExecutionDiagram/tabs/LogTab.tsx b/ui/src/components/ExecutionDiagram/tabs/LogTab.tsx index 10d6b4a8..df3c1980 100644 --- a/ui/src/components/ExecutionDiagram/tabs/LogTab.tsx +++ b/ui/src/components/ExecutionDiagram/tabs/LogTab.tsx @@ -107,10 +107,10 @@ export function LogTab({ applicationId, exchangeId, processorId }: LogTabProps) {exchangeId && (
)} diff --git a/ui/src/components/LayoutShell.tsx b/ui/src/components/LayoutShell.tsx index 44b8761f..a6275a1e 100644 --- a/ui/src/components/LayoutShell.tsx +++ b/ui/src/components/LayoutShell.tsx @@ -618,9 +618,9 @@ function LayoutContent() { const appMatch = path.match(/^\/apps\/([^/]+)(?:\/(.+))?$/); if (appMatch) { const [, sAppId, sRouteId] = appMatch; - if (scope.tab === 'config') { - // Config tab: always navigate to /config/:appId (route click → same app config) - navigate(`/config/${sAppId}`, { state }); + if (scope.tab === 'apps') { + // Deployments tab: navigate to /apps/:appId + navigate(`/apps/${sAppId}`, { state }); } else { navigate(sRouteId ? `/${scope.tab}/${sAppId}/${sRouteId}` : `/${scope.tab}/${sAppId}`, { state }); } diff --git a/ui/src/hooks/useScope.ts b/ui/src/hooks/useScope.ts index 1700a774..dc7dfffa 100644 --- a/ui/src/hooks/useScope.ts +++ b/ui/src/hooks/useScope.ts @@ -2,9 +2,9 @@ import { useParams, useNavigate, useLocation } from 'react-router'; import { useCallback } from 'react'; -export type TabKey = 'exchanges' | 'dashboard' | 'runtime' | 'logs' | 'config' | 'apps'; +export type TabKey = 'exchanges' | 'dashboard' | 'runtime' | 'apps'; -const VALID_TABS = new Set(['exchanges', 'dashboard', 'runtime', 'logs', 'config', 'apps']); +const VALID_TABS = new Set(['exchanges', 'dashboard', 'runtime', 'apps']); export interface Scope { tab: TabKey; diff --git a/ui/src/pages/Exchanges/ExchangeHeader.tsx b/ui/src/pages/Exchanges/ExchangeHeader.tsx index 2d373b9c..da53cac6 100644 --- a/ui/src/pages/Exchanges/ExchangeHeader.tsx +++ b/ui/src/pages/Exchanges/ExchangeHeader.tsx @@ -118,7 +118,7 @@ export function ExchangeHeader({ detail, onCorrelatedSelect, onClearSelection }: {formatDuration(detail.durationMs)}