From 1390eadd9289a558da9f76b5cf3e9d97ad1e5952 Mon Sep 17 00:00:00 2001 From: Val Alexander <68980965+BunsDev@users.noreply.github.com> Date: Wed, 29 Apr 2026 10:27:10 -0500 Subject: [PATCH] fix(control-ui): link dashboard breadcrumb Make the topbar OpenClaw breadcrumb a semantic Overview link, wire the existing navigate event at the app shell, and preserve prefixed Control UI base paths.\n\nValidation:\n- pnpm test ui/src/ui/navigation.browser.test.ts\n- pnpm exec oxfmt --check --threads=1 ui/src/ui/components/dashboard-header.ts ui/src/ui/app-render.ts ui/src/ui/navigation.browser.test.ts\n- git diff --check origin/main...HEAD --- ui/src/styles/layout.css | 17 ++++++++++++++ ui/src/ui/app-render.ts | 16 +++++++++++-- ui/src/ui/components/dashboard-header.ts | 30 ++++++++++++++++++------ ui/src/ui/navigation.browser.test.ts | 28 ++++++++++++++++++++++ 4 files changed, 82 insertions(+), 9 deletions(-) diff --git a/ui/src/styles/layout.css b/ui/src/styles/layout.css index 08774c6d6e2..3f545eae6cf 100644 --- a/ui/src/styles/layout.css +++ b/ui/src/styles/layout.css @@ -160,6 +160,23 @@ color: var(--muted); } +.topnav-shell .dashboard-header__breadcrumb-link { + display: inline-flex; + align-items: center; + margin: -2px -4px; + padding: 2px 4px; + border-radius: var(--radius-sm); + text-decoration: none; + white-space: nowrap; +} + +.topnav-shell .dashboard-header__breadcrumb-link:hover, +.topnav-shell .dashboard-header__breadcrumb-link:focus-visible { + color: var(--text); + text-decoration: underline; + text-underline-offset: 3px; +} + .topnav-shell .dashboard-header__breadcrumb-current { color: var(--accent); font-weight: 650; diff --git a/ui/src/ui/app-render.ts b/ui/src/ui/app-render.ts index 2680bc202d6..1b2fb4568ef 100644 --- a/ui/src/ui/app-render.ts +++ b/ui/src/ui/app-render.ts @@ -117,7 +117,13 @@ import { import { buildExternalLinkRel, EXTERNAL_LINK_TARGET } from "./external-link.ts"; import { icons } from "./icons.ts"; import { createLazyView, renderLazyView } from "./lazy-view.ts"; -import { normalizeBasePath, TAB_GROUPS, subtitleForTab, titleForTab } from "./navigation.ts"; +import { + normalizeBasePath, + TAB_GROUPS, + subtitleForTab, + titleForTab, + type Tab, +} from "./navigation.ts"; import { isPluginEnabledInConfigSnapshot } from "./plugin-activation.ts"; import "./components/dashboard-header.ts"; import { @@ -1346,7 +1352,13 @@ export function renderApp(state: AppViewState) {
- + ) => { + state.setTab(event.detail); + }} + >