cmux NEXT agent pane: Open subagents in panes is a cmux.json setting

AU
3d ago
+628-97

Follow-up to https://github.com/manaflow-ai/cmux/pull/24017. It is stacked on that PR, so its first three commits are #24017's; once #24017 lands, the diff here shrinks to the two commits at the top.

The summary card's Open subagents in panes switch was stored in the agent pane's localStorage, which a pane keeps only until the app quits. It is now a cmux.json setting:

"agentPane": { "subagentPanes": false }
  • It shows up in Settings > General > Agent Chat as Open Subagents in Panes, off by default (AgentPaneComposerSetting).
  • The host sends it to the page with the composer's settings (the composer event).
  • The card's switch updates at once and asks the host to write the key (pane.subagentPanes). The host then pushes the new value to every page.
  • A switch already turned on in the old localStorage moves into the setting once, and the old key is removed (adoptStoredSubagentPanes).
  • The release-note highlight now names the setting.
  • Both strings are translated in all 21 locales. The title reuses the card switch's existing translations.

Changelog

  • Changed: Open subagents in panes is now a setting (agentPane.subagentPanes, Settings > General > Agent Chat) and stays on across restarts.

Test

Committed red first (5f3cee6), then the fix (933c32c):

  • bun test test/subagent-panes-default-off.test.ts (in webviews/): the switch reads subagentPanes from the composer settings, writes pane.subagentPanes through the host, and adopts an old localStorage "on" once.
  • swift test --filter 'AgentPaneSubagentPanes' (CmuxNext): the key parses (default off, a bad value is ignored), it reaches the page value, it has a schema row, and pane.subagentPanes {show} decodes to the composer setting write.

Observed / Not run

  • Observed: nothing executed locally. This Mac has no node_modules, and Swift runs on the build fleet. PR CI runs both.
  • Not run: the generated exports (settings schema, docs/mdm, defaults). The cmux-next PR autofix regenerates them.
  • Not run: a tagged-app dogfood.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.