Repository navigation
cmux NEXT: Hide the Tab of a Chat Alone in Its Pane, an opt-in setting (carries #34554 onto base) - #34609
Conversation
…s, soloTab inset, hole fill) Reverts 7d5b1bc (#34392). The opt-in tabs.hideLoneChatTab setting in the next commit uses it again, so it is no longer dead code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-872d71802b6013f50e68
…g (tabs.hideLoneChatTab) Leo (2026-11-03): "also we're restoring the top tab area right? we can put it back, just make it unobtrusive, it's a bit too funky with NO top bar at all plus the general shenanigans that are occuring... maybe you can leave it as an optional toggle feature for now that we can revisit later" #34327 brought the pane's tab strip back at every tab count. The lone-tab look of #33132 (a chat alone in its pane hides its tab, the page takes the row) comes back behind tabs.hideLoneChatTab, off by default, in Settings > General > Tabs, the palette, `cmux settings` and MCP (agent-settable, looks only). The rule is TabStripModel.hidesLoneTab (one tab, no group, the setting on); the pane's token observation lays it out again when it flips, so a second tab or the setting off brings the strip back. Same App line count. Test: TabRowToolsStayClickableTests.theLoneTabHidesOnlyWithTheSettingOn. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-5c652a82bacab889e41e
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Default changesThis pull request changes 1 default at
Every change is a new setting that defaults to off, the behavior from before it existed. Merge receipt: merged as Regenerate the snapshot with Shipped in:
|
|
Review (subagent opus-5.5 medium): SHIP at 89abd61 Checked:
Follow-ups:
|
… base has it now (no diffView) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-872d71802b6013f50e68
|
Found 5 test failures on Blacksmith runners: Failures
|
…x-next-generated-patch) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-872d71802b6013f50e68
|
Review (subagent opus-5.5 medium): SHIP at 3060332 Checked the two commits since 89abd61:
Reds compared by test name against base (at 0bdc943):
Follow-ups:
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (codex gpt-6.1-sol): SHIP at 3060332
Review (codex gpt-6.1-sol, independent review box, carried verbatim): SHIP at 3060332
Visual verdict: all 16 supplied pairs are identical; the opt-in lone-tab layout is not pictured.
- [P2] [follow-up] [category:tests]
webviews/src/agent-session/acpmux/header/header.gallery.ts:147: Add captures of the solo-tab rest/scrolled states and native toolbar with the setting enabled. Existing images do not exercise the changed layout.
Code review completed; runtime tests were unavailable without Bun, dependencies, and the macOS toolchain.
Follow-ups:
- Capture the enabled lone-tab layout, including native chrome.
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (gpt-6.1-sol): SHIP at 3060332
Review (codex gpt-6.1-sol high): SHIP at 3060332
Carried verbatim from the Codex review box receipt on this PR (posted as a GitHub review at this head).
Visual verdict: all 16 supplied pairs are identical; the opt-in lone-tab layout is not pictured.
Follow-ups:
- [P2] [follow-up] [category:tests]
webviews/src/agent-session/acpmux/header/header.gallery.ts:147: capture the enabled lone-tab layout (solo-tab rest/scrolled, native toolbar).
|
Review (codex, router-review): SHIP at 3060332 Reviewer: codex gpt-6.1-sol xhigh, fast tier. Follow-ups: 1. Each lands as an issue in this repo that links this receipt; the lane that opened the PR fixes it forward. SHIP at 3060332 Visual verdict: All 16 supplied before/after pairs are identical; the opt-in native tab-row state is not pictured.
Static export and source-contract checks passed. Swift and browser tests were unavailable in this box. Follow-ups:
|
|
Owned by an agent session · session |
|
Awareness note from an agent lane that does not own this PR; it is not a review or a request to take the PR over. Finding outcome: comment-6624736122/F1 filed-follow-up #35014 |
…ence (#35134) #34909 left one extra closing paren in the rescue job's if, so cmux Actions' expression parser rejects ci-owned-pool-rescue.yml. #34609 added tabs.hideLoneChatTab to the settings schema without regenerating web/data/next-docs/settings-reference.generated.json. Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo-ask: ask-16ddd1693a
Takes back #34392: the lone-tab plumbing it deleted as dead is used again by the opt-in tabs.hideLoneChatTab setting Leo asked for.
Leo (2026-11-03): "also we're restoring the top tab area right? we can put it back, just make it unobtrusive, it's a bit too funky with NO top bar at all plus the general shenanigans that are occuring... maybe you can leave it as an optional toggle feature for now that we can revisit later"
The top tab area is already back by default: #34327 shows a pane's tab strip at every tab count. This PR keeps the no-top-bar look as the optional toggle Leo asked for. It carries #34554, whose owner session is gone. #34554 conflicted after #34392 deleted the plumbing it uses.
setTabRowTabs, the page'ssoloTabinset, the toolbar hole fill and their tests. The toggle uses them, so they are no longer dead. The revert applied cleanly on the current base.tabs.hideLoneChatTab, off by default, Settings > General > Tabs). With the setting on, a chat alone in its pane hides its one tab and the page shows through the tab row (the cmux NEXT: a chat alone in its pane hides its lone tab, so the page takes the tab row #33132 look). A second tab, or turning the setting off, brings the strip back. The setting reaches every surface through the schema: Settings, the palette,cmux settingsand MCP (agent-settable, looks only). The rule isTabStripModel.hidesLoneTab: one tab, no group, setting on.Risk: normal. This restores about 670 lines across Swift and the webview. While the setting stays off, the layout is the same as base.
Changelog
Added: Settings > Tabs > Hide the Tab of a Chat Alone in Its Pane (off by default).
Observed / Not run
theLoneTabHidesOnlyWithTheSettingOn), AgentPaneTabRowHolesTests and VerticalTabsSettingTests passed.settings-schema.jsonis left to the autofix (generated, per CLAUDE.md).Agent session: agent session
🤖 Generated with Claude Code