Skip to content

[FEATURE]: TUI: pin the New session slot to the top or bottom of the tab strip #61209

Open

Description

@slothvips

Feature hasn't been suggested before.

Describe the enhancement you want to request

In the V2 TUI, with tabs.layout: "vertical", the New session slot is rendered at the end of the scrollable tab list (packages/tui/src/component/session-tabs.tsx, vertical rail: <scrollbox> → <For each={items()}> … then the add/new-session slot). With enough open tabs it scrolls out of view, and there is no way to keep it at a fixed edge.

Request: let the New session slot pin to the top or bottom of the tab rail and stay visible while the tab list scrolls. A setting such as tabs.new_session_position: "top" | "bottom" (naming is up to maintainers) would cover it. In horizontal layout the equivalent is keeping the trailing + New session control visible when the strip overflows.

Current behavior:

  • tabs only supports mode, scope, layout, and indicators.
  • Tab order is persisted insertion order, reorderable only by mouse drag.
  • The New session slot is a synthetic tab always appended after the real tabs, so it cannot be dragged or pinned.
  • session.pin.toggle (ctrl+f) pins entries in the session list, not tabs.

Environment: OpenCode v2.2.5, macOS, TUI with tabs.layout: "vertical".

Activity

  1. opencodejr commented on Nov 2, 2026

    @opencodejr

    Thanks for the clear write-up, @slothvips! You're asking for a way to pin the New session slot to the top or bottom of the vertical tab rail, so it stays visible however many tabs are open.

    From the code, this is how the rail currently works rather than a bug: in vertical layout the New session slot is drawn inside the scrollable list, after the real tabs, and the tabs settings have no option to move it. In horizontal layout the + control is already drawn outside the scrolling part of the strip, after the overflow marker, so it should stay visible there. If you see it disappear in horizontal mode, please tell us.

    This can't be built as a plugin yet, because plugins can't replace the tab bar. Maintainers will consider the request.

    Related issues:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions