You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Restructure the Frontman client layout from two separate panel headers into a single 32px unified zoned top bar. This is a layout-only refactor — same functionality, new structure — that prepares the UI for future workspace/git integration features.
The current layout has three problems that block multi-workspace work:
No "where am I" — the task title is a small label in a crowded 40px header with no visual weight
Session switching is buried — hidden behind a clock icon dropdown
Preview has zero workspace context — its nav bar is disconnected from the chat panel's identity
Design
Zoned Top Bar (32px)
A single strip spanning the full width, visually split by the panel divider extending upward.
┌──────────────────────────────────────────────────────────────────────┐
│ [F] [▼ Workspace name] + New │ ↻ [ URL bar ] 📱 ⚙ │
│ LEFT ZONE (above chat) │ RIGHT ZONE (above preview) │
└──────────────────────────────────────────────────────────────────────┘
Left zone (above chat):
Element
Behavior
Logo (18x18px)
Frontman "F", click opens overflow menu (settings, help, open-in-new-window)
Workspace dropdown pill
Current workspace name + chevron. Click opens dropdown.
"+ New" button
Ghost button, creates new workspace (same as current "+ New task")
Right zone (above preview):
Element
Behavior
Reload (22x22px)
Refreshes preview iframe
URL bar
Flexible width, read-only display of current preview URL
Device mode toggle (22x22px)
Toggles responsive device simulation
Settings gear (22x22px)
Opens settings panel
Workspace Dropdown
Opens below the workspace pill. Width: 280px.
Search bar at top (filters by name)
Workspace list sorted by last activity (most recent first)
Each entry: workspace name, "Current" badge on active workspace, relative timestamp
Summary
Restructure the Frontman client layout from two separate panel headers into a single 32px unified zoned top bar. This is a layout-only refactor — same functionality, new structure — that prepares the UI for future workspace/git integration features.
Spec:
docs/superpowers/specs/2026-04-08-unified-top-bar-design.mdMotivation
The current layout has three problems that block multi-workspace work:
Design
Zoned Top Bar (32px)
A single strip spanning the full width, visually split by the panel divider extending upward.
Left zone (above chat):
Right zone (above preview):
Workspace Dropdown
Opens below the workspace pill. Width: 280px.
Removed from Headers
Both Panels Become Headerless
TaskTabs. Starts directly with scroll container + messages.Nav.Navigation. Starts directly withDeviceBar(if active) or iframe viewport.Implementation Tasks
1. Create
Client__TopBarcomponent2. Create
Client__TopBar__WorkspaceDropdowncomponenttasksstate viaClient__State.useSelectorswitchTaskaction as current)3. Create
Client__TopBar__LogoMenucomponent4. Move preview nav controls to top bar right zone
Client__WebPreview__Navto the right zone ofClient__TopBar5. Modify
Client__Applayoutflex row: [Chat | Preview]toflex col: [TopBar] / [flex row: [Chat | Preview]]6. Remove
Client__TaskTabsClient__Chatbox7. Remove
Client__WebPreview__Nav.NavigationDeviceBar(conditional) or iframe viewport directly8. Storybook stories
Client__TopBar.story.res— top bar in various states (with/without workspaces)Client__TopBar__WorkspaceDropdown.story.res— dropdown open, with search, various workspace countsState Changes
None. The workspace dropdown reads the same
tasksdict andcurrentTaskstate. No new actions, reducers, or effects.Styling
#130d20, border:#1e1538#1a1030background,#2e2346border, shadowFuture Slots (not in this PR)
These elements are designed into the layout but not rendered in this step. They will be added by future PRs:
Acceptance Criteria