4.9 KiB
4.9 KiB
Iteration 4 — Workspace header/layout restore (tabs + explorer parity)
Goal
Fix regressions introduced by the workspace-tabs migration by restoring the legacy workspace/agent screen layout and gestures, while keeping the new workspace tab model (agent + terminal tabs).
This iteration focuses on header controls + panel layout parity, and fixing the broken New tab menu on desktop.
Context (what must remain true)
- Left sidebar stays as-is (projects/workspaces list) and keeps existing swipe/gesture behavior.
- Right sidebar stays as-is (Changes/Files explorer) and keeps existing swipe/gesture behavior.
- Terminals and agents are first-class tabs:
- Terminal tabs are not “special” or in a different layout region.
- New tab creation UI must treat agent + terminal options equally (same menu surface).
- Workspace header shows workspace name (branch name when git, otherwise workspace name).
- No “legacy view” routing or duplicate UI kept around; everything uses the new workspace-tabs flow.
- Do not touch/restart the main daemon on
:6767. Tests/dev servers must use isolated ports/homes.
UX Requirements (desktop + mobile)
Header structure (parity with legacy AgentReadyScreen)
Workspace screen header must include:
- Left sidebar toggle (same component/gesture behavior as before).
- Title = branch name if git & branch is known; otherwise workspace name.
- Right explorer toggle (same behavior as before):
- Desktop icon: panel/right icon
- Mobile icon:
GitBranchif git checkout, elseFolder - Correct
aria-expandedstate and open/closed coloring
- New tab dropdown button that reliably opens on-screen (desktop + mobile).
- Overflow (kebab / 3-dot) menu for agent chat:
- Visible only when the active tab is an agent (i.e. “chat context”).
- Menu items should mirror legacy intent (at minimum: open chat view with full header).
Tabs
- Tabs remain horizontally scrollable (browser-style).
- Tabs must include an icon per tab type:
- Agent tabs show provider icon (Claude/Codex; fallback bot).
- Terminal tabs show terminal icon.
- Tabs must support closing terminal tabs via
X(desktop):- Confirm destructive close.
- Killing terminal updates the list and selects a valid remaining tab (or falls back to workspace root).
Panel layout
- Keep the screen layout: header → tabs row → content center → explorer right panel.
- Do not nest the explorer UI inside tab content in a way that changes layout/gesture wiring.
Gestures (must not regress)
- Left sidebar open/close gestures unchanged.
- Explorer (right sidebar) open/close gestures unchanged.
- Mobile “open explorer” pan gesture on content remains wired the same as before.
Acceptance Criteria
New tab dropdown
- Clicking the
New tabheader button opens a dropdown that is visible on-screen on desktop (not positioned off-screen). - Dropdown contains two options:
- Agent tab → opens draft agent flow for that workspace.
- Terminal tab → creates a terminal and opens its tab.
Workspace header parity
- Header shows both sidebar toggles (left menu + right explorer toggle).
- Right explorer toggle icon matches legacy behavior:
- Mobile: git vs folder icon
- Desktop: panel-right icon
- Explorer toggle opens/closes the explorer reliably and updates
aria-expanded.
Agent kebab menu
- When an agent tab is active, the kebab menu is visible and opens correctly.
- When a terminal tab is active, the kebab menu is not shown.
Tab close
- Terminal tabs display an
Xclose affordance on desktop (hover or active). - Closing a terminal:
- Confirms close
- Calls kill terminal RPC
- Removes the tab from the list
- Focuses a valid remaining tab (or navigates to workspace root if none)
Regression checks
- Explorer panel remains on the right and behaves the same as before (including gestures).
- Left sidebar gestures remain unchanged.
Verification
Automated
npm run typecheck(must pass)npm run test --workspace=@getpaseo/app(must pass)- Playwright E2E:
- Add/ensure a spec that asserts
New tabdropdown opens and is within the viewport. - Add/ensure a spec that toggles explorer via header button and asserts open/close.
- Add/ensure a spec that asserts
Manual (agent-browser)
Desktop (Metro web):
- Confirm header shows: left toggle, title, explorer toggle,
New tabdropdown, kebab menu (agent only). - Confirm
New tabdropdown opens and is visible. - Confirm terminal tab shows
Xclose and closes correctly.
Mobile viewport (Metro web responsive):
- Confirm explorer toggle uses git/folder icon.
- Confirm swipes/gestures for sidebars still work.
Non-goals (explicitly out of scope for this iteration)
- Panel splitting / drag-to-split implementation (architectural compatibility only).
- New workspace creation UX, workspace archiving rules beyond existing behavior.
- Agent hydration/indexing redesign (local SQL DB) beyond current in-memory hydration.