Repository navigation
cmux NEXT New Tab: the model menu keeps the harness rail once the page's chat starts behind it - #28966
Conversation
…e's deferred chat starts A pick or typed prompt on a New Tab starts its deferred chat behind the page. That session's start row counted as a message, so ComposerPickers locked the harness (harnessFixed) and the model menu dropped the rail to one harness's plain model list. A New Tab never fixes the harness now, and a session start row alone no longer counts as a message. Leo, 2026-10-31: "IM SAYING I CANT FUCKING SEE ANY HARNESS" Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
|
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 Shipped in:
|
|
Owned by an agent session · session |
|
Review (codex gpt-6-astra high, router-review): BLOCK at a654cf5 BLOCK at a654cf5 Visual verdict: Incomplete—no after screenshots were supplied.
No additional correctness defects found by static inspection. Tests could not run because Bun and dependencies are unavailable. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64
|
Review (codex, router-review): SHIP at 1342cd3 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 1342cd3 Visual verdict: no images; Leo tries the build
Follow-ups:
|
Leo, on the cmux NEXT New Tab composer (2026-10-30/31), verbatim:
His screenshots: with the New Tab field empty, the model menu shows the harness rail. With "helo" typed, the same menu shows only Opus 5.5 / Fable 5.1 / Sonnet 5.5 / Haiku 5.5 / More models / Fast mode, and no harness at all.
Cause
ComposerPickersfixes a chat's harness once it has a message:locked = !harnessSwitch && summary.harness && (turnCount > 0 || snapshot.rows.length > 0).lockedbecomesharnessFixed, andModelPicker.quickFamiliesthen returns no rail. A pick or typed prompt on a New Tab starts the page's deferred chat behind it (chat.new {deferred}). That session draws itssessionStartrow before any prompt is sent, sorows.length > 0read the New Tab as a started chat and the rail went away.A jsdom probe at tip (
815c758fd30) throughNewTabScreen+NewTabComposerChips:turnCount: 0, no rowsturnCount: 0, only itssessionStartrowRuled out for Leo's case:
current?.folder(#24942) hides the rail too, butcmux harness list --folder ~/Projects/leo-workspace/briefs/2026-10-20-gui-pushon cosmic-gray lists no folder profiles. The #26969 folding leaves several tabs, so it does not empty the rail.Fix
DefaultComposerChipspassesstartsChattoComposerPickers. A New Tab never locks the harness, because no prompt has gone from it.sessionStartrow alone is not a message, so a fresh chat with no prompt yet also keeps its harness switch. A chat with a real message keeps its own harness's list as before (Leo 2026-10-13, and the Fork-to rail from 2026-10-22 is unchanged).This changes nothing in the picker's design (design/model-picker.md): the rail placement, the symbols work in #27889 and the folder-profile rule from #24942 stay as they are.
Tests
webviews/test/new-tab-harness-rail.test.tsx(jsdom, realNewTabScreen/NewTabComposerChips/ChatComposerChips):Evidence on cmux-ci (Linux pool): with the fix, the new test plus the neighbouring picker suites (new-tab-deferred-pickers, new-tab-ask-model, model-menu-started-chat-fork, model-menu-compact, signed-out-rail, QuickModelMenu) pass 117/0, and
bun run typecheckreports no errors. With the fix reverted, the two middle tests fail and the other two pass.Screenshots
Waived by Leo for this PR, verbatim (2026-10-31, relayed by claude-sr2-coord): "WE DONT NEED FUCKIGN SCREENSHOTS JUST LET ME TRY THE SHIT OUT". The rail this brings back is the existing one, unchanged; Leo checks it in the nightly himself. Reviewers: the screenshot and viewed-the-after-image requirements do not apply to this PR, so judge it on correctness.
Prior art acknowledged: #27889 (symbols on top, open, separate), #28050 / #27692 (per-harness tabs, not landing), #24942 (folder profiles off the rail), #26969.
Agent session: agent session