From adbb1bbaaf621b8a2eb1247832f51636690d91d5 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Sat, 20 Jun 2026 04:19:48 -0700 Subject: [PATCH] FN-6787: remove duplicate sidebar branding Keep project identity controls in the Header while preserving sidebar navigation behavior. - Remove the Fusion logo, wordmark, and project selector from the experimental left sidebar. - Keep the sidebar collapse control reachable in expanded and collapsed modes. - Update sidebar tests and dashboard docs to cover the simplified navigation surface. Files changed: docs/dashboard-guide.md | 2 +- .../dashboard/app/components/LeftSidebarNav.css | 35 +----------- .../dashboard/app/components/LeftSidebarNav.tsx | 33 ++---------- .../components/__tests__/LeftSidebarNav.test.tsx | 63 +++++++++++++++++++++- 4 files changed, 67 insertions(+), 66 deletions(-) Fusion-Task-Id: FN-6787 Fusion-Task-Lineage: 18321939-4a68-48c2-bdbe-18e69e198a57 --- docs/dashboard-guide.md | 2 +- .../app/components/LeftSidebarNav.css | 35 +---------- .../app/components/LeftSidebarNav.tsx | 33 ++-------- .../__tests__/LeftSidebarNav.test.tsx | 63 ++++++++++++++++++- 4 files changed, 67 insertions(+), 66 deletions(-) diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index 9b847b8b27..fcff2d93b5 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -23,7 +23,7 @@ Task Detail modal opens from onboarding, activity log, and task-to-task navigati Enable **Left Sidebar Navigation** from **Settings → Experimental Features** to move the desktop/tablet project navigation out of the Header and into a persistent left sidebar. -When enabled on desktop or tablet project screens, the sidebar contains the Fusion brand, project selector, the primary destinations (Board, List, Agents, Command Center, Missions, Chat, Documents, Mailbox, and plugin primary views), Header overflow destinations as regular entries (Research, Insights, Skills, Memory, Secrets, Stash Recovery, Evals, Goals, Dev Server, Todos, and plugin overflow views when their flags/plugins are enabled), and a Settings button pinned to the bottom. The Header keeps its non-navigation controls but hides the view-toggle row and **More views** trigger so there is only one canonical navigation surface. +When enabled on desktop or tablet project screens, the sidebar contains the primary destinations (Board, List, Agents, Command Center, Missions, Chat, Documents, Mailbox, and plugin primary views), Header overflow destinations as regular entries (Research, Insights, Skills, Memory, Secrets, Stash Recovery, Evals, Goals, Dev Server, Todos, and plugin overflow views when their flags/plugins are enabled), and a Settings button pinned to the bottom. The Header retains the Fusion brand and project selector, keeps its non-navigation controls, and hides the view-toggle row and **More views** trigger so there is only one canonical navigation surface. The sidebar can be collapsed to an icon-only rail with accessible labels/titles preserved, and the expanded width can be resized from the right-edge separator. Collapsed state and expanded width are saved in browser `localStorage` (`fusion:left-sidebar-collapsed` and `fusion:left-sidebar-width`) and restored on reload. diff --git a/packages/dashboard/app/components/LeftSidebarNav.css b/packages/dashboard/app/components/LeftSidebarNav.css index 389259e7ea..bcba44d744 100644 --- a/packages/dashboard/app/components/LeftSidebarNav.css +++ b/packages/dashboard/app/components/LeftSidebarNav.css @@ -19,48 +19,17 @@ The experimental sidebar is a persistent desktop/tablet navigation replacement f .left-sidebar-nav__brand { display: flex; align-items: center; + justify-content: flex-end; gap: var(--space-sm); padding: var(--space-md); border-bottom: 1px solid var(--border); min-height: calc(var(--space-2xl) + var(--space-xl)); } -.left-sidebar-nav__logo-mark { - width: var(--space-xl); - height: var(--space-xl); - flex-shrink: 0; - color: var(--logo-accent); -} - -.left-sidebar-nav__wordmark { - flex: 1; - min-width: 0; - font-weight: 700; - letter-spacing: 0.02em; -} - .left-sidebar-nav__collapse-toggle { flex-shrink: 0; } -.left-sidebar-nav__project-selector { - padding: var(--space-sm); - border-bottom: 1px solid var(--border); -} - -.left-sidebar-nav__project-selector:empty { - display: none; -} - -.left-sidebar-nav__project-selector .project-selector { - width: 100%; -} - -.left-sidebar-nav__project-selector .project-selector-trigger { - width: 100%; - min-width: 0; -} - .left-sidebar-nav__list { display: flex; flex: 1; @@ -192,8 +161,6 @@ The experimental sidebar is a persistent desktop/tablet navigation replacement f min-width: var(--left-sidebar-nav-rail-width); } -.left-sidebar-nav--collapsed .left-sidebar-nav__wordmark, -.left-sidebar-nav--collapsed .left-sidebar-nav__project-selector, .left-sidebar-nav--collapsed .left-sidebar-nav__label, .left-sidebar-nav--collapsed .left-sidebar-nav__badge { display: none; diff --git a/packages/dashboard/app/components/LeftSidebarNav.tsx b/packages/dashboard/app/components/LeftSidebarNav.tsx index 1b7f6cbb47..b5b4eec6c6 100644 --- a/packages/dashboard/app/components/LeftSidebarNav.tsx +++ b/packages/dashboard/app/components/LeftSidebarNav.tsx @@ -1,5 +1,4 @@ import "./LeftSidebarNav.css"; -import "./ProjectSelector.css"; /* FNXC:Navigation 2026-06-19-00:00: @@ -33,7 +32,6 @@ import type { ProjectInfo, PluginDashboardViewEntry } from "../api"; import type { TaskView } from "../hooks/useViewState"; import { buildPluginTaskViewId } from "../plugins/pluginViewRegistry"; import { getPluginNavIcon } from "./pluginNavIcon"; -import { ProjectSelector as StandaloneProjectSelector } from "./ProjectSelector"; export interface LeftSidebarExperimentalFeatures { insights?: boolean; @@ -119,15 +117,6 @@ export interface LeftSidebarNavProps { onViewAllProjects?: () => void; } -function FusionLogo() { - return ( - - ); -} - function formatCount(count: number): string { return count > 99 ? "99+" : String(count); } @@ -171,10 +160,6 @@ export function LeftSidebarNav({ pluginDashboardViews = [], showAgentsTab = false, showSkillsTab = false, - projects = [], - currentProject = null, - onSelectProject, - onViewAllProjects, }: LeftSidebarNavProps) { const { t } = useTranslation("app"); const [sidebarWidth, setSidebarWidth] = useState(readStoredSidebarWidth); @@ -410,9 +395,11 @@ export function LeftSidebarNav({ aria-label={t("nav.sidebarAriaLabel", "Sidebar navigation")} style={isCollapsed ? undefined : { width: sidebarWidth, minWidth: sidebarWidth }} > + {/* + FNXC:Navigation 2026-06-20-00:00: + The sidebar no longer renders its own Fusion logo, wordmark, or project dropdown because those affordances already live in the top Header. Keep this brand row as the collapse control host so expanded and rail states retain a reachable toggle without leaving empty logo/project shells. + */}
- - {t("dashboard.brandName", "Fusion")}
-
- {onViewAllProjects ? ( - - ) : null} -
-