Skip to content

cmux NEXT settings: agentPane.composerRing chooses context or plan usage for the composer ring - #34732

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/composer-ring-setting
Nov 4, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/composer-ring-setting

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Leo: "are we able to disable the context thing on the bottom right? i want to be able to right click disable it. what's its name?" and "likewise, i guess we can turn that into a 5h/weekly usage type thing instead as well for some people. i suppose it'd be relevant sometimes for SOME people to have that surfaced e.g in their session info thing."

This is the native and settings side. A separate web PR reads the value and draws the plan usage ring.

What changed

  • New setting agentPane.composerRing, a choice: context (the default, so the ring behaves as it does today) or planUsage (the account's 5-hour and weekly usage limits, when the harness reports them). It sits in Settings > Agents > Message Box right after Show Context Usage. Title "Composer Ring", choices "Context" / "Plan Usage", localized like the neighbouring Attachment View strings. agentPane.showContextUsage is unchanged and still hides or shows the ring.
  • The composer host event (AgentPaneComposerSetting.pageValue) now carries "composerRing": "context" | "planUsage".
  • New page request pane.setComposerRing {ring} writes agentPane.composerRing the same way pane.setAttachmentView {view} writes agentPane.attachmentView, and is added to the page method allowlist. Any other value comes back unsupported and writes nothing.
  • The key is in AgentPaneComposerSettingsSchema.agentSettableKeys (it only changes a look) and is palette-exposed. Because it is a plain string choice, the CLI and MCP get it from the schema without new code.
  • I did not edit the generated exports (schemas/settings/settings-schema.json, schemas/defaults/cmux-next.json, docs/mdm/*, web/data/next-docs/settings-reference.generated.json). Base autofix regenerates them, as it does for other settings PRs.

Red / green

  • Red: 61c3557 adds AgentPaneComposerRingSettingTests (default, page value, round-trip, bad value gives a diagnostic, layout placement, agent-settable) and AgentPaneComposerRingRequestTests (decoding, refusal, allowlist). They don't compile without the new types.
  • Green: the next commit adds the setting, the decoding and the allowlist entry.

Observed / Not run

  • Observed: the CmuxNext compile check on the head (result in a comment below).
  • Not run: the Swift test suites, and checking the palette row, cmux settings get|set agentPane.composerRing and MCP settings_set on a tagged build. The web side that draws plan usage is in the separate web PR.

Changelog

  • cmux NEXT: Settings > Agents > Message Box > Composer Ring picks what the composer's ring shows: context usage (the default) or your plan's 5-hour and weekly usage limits.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Adds a Composer Ring setting so the ring at the end of the composer can show either context usage or plan usage.

  • New agentPane.composerRing setting in Settings > Agents > Message Box, right after Show Context Usage, with context (default) and planUsage choices.
  • The composer host event now carries composerRing, and a new pane.setComposerRing {ring} page request writes it the same way pane.setAttachmentView writes agentPane.attachmentView; invalid values are refused with no write.
  • Agents can set the ring since it only changes a look, the key is palette-exposed, and all strings are localized. agentPane.showContextUsage is unchanged and still hides or shows the ring either way.

Tests

  • Covers defaults, round-trips, bad-value diagnostics, layout placement, request decoding, and the allowlist.

Written for commit fea3581. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 2 commits November 4, 2026 03:26
…e for the composer ring

A choice setting (context, the default, or planUsage) next to Show Context
Usage. The composer event carries composerRing and the page writes it with
pane.setComposerRing {ring}, as pane.setAttachmentView writes
agentPane.attachmentView. Agent-settable (a look), palette-exposed,
localized.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review fea3581: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr34732 -f ref=lane/composer-ring-setting -f platform=macos -f backend_mode=local

Shipped in:

@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 4, 2026

Copy link
Copy Markdown

Found 5 test failures on Blacksmith runners:

Failures

Test View Logs
main.DeveloperIdAppTests.test_download_prints_the_active_profile_only/
test_download_prints_the_active_profile_only
View Logs
stubs: /System/Library/Frameworks/Security.framework/Versions/A/Security has no stub/
Security has no stub
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_CFRetain']/
CoreFoundation, missing 1: ['_CFRetain']
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_log2']/
CoreFoundation, missing 1: ['_log2']
View Logs
test_the_type_check_covers_every_webviews_test_file (main.WorkflowShape.test_the_ty
pe_check_covers_every_webviews_test_file)/
test_the_type_check_covers_every_webviews_test_file (main.WorkflowShape.test_the_ty
pe_check_covers_every_webviews_test_file)
View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Compile check CmuxNext at fea3581: passed (378 s).

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review (codex gpt-6-astra high, next-review, since=20261104T041520Z): SHIP at fea3581

SHIP at fea3581

Visual verdict: no images; Leo tries the build

Follow-ups: none

@teamleaderleo
teamleaderleo merged commit 212fb00 into feat-cmux-next Nov 4, 2026
190 of 205 checks passed
@teamleaderleo
teamleaderleo deleted the lane/composer-ring-setting branch November 4, 2026 04:42
@lawrencecchen

Copy link
Copy Markdown
Contributor

Swift logic follow-up (tip watcher swift-logic row, STATUS 13027 "SWIFT LOGIC CULPRITS"; lead order).

This PR raised swift_logic_lines by +32 at its merge commit 212fb00: scripts/cmux-next/swift-logic-lines.py before and after the merge, with the same table (the tip's, c6be943). The largest declarations of the rise:

  • enum AgentPaneComposerSettingsSchema in Packages/macOS/CmuxNext/Sources/CmuxNextSettings/AgentPaneComposerSetting.swift: +15 lines counted as Swift logic (its row counts it as logic)
  • struct AgentPaneComposerSetting in Packages/macOS/CmuxNext/Sources/CmuxNextSettings/AgentPaneComposerSetting.swift: +11 lines counted as Swift logic (its row counts it as logic)
  • enum AgentPaneComposerRing in Packages/macOS/CmuxNext/Sources/CmuxNextSettings/AgentPaneComposerSetting.swift: +6 lines counted as Swift logic (no row in plans/cmux-next/swift-logic-classes.tsv)

plans/cmux-next/layer-ownership.md says Rust owns every state, list and rule and Swift is the platform shell. Please move the new logic of this PR in a follow-up: to Rust (the crate that owns the area; the owner lists in STATUS 12147-12165 name the target per area), or at least out of the app into its package. If a declaration above is platform code (AppKit, Core Animation, OS calls, strings, tokens, DEBUG tooling), reply here and the table gets a PLATFORM row with your reason instead.

The swift-logic row is a report, not a gate: nothing blocks on this comment.

This branch was previously deployed

1 inactive deployment
ci-routing-agent — fea3581f Deployed Nov 4, 2026 by teamleaderleo via wait for same-key tree publisher #109202
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants