Skip to content

feat(app): maximize button in the Work Column tab strip header (#1434) #1613

Open

Description

@jacktrnr

Important

Problem — The maximize/restore button is positioned as absolute top-1 right-1 on the Work Column div, overlapping content. It looks like a hack, not a designed control. The button should be part of the tab strip header — a natural, expected location that matches how VS Code, Overleaf, and other IDEs place panel maximize buttons.

Approach — Move the maximize toggle button into the Work Column's side panel tab strip, at the right end of the tab row (after the last tab trigger). This requires passing toggleMaximize and chatEffectivelyCollapsed into SessionSidePanel as props, then rendering the button inside the <Tabs.List> flex container. The button should use the same visual treatment as the existing tab close buttons (size, hover, opacity).

Scope — In: move the button from absolute positioning to the tab strip header; pass state/callback as props to SessionSidePanel. Out: animation (separate issue), restore affordance (separate issue).

Acceptance Criteria

  • The maximize/restore button appears at the right end of the Work Column tab strip, after the last tab
  • The button uses the expand/collapse icon (or a fullscreen-enter/exit icon) consistent with the design system
  • Tooltip shows "Maximize Preview (⌘⇧M)" or "Show Chat (⌘⇧M)"
  • The button sits flush in the tab strip — not floating, not overlapping content
  • When Chat is collapsed, the button shows the restore icon; when visible, the expand icon
  • The button follows the same hover/opacity pattern as existing tab-strip controls

Reference

VS Code's panel maximize button: sits in the panel header, right side, alongside other panel controls (close, minimize). Same position every IDE uses.

Source

Sub-issue of #1434. Part of #1430.

Activity

  1. self-assigned this
    on Sep 28, 2026
  2. aarontrowbridge commented on Oct 29, 2026

    @aarontrowbridge
    Contributor

    Blocked on PR #1548 (Chat collapse and flexible split), which is deferred until after 0.4.0. This builds on it, so it's marked hitl to keep the night runner off it until #1548 lands. (0.4.0 cleanup)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

afk-readytriaged clearable by notturnoenhancementNew feature or requesthitlNeeds human review before merge

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions