Skip to content

Better tab / header support #301

Closed

Description

@CraftedFury

What would you like to see?

I think it would be valuable if the top header functioned basically exactly like the Terminal (see picture below).

Image

It would collapse both the "tab bar" and the header bar into the same bar, it would have the Claude (or Swttch) at the left, tabs become actual tabs that can be renamed, the browse feature can expand into 2-3 clickable icon buttons that perform the "Add New", "Browse", and "Past Conversations" features.

The one wrinkle is the customizable right-side, hopefully it can just be absorbed into a "float: right" icon and still support the optional "show this information" as well.

What would it help you do?

Would let me run multiple sessions better by knowing what tab is working on what project at a glance.

Alternatives Considered

No response

Affected Area

Chat UI

Screenshots / References

Image

Additional Context

No response

Activity

  1. yhk1038 commented on Aug 20, 2026

    @yhk1038
    Collaborator

    @CraftedFury That's a great idea, but unfortunately, this is handled natively by JetBrains IDEs, so it cannot be customized via plugins.

    For now, I'm closing this issue,
    but feel free to reopen it if anyone has further ideas or suggestions.

  2. CraftedFury commented on Aug 21, 2026

    @CraftedFury
    Author

    I had a minimum-viable example plugin built to show this entire feature can be built 100% to spec @yhk1038

    https://github.com/simplified-dev/tabsimile

    Image

    I do not have permission to reopen my own issue:

    Image
  3. yhk1038 commented on Aug 23, 2026

    @yhk1038
    Collaborator

    @CraftedFury

    First, a correction

    When I closed this, I said it was handled natively by the IDE and could not be touched by a plugin. That was wrong.

    I pulled tabsimile and checked it against the 2024.2 SDK we build on. I also read the annotations straight out of the bytecode.

    setTabActions, setTitleActions, ToolWindowTabRenameActionBase, HIDE_ID_LABEL, DONT_HIDE_TOOLBAR_IN_HEADER and ALLOW_DND_FOR_TABS are none of them internal.

    So there is nothing here that would fail marketplace review on our side either.

    Thank you for going as far as building a demo. It even turned up a wrong comment in our own code.

    We had a spot where we wrote the string literal by hand because we believed HIDE_ID_LABEL was internal.


    There is something I would like to talk through, though.

    Your request is really two things, I think.

    1. Renaming tabs

    This one sounds good.

    There is something I want to confirm first. Tab names already follow the session title today. Change the session and the tab name changes with it.

    So is what you want:

    "Let me set the name myself, instead of the one that gets attached automatically"?

    If so, I understand, and I will look at it as something to take in.

    2. Collapsing the two header lines into one

    On this one I honestly disagree.

    Not because it cannot be done, but because the two lines do different jobs.

    The upper line is where the sessions you have open are shown. The lower line, which we call the top bar, is not tied to a single session. It is a general purpose controller.

    We see it as a place that will hold more than what is on it today. So my worry is that collapsing them into one line takes that place away.

    You suggested absorbing it into a single float: right icon, but that would push everything currently visible one level down into a menu.


    That said, what you were after originally was to know what tab is working on what project at a glance.

    I am completely with you on that.

    Just on that goal, could it be solved without collapsing the header? Being able to name tabs yourself might get you most of the way there, for instance.

    How do you see it?

    Is what bothers you mainly:

    • having two lines at all, or
    • not being able to tell the tabs apart?
  4. CraftedFury commented on Aug 23, 2026

    @CraftedFury
    Author

    My primary issue is not being able to tell the two lines apart (tab renaming).

    That said, I personally don't find value in the second header (after session creation), so I still really want the merger, because those are effectively "actions" you take to start/restart, not for "ongoing", which is why they belong in the top header.

    • Browse: Change directory to a detected sub module for a new conversation (already a drop down)
    • Past: Open a previous conversation (already a drop down)
    • Icon: Settings and toggles (already a drop down and float right)

    Clarification: The browse and past drop downs stay individual drop downs that float left after the tabs, they don't collapse into Settings, they stay self expressed, but move to where they should be which is session management.

    There's nothing out of place with merging what's currently there onto one tab bar, they are effectively "new session" and "settings/toggles", and what's currently there can definitely collapse into one tab header.

    As for what comes in the future, if you went forward with this change, is evaluate the feature with more weight on if it deserves to be on its own per-session header line, rather than doubling as "new session mechanics" like they do today.

    Something important with my header recommendation, is that another Terminal feature falls out of this change: if the tabs are part of the same top-level container then all of the tabs in the main container are collapsible/hide-able if you press the project button on the sidebar.

    In summary, I don't think the current iteration of the second header bar earns its place. Your future vision of features might likely bring it back, but what's currently there all belongs on a "top-level" header bar. A second header bar could still make sense when it returns.

  5. yhk1038 commented on Aug 23, 2026

    @yhk1038
    Collaborator

    @CraftedFury

    Thanks for the clarification on the dropdowns — that cleared up my earlier worry, since I had read float: right as everything folding into the settings menu.

    There are two things I never explained properly, and I think they are where the misunderstanding comes from. That is on me.

    The session dropdown is not "open a previous conversation"

    Past: Open a previous conversation (already a drop down)

    Completely fair reading from the outside, but the tab strip and the session dropdown hold different things:

    • Tabs — the sessions you currently have open
    • Session dropdown — the full list of every session that exists

    Inside it there is a search box, sessions grouped by date, rename, delete, and keyboard navigation. It also opens from /resume.

    "Past Conversations" is only a placeholder shown when the current session has no title yet, which is probably what you were seeing. Worth opening once — it will make more sense immediately.

    Browse is similar: it also has the nested toggle, full browsing, and adding a directory.

    The ⋮ is a dock, not a settings dropdown

    It is a spot where you pull out icons and arrange them yourself. Six items live there: token battery, scheduled messages, background tasks, tunnel status, settings, new tab.

    The first four are not actions — they are ongoing state. How much context the running session has left, what is queued, what is running, whether the tunnel is up.

    The dock ships empty, so a fresh install only shows ⋮. That is deliberate — we did not want to hand anyone a bar full of icons they never asked for. The cost is that it is easy to miss entirely, which I think is exactly what happened here.

    So this would not merge the two lines, it would remove one

    The second line is already using a full line, and even then we ran out of room — that is why the dock got folded into a menu in the first place.

    Add the tab strip and the session title disappears once three tabs are open. So merging into one line ends up meaning dropping most of what the second line does.

    There is also a limit on our side: we cannot freely use the first line.

    There is no API to hide the header itself — I went through ToolWindow looking for one and it isn't there. And what you can put up there is Swing, whereas our second line is a webview (React).

    That part is a requirement rather than a preference. We support tunneling, so people can reach the same session from a browser. Anything moved to Swing simply would not exist for them.

    Where that leaves us

    Tab renaming we agree on, and I will take it in. That was the part you said mattered most, so I am glad that is the one we landed on.

    On merging the headers I am going to say no, for four reasons:

    • Tabs and the session dropdown hold different things (open vs. all)
    • There is no room for both on one line — the folded dock is already evidence of that
    • The first line cannot be removed
    • The first line is Swing, so moving things there loses them for browser users

    The Terminal collapse behaviour you brought up is a genuinely good catch, and not something I had considered. I am writing it down rather than dropping it.

    If you open the session dropdown once and still feel the same way, please say so — I would like to hear it.

  6. CraftedFury commented on Aug 23, 2026

    @CraftedFury
    Author

    @yhk1038 There is a middle ground that implements the top-level tab container (like Terminal), and leaves the second header intact.

    This keeps your genuinely specific-to-this-session tools and displays where they are today, and still delivers on effectively both of my original requests, tab renaming and tab grouping.

    It also delivers the terminal collapse behaviour.

    I don't specifically want the second header removed, I just think the way the tabs act as top-level containers is the issue here.

    This should satisfy my overall intent and maintain the sub-header as you intend for it.

  7. yhk1038 commented on Aug 23, 2026

    @yhk1038
    Collaborator

    Good suggestion!

    I'll start with the tab renaming feature first.

    I'll attach screenshots in the PR.

    Thank you for the good idea and for taking the time to discuss it.

  8. added this to the v0.29.1 milestone on Aug 24, 2026
  9. modified the milestones: v0.29.1, v0.29.2 on Aug 25, 2026
  10. moved this from Todo to In Progress in Swttch release planneron Aug 26, 2026
  11. yhk1038 commented on Aug 26, 2026

    @yhk1038
    Collaborator

    @CraftedFury I made this on PR #362 !

    image
  12. yhk1038 commented on Aug 28, 2026

    @yhk1038
    Collaborator

    @CraftedFury

    Tab renaming is now released in v0.29.2. 🙏

    Sorry for the late notice — it went out yesterday and I am only telling you today. When you have time, please update and check that it works well for you.

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

    enhancementNew feature or request

    Type

    No type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions