Summary
Introduce the VS Code-style app shell as the new root layout. This is the structural foundation for Phase 2 — all other workspace model features (tabs, command palette, status bar, bottom panel) are built on top of it.
Current layout
┌──────────────┬────────────────────────┐
│ Sidebar │ Chat area │
│ (always open)│ │
└──────────────┴────────────────────────┘
Target layout
┌───┬──────────────┬────────────────────┐
│ A │ Primary │ Chat area │
│ c │ Sidebar │ │
│ t │ (panel │ │
│ . │ switches) │ │
│ B │ │ │
│ a │ ├────────────────────┤
│ r │ │ Bottom panel │
├───┴──────────────┴────────────────────┤
│ Status bar │
└───────────────────────────────────────┘
Scope
AppShell component
- New root layout component replacing the current top-level layout
- Manages the three-region structure: activity bar | primary sidebar | main area
- Sidebar collapse/expand preserved
Activity bar
- Narrow left icon strip (VS Code style)
- Icons: Chats, Personas, MCP, Settings
- Active icon highlighted; clicking switches the primary sidebar panel
- Clicking the active icon again collapses the sidebar (toggle behaviour)
- Uses brand colours and existing icon set
Primary sidebar panel switching
- Each activity bar icon maps to a panel:
- Chats → current conversation list (existing
Sidebar content)
- Personas → persona list (existing
SettingsPanel personas section, extracted)
- MCP → MCP server list (existing
SettingsPanel MCP section, extracted)
- Settings → general settings (existing
SettingsPanel general section)
- Panel state persisted in
uiStore
uiStore changes
activePanel: 'chats' | 'personas' | 'mcp' | 'settings'
sidebarOpen: boolean
Acceptance criteria
Prerequisites
- None (this is the foundation)
Unlocks
Summary
Introduce the VS Code-style app shell as the new root layout. This is the structural foundation for Phase 2 — all other workspace model features (tabs, command palette, status bar, bottom panel) are built on top of it.
Current layout
Target layout
Scope
AppShellcomponentActivity bar
Primary sidebar panel switching
Sidebarcontent)SettingsPanelpersonas section, extracted)SettingsPanelMCP section, extracted)SettingsPanelgeneral section)uiStoreuiStorechangesactivePanel: 'chats' | 'personas' | 'mcp' | 'settings'sidebarOpen: booleanAcceptance criteria
uiStore)pl-[80px]logic)Prerequisites
Unlocks