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} -
-