Problem
The context sidebar treats any selected workspace as activity, so ordinary chats can show empty “Tasks” and Subagents sections above Files. It creates multiple nested scroll regions and uses “Tasks” for temporary chat todos even though Cowork has a separate durable Task mode.
User impact
The rail feels like internal status chrome rather than useful context. Empty panels waste space, nested scrolling is awkward, and terminology makes the product harder to understand.
Relevant code
apps/desktop/src/ui/ContextSidebar.tsx- Todo, subagent, and file-explorer components
- Task navigation in
Sidebar.tsx
Implementation outline
- Replace stacked sections with standard tabs: Files, Plan, Agents.
- Rename chat todos to Plan or Steps; reserve Task for durable jobs.
- Hide/disable tabs with no meaningful content.
- Use badges for active steps/agents instead of forcing panels open.
- Keep one primary vertical scrollbar.
- Remember the selected tab per chat/workspace.
- Surface important new activity without repeatedly stealing tab or scroll position.
- Make plan and agent rows actionable; open detailed content on demand.
- Use compact plain-text previews rather than full Markdown rendering for every agent row.
Acceptance criteria
- A project chat with no plan or agents opens directly to Files.
- Empty sections do not occupy rail space.
- Temporary steps are never labeled as durable Tasks.
- One primary scrollbar navigates the inspector.
- New agent/plan activity appears via status/badge without interrupting the current tab.
- Tabs use standard keyboard and ARIA behavior.
- Agent and plan entries can be opened or acted on.
Required tests
- Empty, plan-only, agents-only, and combined states.
- Tab keyboard/ARIA behavior.
- Selected-tab and scroll preservation.
- Action routing for plan and agent rows.
Additional scope from the July UI audit
- Include a fourth Preview tab when a file/Canvas preview is active.
- Opening Preview must not destroy or hide Plan/Agents state; switching tabs should preserve each panel's scroll/selection state.
- Define Files vs Quick preview vs full Canvas ownership clearly with #232.