Repository navigation
cmux NEXT: the main agent pane shows its tab strip, and tabs drag in and out of it - #24148
Conversation
…bs (red) Leo 2026-10-21: "JUST MAKE THE TAB THING SHOW UP ON THE MAIN PANE TOO". Home's pinned dock, as the app makes it, takes tabs (allow_tabs): its pane shows its tab strip, a drop over it joins the dock (never a split), a tab dragged in drags out again, and new tabs, splits and chats from Home still open beside it. Fails on feat-cmux-next: the app never sets allow_tabs, and a dock with allow_tabs routes Cmd-D, Cmd-T and new chats into itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
…and out of it Leo 2026-10-21: "JUST MAKE THE TAB THING SHOW UP ON THE MAIN PANE TOO". The app turns allow_tabs on for Home's pinned dock (column.update, found through screen.get) when it makes or pins it, and once for a dock pinned before. Its pane then shows its tab strip by default; Hide Tab Bar and New Horizontal Tab are offered there. A tab dropped anywhere over the dock joins it (the pinned dock never splits), and a tab dragged in is an ordinary tab that drags out again; only Home's page and Chief tabs stay. The daemon still keeps Home's tab first and in the column, and a person's Close Pane there is still kept by the app. What Home opens still goes beside it: Cmd-D, New Tab and new chats key on the dock being pinned, not on allow_tabs, and the strip has no +, so links from Home never land in it. Takes back home-chief-pane.md H1 (no tab bar) and H4 (no drops) from efabde1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
…still open beside it Review follow-up. ChatDockRules refused every non-chat tab moved into a chat dock, so a terminal or browser dropped on Home was refused after the drop target promised a join: Home's pinned dock while it takes tabs now takes any tab (takesOnlyChats); other chat docks still take only chats. With allow_tabs on, the daemon no longer reroutes a browser tab aimed at the lone dock into a new column beside it, so Split Browser from Home, a non-web address and a link from a tab in Home make the tab in the dock and then move it to a column on the right (LinkOpener.moveBeside). A dock closed to tabs keeps the daemon's reroute. A failed allow_tabs update is logged and no longer skips the placeholder check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
…ugh the app's move paths Review follow-up: the live test reached the dock only through the daemon's new-tab; it now drives TabMoves.toNewColumn and TabMoves.move (where ChatDockRules refused non-chat tabs) and checks Home's tab stays first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
# Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextApp/Handlers/PaneTabBarHandlers.swift # Packages/macOS/CmuxNext/Sources/CmuxNextApp/PaneController.swift # Packages/macOS/CmuxNext/Sources/CmuxNextLayout/Model/DockColumn.swift # Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/HomeChiefPaneUncloseableTests.swift # plans/cmux-next/home-chief-pane.md
…t in it Review follow-up. With allow_tabs on, the daemon no longer reroutes a new browser tab aimed at Home's lone dock, so History, Bookmarks, a URL from another app and other openers that make a tab in the focused pane put it inside Home. PaneBrowserTabOpener now moves any such tab (no adopted page, no caller continuation) to a column on Home's right, keeping the address bar focus for a blank tab; the per-caller closures in BrowserHandlers and ChatColumnPlacement go back to the plain call. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Owned by pane-toolbar-2 on huge-blue · session |
|
Found 8 test failures on Blacksmith runners: Failures
|
|
|
|
Bead |
The What's New validator needs a tryIt action or a docs link on every entry (release-notary red on #24148). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
Home's pinned dock takes dragged tabs (allow_tabs). A terminal or browser the CLI, MCP or a script opens there, a file or page tab, and the session-local browser fallback must open beside it, and a background open must leave the focus in Home (home-chief-pane.md H1, H5). The tab-strip test now puts a tab into the dock by a drag, not by a new tab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
|
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)
red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on 84d5d32 to compare; do not merge until green; see lane-rules Tour of |
Home's pinned dock takes dragged tabs (allow_tabs), so every tab creator now applies one rule, HomeDockOpens: a tab made in Home's dock moves to a new column right of it, unless the caller places it itself. - newTerminalTab, PaneBrowserTabOpener and InternalPageTabStore.openStoreTab apply it when no placement is passed: a script's terminal, a file open, an app page. - TabLifecycle applies it to the CLI, MCP and script terminal and browser opens, including a Home no window shows. - The session-local browser fallback opens in the pane right of Home, and is refused with Home alone. - LinkOpener's moves keep the focus for a background open (keepFocus). - home-chief-pane.md H1 and H5 say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged |
|
|
|
|
|
|
… and focused as before A caller's `then` is not always a placement (the New Tab page's closePage, a profile move's close), so the opener no longer skips selecting a tab made in Home's dock when one is given; a placement that moves it (HomeDockOpens, LinkOpener) takes the focus with its own later intent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
… move drops a pane showHome added the shell a real Home starts with, or closed it, on a pane the dock move had just removed; the daemon answered "unknown pane" and the test threw. It fails the same way on feat-cmux-next 84d5d32 (fleet step ce7de4e68318d284892a6fc7). The step now goes in the report and the next round reads the tree again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba2-4ce2-7e02-8fa2-5cd34f7648b1&host=cosmic-gray
…beside it Red before the fix: PaneBrowserTabOpener skips the move beside Home for an adopted page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a167fd-8c64-7e00-9835-0a56899b9a86&host=huge-blue
…resource ids yet says so Duplicate Tab on a browser tab dragged into Home, and a popup from one, made the copy in Home's dock: the move beside Home skipped adopted pages. allow_tabs on a dock whose screen or pane has no resource id yet returned silently; it now logs and reports the step (the next connect still tries again). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a167fd-8c64-7e00-9835-0a56899b9a86&host=huge-blue
|
|
|
|
|
Review (codex xhigh, correctness first): SHIP at 32b1fba Reviewer: Codex (gpt xhigh) on cmux16, read-only, a different model from this lane. It read the full diff against merge base 84d5d32 and the delta since its FIX FIRST at 1ad9091. That review's two findings are fixed in 32b1fba: adopted pages (Duplicate Tab, popups) in Home's dock now move beside Home, with a red-then-green test (anAdoptedPageInHomeOpensBesideIt), and |
|
Red attribution at 32b1fba: none of these reds come from this PR.
|
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39947108873 at 184fa32 failed: cmux-next generated files. |
|
base-red-watch: |
…ill by default, and every acpmux harness in the Harness picker (red) Lawrence 2026-10-23: "for chief home page, i see tabbar now which is bad. home chief should have no tabbar ... chief centered profile pic is gone, chief settings gone (ideally chief can choose between literally all the acpmux stuff, every model supported there, and every reasoning effort)". - HomeChiefPaneHasNoTabBarTests (was HomeChiefPaneShowsTabBarTests, #24052): the pinned Home Chief pane hides its strip and refuses Show Tab Bar. HomeSplitKeysTests' dock test (#24148): no strip while Home holds only its own tab; a tab dragged in shows the strip while it is there. - HomeChatHeaderDefaultTests: the chat shows the centered avatar and the name pill (the click that opens Chief settings) with home.chatHeader unset. HomeBareTopFirstRunTests sets it off itself. - ChiefBackendTests / HomeChiefSettingsPickTests: the Harness picker offers every harness this Mac's acpmux lists after the official engines. The seam (listHarnesses, harnesses(listed:)) lands here as a stub that ignores the list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… and name pill, and offers every acpmux harness Lawrence 2026-10-23: "home chief should have no tabbar ... chief centered profile pic is gone, chief settings gone (ideally chief can choose between literally all the acpmux stuff, every model supported there, and every reasoning effort)". - Tab bar: the pinned Home Chief pane shows no strip while it holds only Home's tab (DockColumn.hidesTabBar, PaneController), and Show/Hide Tab Bar is refused there. #24052 and #24148 (Leo) had made it show; #24148's allow_tabs stays: a tab dragged in brings the strip back while it is there, so it stays reachable. plans/cmux-next/home-chief-pane.md H1. - Header: home.chatHeader is on by default again (#23796, Leo 2026-10-21, turned it off): the Chief's avatar centered over the chat and the "Chief >" pill, whose click opens Chief settings. Debug Settings > Home can still turn it off. a563's one header row and one more menu stay. - Harness picker: after the official engines it offers every harness this Mac's acpmux lists (_acpmux/harnesses through AgentHarnessCenter.listed), read at each card refresh, for a Chief whose brain runs on this Mac. Models and efforts already come from the brain's acpmux report for the chosen harness (offered.models, per-model efforts). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo 2026-10-21: "JUST MAKE THE TAB FUCKING THING SHOW UP ON THE MAIN PANE TOO" (what Austin and Lawrence meant by tabs showing up on the main agent pane).
Takes back efabde1 (Lawrence, 2026-10-20, pushed straight to feat-cmux-next with no PR; plans/cmux-next/home-chief-pane.md rules H1 and H4): Leo 2026-10-21, "JUST MAKE THE TAB FUCKING THING SHOW UP ON THE MAIN PANE TOO". #24052 (merged today) already brought back the Home Chief pane's tab bar. This PR finishes the order: tabs drag into and out of that pane. Lawrence's "make it impossible to close home chief" still holds.
What changes
Scope decision: the strip shows by default (#24052), and any tab can be dragged into and out of the Home Chief pane. The Rust daemon is unchanged. The app turns on the daemon's existing per-column
allow_tabsflag for Home's pinned dock.allow_tabson for Home's dock.HomeDock.allowTabssendscolumn.update {allow_tabs: true}when it makes or pins the dock. A dock pinned earlier gets it once (cmuxNext.home.dockTakesTabs), so a person's laterallow_tabs: falsestays. The column's public id comes fromscreen.get(DaemonConnection.setColumnAllowsTabs). A failure is logged and does not skip the rest of the connect.ChatDockRules.takesOnlyChatslets Home's dock take any tab kind while it takes tabs; other chat docks still take only chats. The strip drop exclusion from cmux NEXT: the main agent pane (Home's Chief pane) shows its tab bar #24052 now applies only to a pinned dock closed to tabs (isClosedPinnedDockPane).HomeDock.keepsTab).allow_tabs(ChatColumnPlacement,NewChatPlacement).allow_tabson, the daemon no longer reroutes a browser tab aimed at the lone dock. SoPaneBrowserTabOpener, andLinkOpenerfor links and files, make the tab in the dock and move it to a column on the right (LinkOpener.moveBeside). This covers Split Browser, History, Bookmarks and a URL from another app.plans/cmux-next/home-chief-pane.mdH1 and H4 are rewritten.release-notes/next/highlights/home-tab-strip.md.Not covered: on a daemon without frontend browser tabs, a session-local WebKit tab opened from Home stays in the dock. Move Tab to New Split on a non-chat tab inside Home is refused ("The agent chat can't be split"), as it was for the chat dock before.
Changelog
Tests
Focused command (fleet):
cmux-ci run --class light --script scripts/ci/package-test-lane.sh --ref <sha> --arg=suite --arg=Packages/macOS/CmuxNext --arg=HomeChiefPaneUncloseableTests,PinnedHomeDockTests,HomeLoneDockTests,HomeSplitKeysTests --env CMUX_CI_XCODE_APP=/Applications/Xcode_26.6.app31b58fa6893c00f84e0ed30eon aws-m4pro-9 failed all 4 suites, each for the expected reason:homesDockJoinsADroppedTabAndNeverSplits: no join target over the dock.newTabsFromTheLoneDockOpenBesideIt:.here/.dock(dock)instead of.besideDock.aTabDraggedIntoHomesDockDragsOutAgain: the dragged-in tab was kept.homesDockShowsItsTabStripAndTakesTabs: the dock'sallowsTabsstayed false.aNewChatSkipsAPinnedDock: the new chat went into the dock.dc0c58c71a753e36790411a9(aws-m4pro-5): HomeDockOpensTests, HomeChiefPaneUncloseableTests, PinnedHomeDockTests, HomeLoneDockTests, HomeSplitKeysTests all pass.anAdoptedPageInHomeOpensBesideItwas red on test commit da79093 (fleet stepadf39303bae1b7ca389cc5ed: "Home's dock holds [conversation, browser], 1 pane(s)") and is green at 32b1fba.cmux-next app compile (build fleet)passed at 1ad9091; the Release compile job is skipped on this PR's CI.Observed / Not run
Adopted by pane-toolbar-2 (huge-blue) after the cosmic-gray owner session ended. A Codex xhigh review at 1ad9091 found two issues, both fixed in 32b1fba: Duplicate Tab and popups from a browser tab in Home's dock stayed in the dock (adopted pages skipped the move beside Home), and
allow_tabsreturned silently when the tree had no resource ids yet (it now logs and reports the step; the next connect still retries).CI reds at 1ad9091 attributed: the
cmux-next checksreds (No new SwiftUI, Script tests, Checks job structure) and ClassicUpgradeSimulationTests, CloudBringBackTests are red on base the same way. HiddenPageHibernationTests, TabCloseWidthChangeTests and MobileHostTests passed in a focused fleet run at the head (stepc9b949e35ff45ce3a6719790): load flakes in the full job. BrowserProfileLinkMenuTests fails the same way at the merge base 84d5d32 (stepb51b27fd5ddda5669be395f7).rust workspaces(Native/OptChat/chief-turn not listed) is red on base.Observed: the red fleet run above, and
scripts/cmux-next/prepush-gate.pywith no new violations on every commit. An independent review subagent ran at 972ec7e (FAIL). Its two findings, non-chat drops refused and Home's browser tabs landing in the dock, are fixed. The re-review at 9c28cea passed with nits; the medium nit (openers that skip the routing) is fixed in 84930c2.Not run: a real-app capture of the strip on Home (cmux NEXT: the main agent pane (Home's Chief pane) shows its tab bar #24052 has one of the strip). The drag in and out by hand in a tagged build. The Rust daemon tests (no daemon change).
No capture: the capture build is blocked by the wave.css base red (#24141); #24052 has a real capture of Home's strip.
Leo-ask: ask-4325410853
Risk: normal (Home dock tab placement and drop routing; no daemon, auth or data change).
Agent session (original): cosmic-gray
Agent session: huge-blue
🤖 Generated with Claude Code