spacedriveapp / spacedriveapp/spacebot
[Feature] Collapsible sidebar with persistent state
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 2.4k
- Forks
- 367
- PR merge metrics
- No merged PRs in 30d
Description
Summary
The dashboard sidebar is a fixed 220px wide and cannot be collapsed. On smaller displays, or when focused on a single channel/workbench task, that's meaningful horizontal space that can't be reclaimed. Most peer dashboards (VS Code, Linear, Discord) allow this and persist the state.
Current state
interface/src/components/Sidebar.tsx:276—<aside className="flex w-[220px] shrink-0 flex-col bg-sidebar">(hardcoded width)- No collapse state, no toggle, no
localStorageinteraction inSidebar.tsx - The per-agent expand/collapse that exists (line 247) is unrelated — it controls the agent sub-nav accordion, not the sidebar itself
Proposed change
- Toggle button in the sidebar header + keyboard shortcut (
⌘\/Ctrl+\matches VS Code convention) - Two states: expanded (current 220px) and collapsed (icon-only rail, ~48px)
- Persist via
localStorage["spacebot-sidebar-collapsed"] - Smooth width transition; main content reflows
- On viewport <640px, auto-collapse and overlay-on-open instead of pushing content
Open questions
- Should collapse hide the agent accordion entirely, or show just the agent avatars in the rail (clickable to overlay-expand)?
- Same shortcut key on macOS vs Windows/Linux, or platform-specific?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in interface/src/components/Sidebar.tsx, especially the sidebar element at line 276 and the existing agent accordion around line 247. Review how the dashboard layout handles width and smaller viewports before deciding the collapse, shortcut, persistence, and overlay behavior. Done means expanded and icon-only states, localStorage persistence, keyboard control, responsive behavior, and smooth content reflow, with the open questions resolved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100