Repository navigation
cmux NEXT composer: the usage ring can show your plan's 5-hour and weekly limits, picked from its right-click - #34775
Conversation
…ight-click; nothing reported is nothing Red: no plan usage popover, no composerRing setting, no ring right-click menu and no Plan limits rows in Session Info yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
… limits when picked from its right-click
Leo, 2026-11-04: "are we able to disable the context thing on the bottom
right? i want to be able to right click disable it" and "i guess we can
turn that into a 5h/weekly usage type thing instead as well for some
people ... e.g in their session info thing".
- The ring's right-click: Context Usage / Plan Usage (checked) and Hide
Usage Ring; the button row's right-click shows it again.
- agentPane.composerRing (context by default) rides the composer event and
is written with pane.setComposerRing {ring}.
- In plan mode the ring draws the window closest to its cap and its card is
the plan usage popover (PlanUsageCard.tsx), read only from acpmux's
usageLimits (Claude's rate_limit_event, Codex's account/rateLimits). With
nothing reported the ring stays on the context; never a 0%.
- Session Info's Usage lists Plan limits (web and native panel).
- Gallery agent-pane.plan-usage-card, experiment plan-usage-look with
claude-bars (shipped), codex-rows and compact.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
…hone Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
…format Review of 0e7112e: a disabled <button> gets no contextmenu in WebKit, so before the first usage report (or for a harness that never reports context) the ring's right-click (Context / Plan usage / Hide) never opened. The ring is now aria-disabled with an inert click, styled as before. Test: a right-click on an inert ring opens the three items; a click shows no card. Also formats the files the earlier commits left unformatted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
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. |
|
Review (subagent opus-5.5 medium): SHIP at 8698767 Visual verdict: unchanged by this diff for the inert ring. The new Checked:
Follow-ups:
Gallery coverage ( |
…sage-ring-web # Conflicts: # webviews/src/agent-session/acpmux/Localizable.xcstrings
|
780c6e6 only merges feat-cmux-next (540d12f) to clear a conflict in |
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (next-review patch-id; carried, since=20261104T044117Z): SHIP at 780c6e6
The independent SHIP at 8698767 carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (d8aa3ac2d3d3f476) at both heads, and no merge between them was resolved by hand. A base merge's conflicts in webviews/src/agent-session/acpmux/Localizable.xcstrings were resolved by keeping both sides whole, and the PR's own lines there are the same at both heads; the patch-id leaves those files out. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.
|
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)
Stale: these images are of Gallery before/after for
States
Pick other states with a Passes: CI passes on CI passes on Written by Shipped in:
|
…kens Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
|
Review (subagent opus-5.5 medium): SHIP at 21fe2ad The delta since 780c6e6 fixes two of this PR's own lint reds. It drops a fixed wait in the new test: Follow-ups: assert |
|
Found 6 test failures on Blacksmith runners: Failures
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
…sage-ring-web # Conflicts: # webviews/src/agent-session/acpmux/Localizable.xcstrings
|
Carry of the SHIP at 21fe2ad to d539e71. There are two changes since that head:
|
teamleaderleo
left a comment
There was a problem hiding this comment.
Review (gpt-6-astra): SHIP at d539e71
Review (codex gpt-6-astra high, router-review job 3b29331f6fd1f52e63698b983de33d3a): SHIP at d539e71
Visual verdict: no images; Leo tries the build
Source review completed; tests could not run because Bun and webview dependencies are unavailable.
-
[P2] [follow-up] [category:correctness] [finding:F1] [outcome:pending]
webviews/src/agent-session/acpmux/ComposerPickers.tsx:1622: Separate the selected popover mode from whether a plan fraction exists.planShownrequires a reported window, so selecting Plan Usage without windows opens the context card—or nothing when context is also unknown. The promised “No plan usage reported yet” state is unreachable from the ring, and valid credits-only reports are hidden. Keep the context arc fallback, but render the plan popover when Plan Usage is selected; add ring interaction coverage for missing limits and credits-only reports. -
[P2] [follow-up] [category:ux] [finding:F2] [outcome:pending]
webviews/src/agent-session/acpmux/PlanUsageCard.gallery.tsx:99: Supply after captures of the popover and right-click menu, including the narrow layout, so their rendered appearance can be checked against the references.
Follow-ups:
- Separate plan popover selection from ring fraction availability and test both fallback states.
- Capture and review the new gallery states.
Base's #34775 moved the empty ring from disabled to aria-disabled so its right-click menu still opens. bun test test/context-ring-gauge.test.tsx: 5 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df
* test(composer): the context ring reads as a gauge, never a spinner (red) Leo read the ring at 68% as a loading spinner. Pins a visible remaining-share track and flat arc ends at 25/68/95%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df * Composer: the context ring draws its remaining share as a visible track, never a spinner Experiment context-ring-look (gallery agent-pane.context-ring, variants gauge-25/68/95) compares track, arc (before), percent and fill-quiet; track ships. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df * Composer: format the context ring files; its looks table sits above ContextRing's doc Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df * Composer: the context ring's circles and caption take no -ring class composer-turn-cycle counts any [class*="-ring"] in the quiet row besides the context wrapper and button as a spinner; the new track/used/caption classes matched it. Renamed to acpmux-context-track/used/caption. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df * Composer ring test: the empty ring is aria-disabled, its click inert Base's #34775 moved the empty ring from disabled to aria-disabled so its right-click menu still opens. bun test test/context-ring-gauge.test.tsx: 5 pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-9435bc58cd1ad61a49df --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: cmux-bot[bot] <348531757+cmux-bot[bot]@users.noreply.github.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo, 2026-11-04: "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. see codex: [img] see claude: [img]"
References (Leo's screenshots):
The ring's name is the usage ring (in code
ContextRing). It is the circle at the end of the composer's quiet row.What changed
agentPane.composerRing = "planUsage"; the default stays"context"):usageLimits(Claude Code'srate_limit_event; Codex'saccount/rateLimits/updatedarrives with acpmux: a Codex chat's plan usage limits (5-hour, weekly, credits) are its usageLimits, as a Claude chat's #34714). Until a limit has been reported the ring stays on the context, and the popover says "No plan usage reported yet". It never shows a made-up 0%.composerRingfrom the host'scomposervalue and writes it withpane.setComposerRing {ring}. The Swift side (schema descriptor, palette, CLI and MCP through the settings schema, and the request decoding) is cmux NEXT settings: agentPane.composerRing chooses context or plan usage for the composer ring #34732.cmux-next-ios/verify/parity-mac.md, state "missing", with the reason.Variants (gallery
agent-pane.plan-usage-card, experimentplan-usage-look)claude-bars(shipped): Claude desktop's card. Each window's name, reset time and percent sit on one line with an accent bar under it, and See all → is at the top. A share reads at a glance, and the layout holds two or three windows plus credits without growing wide.codex-rows: Codex's popover. It shows "Usage source: Your Pro plan" and the share left for each window, with no bars. It has no title when the harness names no plan (Claude never does).compact: one line per window with a short inline bar and the reset time underneath. It is denser, but the bar is too short to read.Other states in the gallery:
claude-bars-near-cap(three windows, one at 96%),none-reported,ring-plan-hoverandring-menu(the right-click).Tests
webviews/test/plan-usage-ring.test.tsxcovers:pane.setComposerRingandpane.showContextUsage;Red: 82cd522 (the test alone; the modules it imports don't exist). Green: the head,
bun test test/plan-usage-ring.test.tsx8 pass.Observed / Not run
bun test test/plan-usage-ring.test.tsx(8 pass). Also run, with 58 pass and 0 fail:ContextCard.test.tsx,hideable-chrome.test.tsx,session-info-usage.test.tsx,HarnessStatusCard.dom.test.tsxandnative/overlays.test.tsx.bun run check(type check and lint) and the gallery run. Both go to the fleet on this PR, and the results will be posted as a comment.Changelog
Agent session: agent session
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
The composer's usage ring at the end of the quiet row can now show your plan's 5-hour and weekly usage limits instead of the chat's context, switched from its new right-click menu, which also hides the ring.
aria-disabledwith an inert click, since WebKit gives a disabled button nocontextmenu.agentPane.composerRingsetting (default "context") is written throughpane.setComposerRing; the popover layout is theplan-usage-lookexperiment withclaude-barsshipped, pluscodex-rowsandcompactalternatives.Written for commit d539e71. Summary will update on new commits.