PAP-56: IA Phase 1 — left-nav restructure

Rebuild the sidebar to the board-locked IA structure (frontend-only):

- Add Conference room top-level item above New Task (chat-bubble icon),
  routing to a new placeholder page.
- Rename "New Issue" -> "New Task" and switch its label to the standard
  nav color (text-foreground/80) to match SidebarNavItem.
- Add Artifacts (new placeholder page) and Projects (-> existing /projects)
  to the Work section in the order Tasks · Routines · Goals · Workspaces ·
  Artifacts · Projects.
- Remove the old collapsible per-project PROJECTS section (SidebarProjects)
  from the sidebar; tiles get rebuilt in a child issue.
- Add /conference-room and /artifacts routes in App.tsx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
scotttongandClaude Opus 4.8 committed 2026-06-05 15:12:56 -07:00
1 parent 55cd725bf5
commit 8be2eb41b0
5 files changed
+51 -10

No files matched your search

-4
View File
@@ -82,10 +82,6 @@ vi.mock("./SidebarCompanyMenu", () => ({
SidebarCompanyMenu: () => <div>Company menu</div>,
}));
vi.mock("./SidebarProjects", () => ({
SidebarProjects: () => null,
}));
vi.mock("./SidebarAgents", () => ({
SidebarAgents: () => null,
}));
+9 -6
View File
@@ -12,12 +12,14 @@ import {
Repeat,
GitBranch,
Settings,
MessagesSquare,
Package,
FolderOpen,
} from "lucide-react";
import { useQuery } from "@tanstack/react-query";
import { NavLink } from "@/lib/router";
import { SidebarSection } from "./SidebarSection";
import { SidebarNavItem } from "./SidebarNavItem";
import { SidebarProjects } from "./SidebarProjects";
import { SidebarAgents } from "./SidebarAgents";
import { useDialogActions } from "../context/DialogContext";
import { useCompany } from "../context/CompanyContext";
@@ -73,14 +75,15 @@ export function Sidebar() {
<nav className="flex-1 min-h-0 overflow-y-auto scrollbar-auto-hide flex flex-col gap-4 pointer-coarse:gap-3 px-3 py-2">
<div className="flex flex-col gap-0.5">
{/* New Issue button aligned with nav items */}
<SidebarNavItem to="/conference-room" label="Conference room" icon={MessagesSquare} />
{/* New Task button aligned with nav items */}
<button
onClick={() => openNewIssue()}
data-slot="icon-button"
className="flex items-center gap-2.5 px-3 py-2 pointer-coarse:py-1.5 text-[13px] font-medium text-muted-foreground hover:bg-accent/50 hover:text-foreground transition-colors"
className="flex items-center gap-2.5 px-3 py-2 pointer-coarse:py-1.5 text-[13px] font-medium text-foreground/80 hover:bg-accent/50 hover:text-foreground transition-colors"
>
<SquarePen className="h-4 w-4 shrink-0" />
<span className="truncate">New Issue</span>
<span className="truncate">New Task</span>
</button>
<SidebarNavItem to="/dashboard" label="Dashboard" icon={LayoutDashboard} liveCount={liveRunCount} />
<SidebarNavItem
@@ -100,6 +103,8 @@ export function Sidebar() {
{showWorkspacesLink ? (
<SidebarNavItem to="/workspaces" label="Workspaces" icon={GitBranch} />
) : null}
<SidebarNavItem to="/artifacts" label="Artifacts" icon={Package} />
<SidebarNavItem to="/projects" label="Projects" icon={FolderOpen} />
<PluginSlotOutlet
slotTypes={["sidebar"]}
context={pluginContext}
@@ -115,8 +120,6 @@ export function Sidebar() {
/>
</SidebarSection>
<SidebarProjects />
<SidebarAgents />
<SidebarSection label="Company">