Skip to content

Chrome bar feels redundant in tiled canvas mode — what's it for? #914

@srid

Description

@srid

Now that the Dock (#903, #909) owns navigation on the left and the right panel owns inspection on the right, the top ChromeBar in tiled canvas mode reads as a band of unrelated globals that mostly duplicate affordances available elsewhere.

What's actually in the bar today

packages/client/src/ChromeBar.tsx:42-189 carries six things:

  • Favicon link to kolu.dev + WS connection dot (identity)
  • RecordButton (idle button, expands to capsule when live)
  • Dock toggle button — mirrors Mod+B; duplicates Dock's own rail↔cards chevron (Dock.tsx:409)
  • Inspector toggle button — mirrors Mod+Alt+B; duplicates RightPanel.tsx:76-83 chevron
  • Settings gear (popover trigger)
  • ⌘K palette pill — duplicates the Dock mega-search entry point

It also straddles two positioning modes (ChromeBar.tsx:71-87): absolute overlay in tiled canvas, in-flow band in maximized. Mobile uses an entirely separate surface (MobileChromeSheet).

The question

In tiled canvas mode, what is the bar still earning? Two of its controls are pure duplicates; the palette pill is a third. Identity, status, recorder, and settings remain — none of which need a viewport-wide horizontal band to live in.

Possibilities (not a plan)

A. Delete the bar in tiled mode; keep it (or an equivalent) only in maximized

Migrate the survivors:

  • Identity + WS dot → top slot of the Dock rail
  • Settings gear → Dock header, next to mega-search
  • Recorder → free-floating top-right capsule, mounted only when `phase !== "idle"`
  • Dock-toggle, inspector-toggle, ⌘K pill → deleted (keybinds remain)
  • Add a thin re-open chevron at canvas right edge when right panel is collapsed

B. Compact the bar into a small top-right badge cluster

Keep the same items but drop the edge-to-edge band — render a ~120px pill of [status · record · settings] floating top-right. Cheap, low-risk; doesn't solve the duplication.

C. Move everything into the Dock; no top chrome in either mode

Maximized mode adapts by giving the Dock a horizontal collapsed strip across the top of the maximized tile. Most ambitious; affects the maximized layout that today depends on the bar capping the terminal title.

D. Status quo, but de-duplicate

Keep the bar; delete the dock-toggle button, inspector-toggle button, and ⌘K pill from it. Smallest move, addresses redundancy without the layout shift.

Threads to cut if we touch this

Regardless of direction, three pre-existing couplings would bite anyone refactoring here:

  • ChromeBar.tsx:83-86 reads `rightPanel.panelSize()` only because the bar is anchored at the App root and otherwise floats over the panel. Reparent inside `TerminalCanvas.tsx:396`'s relative container and the read disappears.
  • `Dock.tsx:292` uses `top-20` (80px) to clear a ~44px bar. Constant is already wrong; if the bar disappears in tiled it becomes a lie.
  • `posture.maximized(): boolean` is checked independently in `ChromeBar.tsx:71` and `Dock.tsx:289-307`. Promote to `posture.mode(): "tiled" | "maximized"` before a third mode forces a third hunt.

Volatility forecast (why this matters for choosing a seam)

  • Recorder will likely gain states (uploading, error) — wants its own growth room, argues against a fixed dock-footer slot
  • Settings may become a sheet — wants the trigger decoupled from layout
  • Identity row may pick up account info — wants vertical room, fits a rail-top slot, doesn't fit a horizontal bar slot
  • Palette UI is keyboard-first; the visible pill earns little

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions