Skip to content

feat: VS Code-style activity bar sidebar redesign (#920)#921

Merged
ryaneggz merged 5 commits intodevelopmentfrom
feat/920-vscode-activity-bar
Apr 2, 2026
Merged

feat: VS Code-style activity bar sidebar redesign (#920)#921
ryaneggz merged 5 commits intodevelopmentfrom
feat/920-vscode-activity-bar

Conversation

@ryaneggz
Copy link
Copy Markdown
Collaborator

@ryaneggz ryaneggz commented Apr 2, 2026

Summary

  • Redesign sidebar from text-label rows to VS Code-style activity bar (48px icon strip) + collapsible side panel (~259px)
  • Saves horizontal space by keeping only icons visible when collapsed
  • Reuses existing shadcn/ui sidebar primitives with collapsible="icon" mode

Changes

  • 6 new components: ActivityBar, ActivityBarItem, SidePanel, ThreadsPanel, ProjectsPanel, SchedulesPanel
  • 1 major refactor: app-sidebar.tsx — two-column flex layout replacing collapsible groups
  • Minimal primitive changes: Pass collapsible="icon" to existing <Sidebar>

Test plan

  • Activity bar renders with 5 navigation icons
  • Clicking icon toggles content panel
  • Clicking active icon collapses to icon-only
  • Ctrl+B keyboard shortcut works
  • Tooltips on hover
  • Threads virtual scroll + infinite loading works
  • Projects create button and context menus work
  • Assistants/Memories route navigation works
  • Mobile Sheet renders correctly
  • All existing tests pass
  • npm run build succeeds

Closes #920

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features
    • Redesigned sidebar with VS Code-style two-column layout: activity bar on the left, dynamic side panel on the right
    • Side panel displays Projects, Schedules, and Threads content based on the selected navigation icon
    • Collapsible side panel mode that hides content while keeping the activity bar visible
    • Route-aware navigation for Assistants and Memories

Add implementation plan and reference screenshots for converting the
text-label sidebar into a VS Code-style activity bar with icon tabs
and collapsible content panels.

Closes #920

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: ryaneggz <kre8mymedia@gmail.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 2, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8fddc399-77e7-4e46-b935-4fa6a19f67c7

📥 Commits

Reviewing files that changed from the base of the PR and between 9d0992c and 7616aa5.

⛔ Files ignored due to path filters (2)
  • .claude/specs/screenshots/current.png is excluded by !**/*.png
  • .claude/specs/screenshots/vscode-example.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • .claude/plans/unified-purring-dream-agent-a1b0154ffe1c41831.md
  • .claude/plans/unified-purring-dream.md
  • frontend/src/components/drawers/app-sidebar.tsx
  • frontend/src/components/sidebar/ActivityBar.tsx
  • frontend/src/components/sidebar/ActivityBarItem.tsx
  • frontend/src/components/sidebar/SidePanel.tsx
  • frontend/src/components/sidebar/panels/ProjectsPanel.tsx
  • frontend/src/components/sidebar/panels/SchedulesPanel.tsx
  • frontend/src/components/sidebar/panels/ThreadsPanel.tsx

📝 Walkthrough

Walkthrough

This pull request refactors the sidebar from a text-label layout into a VS Code-style icon strip design. The existing Sidebar primitive is retained and restructured to contain an always-visible ActivityBar (48px icon navigation) and a collapsible SidePanel that displays contextual content. New components extract and replace collapsible groups, while AppSidebar gains route-aware state management for panel selection and navigation.

Changes

Cohort / File(s) Summary
Design & Implementation Plans
.claude/plans/unified-purring-dream.md, .claude/plans/unified-purring-dream-a1b0154ffe1c41831.md
Architecture and refactoring design documents outlining VS Code–style activity bar layout, component structure, and routing-aware panel handling (~646 lines of specification).
Sidebar Refactor
frontend/src/components/drawers/app-sidebar.tsx
Replaced collapsible groups and assistant/memory links with new ActivityBar + SidePanel layout. Added activePanel state, ROUTE_PANELS mapping for routing-aware panel selection, route-driven effects, and callback renders for threads/projects. Net change: +73/-488 lines.
Activity Bar Components
frontend/src/components/sidebar/ActivityBar.tsx, frontend/src/components/sidebar/ActivityBarItem.tsx
New PanelId type union and ActivityBar component that renders navigation icons from static config. ActivityBarItem wraps each icon in a button with tooltip, active styling, and optional data-tour attributes.
Side Panel Core & Panels
frontend/src/components/sidebar/SidePanel.tsx, frontend/src/components/sidebar/panels/ThreadsPanel.tsx, frontend/src/components/sidebar/panels/ProjectsPanel.tsx, frontend/src/components/sidebar/panels/SchedulesPanel.tsx
New SidePanel conditional renderer that switches on active panel ID. ThreadsPanel provides virtualized thread list with infinite scroll; ProjectsPanel renders projects with create button; SchedulesPanel fetches and displays recent schedule executions with navigation link.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 Hops with delight at the new design!
Icons now shine in a vertical line,
A click, a toggle—the panels appear,
VS Code vibes bringing code reviewers cheer! ✨
Less clutter, more space, the rabbit does dance,
Sidebar redesign: a whimsical chance! 🎨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/920-vscode-activity-bar

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Replace the text-label sidebar with a two-column layout: a 48px icon
activity bar (always visible) and a collapsible content panel. Uses
existing shadcn/ui sidebar primitives with collapsible="icon" mode.

New components:
- ActivityBar: vertical icon strip with logo, 5 nav icons, settings
- ActivityBarItem: icon button with left-border active indicator + tooltip
- SidePanel: conditional content renderer for active section
- ThreadsPanel: extracted virtual-scroll thread list
- ProjectsPanel: extracted project list with create button
- SchedulesPanel: extracted schedule execution list

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: ryaneggz <kre8mymedia@gmail.com>
…anel

Replace the two-column activity bar + side panel approach with the correct
VS Code pattern: horizontal icon tabs row at top of sidebar, content panel
below. Icons sit directly under the logo/header, replacing the text-label
navigation rows to save vertical space.

- ActivityBar now renders as a horizontal flex row of icon buttons
- ActivityBarItem uses bottom border indicator for active state
- Sidebar keeps standard single-column layout (header → tabs → content → footer)
- Restored SidebarHeader, SidebarContent, SidebarFooter structure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: ryaneggz <kre8mymedia@gmail.com>
Root cause: `w-4.5 h-4.5` is not a valid Tailwind class (no 4.5 step),
so the CSS was ignored and SVGs rendered at their raw 24x24 attribute
size instead of the intended 18px. This caused misalignment and
subpixel blurriness.

Changes:
- Icon size: invalid `w-4.5 h-4.5` -> valid `w-5 h-5` (20px, crisp)
- Button size: `w-9 h-9` (36px) -> `w-10 h-10` (40px) for better targets
- Active icon: thicker stroke (2.25) vs inactive (1.75) for visual weight
- Inactive opacity: tuned to /40 resting, /70 hover for clear hierarchy
- Tab row: increased gap from 0.5 to 1 (4px) and padding for breathing room
- Active indicator: moved to bottom-0.5 with rounded-full for polish

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: ryaneggz <kre8mymedia@gmail.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: ryaneggz <kre8mymedia@gmail.com>
@ryaneggz ryaneggz marked this pull request as ready for review April 2, 2026 04:28
@ryaneggz ryaneggz merged commit 8971a34 into development Apr 2, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: VS Code-style activity bar sidebar redesign

1 participant