cx-39b5r: New Tab always lands on the New Tab page; drop the template dots

Merged
TE
24d ago
+8799-13041

Leo asked (10-12): New Tab should always land on the New Tab page; a terminal opens only when you pick one. The five template dots above the composer go too.

What changed

  • Cmd-T, + and the strip's empty area always open the New Tab page. The tabs.newTabKind setting ("New Tab Opens": same kind, terminal, browser, agent, auto) is removed, with its per-window memory of the last kind. That setting is what made Cmd-T skip the page and open a terminal.
  • The five template dots and the "Default: kind" toggle on the classic page are gone, with their host fields, requests and strings. tabs.newTabTemplate still picks the style in Settings.
  • Settings exports, MDM docs and the settings strings are regenerated from the fleet export. e2e scripts no longer pin the removed setting.

A follow-up PR rebuilds the area where the dots were from the agent composer's pieces (input, attachments, harness and model picker), so New Tab and the composer read as one thing.

Tests

  • NewTabAlwaysPageSettingTests (Swift): Settings offers no New Tab Opens choice. Red on c2614150e499: 243 suites passed, this one failed (descriptor(for: ["tabs", "newTabKind"]) returned the setting). Green on 5ac3dbf2924e: 246 suites passed, including this one.
  • Same test, anOldNewTabOpensValueIsARetiredKey: the removed key is retired, so an old cmux.json still loads and settings.set answers "removed". Red on ae564d5bdceb (isRetired false), green on 5ac3dbf2924e.
  • webviews/test/new-tab-no-dots.test.ts: a host payload with templateSwitcher and defaultKind yields neither. Red on c2614150e499 ("Received: true"), green on the head.
  • Gallery: the New Tab screen's no-template-dots play state asserts no dots and no Default toggle.
  • Release compile on 5ac3dbf2924e: green.
  • Known red, not this PR: ActionRunCreatedTests.aCreatedTabThatNeverShowsStillAnswersRanBeforeTheDeadline (from #20107) races its 2 s deadline on fleet minis; it passed once and failed three times across these heads, which do not touch control routing. Filed as cx-6ynqg.
  • bun run check: the only failure is formatting in src/pages/changelog on base; vp fmt --check on this PR's files and vp check --no-fmt pass. ui-rules.test.ts passes.

Review

A review subagent ran on the diff. Applied: the dots' motion test (new-tab-list-motion.test.ts) is removed with the dots; tabs.newTabKind is a retired key; the pane-tab-bar e2e presses New Terminal Tab (Ctrl-`) so the user path still runs. Not in this PR: two older paths still open a terminal (Cmd-T in a workspace with no pane yet, and a tab group's New Tab on a group with no tabs), filed as cx-hvc57.

Changelog

  • Changed: New Tab always opens the New Tab page; it never opens a terminal on its own, and the template dots are removed.

🤖 Generated with Claude Code