From 8e84b98563f396f7811b3edb525459ce80035433 Mon Sep 17 00:00:00 2001 From: Sawyer Date: Tue, 29 Sep 2026 22:16:31 -0700 Subject: [PATCH] feat(web): sidebar shows the Workbench wordmark, search, +, Workbenches and Workers groups (CL-9561) --- apps/web/src/app.css | 8 +- apps/web/src/shell/brand-mark.tsx | 13 --- apps/web/src/shell/sidebar.tsx | 150 +++++--------------------- apps/web/src/shell/workbench-list.tsx | 106 +++++++++++------- 4 files changed, 97 insertions(+), 180 deletions(-) delete mode 100644 apps/web/src/shell/brand-mark.tsx diff --git a/apps/web/src/app.css b/apps/web/src/app.css index 7180f16d50..7052fbef72 100644 --- a/apps/web/src/app.css +++ b/apps/web/src/app.css @@ -1181,8 +1181,12 @@ select:disabled, justify-content: space-between; padding-right: 0.35rem; } -.shell-sidebar-brand-row .shell-sidebar-brand-mark { - width: auto; +.shell-sidebar-wordmark { + flex: 1; + padding-left: 0.5rem; + font-weight: 800; + font-size: 15px; + letter-spacing: -0.01em; } .shell-sidebar-account-btn { diff --git a/apps/web/src/shell/brand-mark.tsx b/apps/web/src/shell/brand-mark.tsx deleted file mode 100644 index 61024cda1f..0000000000 --- a/apps/web/src/shell/brand-mark.tsx +++ /dev/null @@ -1,13 +0,0 @@ -// Static, not the animated dither background: its grid needs real screen -// real estate this size doesn't have. - -import { CorbitsMark } from "@corbits/react-ui"; - -/** Small and quiet — the mark is the brand moment now, not an orange rail. */ -export function SidebarBrandMark() { - return ( - - ); -} diff --git a/apps/web/src/shell/sidebar.tsx b/apps/web/src/shell/sidebar.tsx index 3e8664cf06..7d85ade080 100644 --- a/apps/web/src/shell/sidebar.tsx +++ b/apps/web/src/shell/sidebar.tsx @@ -1,32 +1,11 @@ // No bench switcher: a multi-bench install still resolves via the command // palette's hidden "Switch workbench" action. -import { - Button, - Menu, - MenuContent, - MenuItem, - MenuTrigger, - SidebarPanel, - SidebarPanelBody, - SidebarPanelFooter, -} from "@corbits/react-ui"; -import { - FlowArrow, - FolderOpen, - Lightning, - Plugs, - Plus, - Robot, - SlidersHorizontal, -} from "@/lib/icons"; -import { useState } from "react"; +import { Button, SidebarPanel, SidebarPanelBody, SidebarPanelFooter } from "@corbits/react-ui"; +import { MagnifyingGlass, Plus, SlidersHorizontal } from "@/lib/icons"; -import { useBench } from "../bench-context"; -import { CreateAgentPanel } from "../pages/create-agent-panel"; -import { AGENTS_PATH_PREFIX } from "../path-ids"; +import { openCommandPalette } from "../command-palette-open-store"; import { matchesRoute, NEW_WORKBENCH_PATH, SETTINGS_PATH } from "../routes"; -import { SidebarBrandMark } from "./brand-mark"; import { WorkbenchList } from "./workbench-list"; export function Sidebar({ @@ -36,117 +15,36 @@ export function Sidebar({ readonly path: string; readonly onNavigate: (to: string) => void; }) { - const { selectedTenantId } = useBench(); - const [createAgentOpen, setCreateAgentOpen] = useState(false); - return ( - - {/* Owner's shape: logo with "+" on the first row, the search box - (inside the list) below, then Agents and Channels. No - header icon cluster — search is the box. The "+" now opens a - dropdown (New Agent / New Workbench) instead of - jumping straight to New chat. */} +
- - - - - - - setCreateAgentOpen(true)} - > - New Agent - - onNavigate(NEW_WORKBENCH_PATH)}>New Workbench - - + Workbench + +
- {/* Agents and Channels labels render inside the list, below its - search box (owner's order: logo · search · sections · rows). */} - {selectedTenantId === null ? null : ( - onNavigate(AGENTS_PATH_PREFIX)} - /> - )} - - {/* Footer order: Artifacts, Skills, Tools, Workflows, Agents, then - one Settings row — Insights and the account menu (avatar, name, - sign out) now live inside Settings itself, not as separate - sidebar affordances. */} - - - - - - + ); + })} ); }