feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(usage): add subscription allowance reporting - #6357

Closed
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats
Closed

feat(usage): add subscription allowance reporting#6357
naveed949 wants to merge 45 commits into
pingdotgg:mainfrom
naveed949:usage/add-subs-stats

Conversation

@naveed949

@naveed949naveed949 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

What Changed

Adds a Subscription view to Settings → Usage for current provider-reported allowance data, while keeping the existing Historical usage view independent.

  • Adds snapshot-first, live-updating subscription allowance reporting for Codex and Claude.
  • Adds additive RPC contracts, server lifecycle handling, refresh, staleness, compatibility, and privacy-safe provider identity behavior.
  • Adds a shared web/mobile projection that keeps provider sources inspectable and never blends allowance windows across environments.
  • Adds Subscription UI, manual refresh, and mobile pull-to-refresh alongside unchanged Historical controls.
  • Documents user behavior, implementation boundaries, and release evidence requirements.
  • Adds focused contract, provider-reader, server, runtime, web, and mobile tests.

Why

Historical usage is transcript-derived activity and API-equivalent cost; it does not show the current limits of a user’s Codex or Claude subscription. This adds a separate, provider-native allowance view without inferring quotas, account status, or billing information that a provider did not report.

UI Changes

Before/after screenshots for web and mobile still need to be attached before review. A short recording should also be included if refresh or live-update behavior is demonstrated.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Model and harness: verify and fill from the implementation run before review.

Note

Add subscription allowance reporting for Claude and Codex providers

  • Adds a new 'Subscription' usage view on web and mobile, showing per-provider allowance cards, progress bars, and metadata
  • Implements backend SubscriptionAllowanceService to read, fold, and stream allowance snapshots with periodic refresh and live updates
  • Introduces allowance readers for Claude and Codex providers to map native rate-limit data into a common SubscriptionAllowance shape
  • Adds serverRefreshSubscriptionAllowance and subscribeSubscriptionAllowance WS RPC endpoints backed by AuthOrchestrationReadScope
  • Behavioral Change: createEnvironmentRpcSubscriptionAtomFamily accepts failOnMethodNotFound; the new subscription stream terminates on older backends lacking the method

Macroscope summarized 40853ac.


Note

High Risk
Touches provider drivers, runtime event tagging, new WS RPCs, and orchestration-read authorization. Incorrect folding or event-source checks could leak stale/wrong quota data or skip live updates.

Overview
Adds a Subscription tab on Usage (web and mobile, default view) that shows current Codex/Claude rate limits, resets, credits, and spend/extra-usage fields—without mixing them into transcript-based Historical usage.

Server: new SubscriptionAllowanceService demand-scopes reads, 5-minute refresh, reset-based staleness, and folds sparse account.rate-limits.updated events into the last complete snapshot. Claude/Codex drivers gain allowance readers (SDK get_usage / Codex account/rateLimits/read) with timeouts. New RPCs subscribeSubscriptionAllowance and server.refreshSubscriptionAllowance require orchestration:read. Codex rate-limit notifications now emit only validated rateLimits payloads; runtime events carry an internal adapter source so replaced instances cannot fold updates.

Clients: shared reconcileSubscriptionAllowances keeps environments/instances separate, groups only verified identities, and never blends windows. UI cards show progress, notices, and sources; switching away from Subscription unmounts the stream.

Reviewed by Cursor Bugbot for commit 40853ac. Bugbot is set up for automated code reviews on this repo. Configure here.

Group only exact provider identities, retain source provenance, and expose connection-aware allowance projections to the web view.
Implemented by GPT-5 Codex.
Default Usage to Subscription, keep disconnected sources from appearing current, and document user, maintainer, and release evidence boundaries.
# Conflicts:
#	apps/mobile/src/features/usage/UsageRouteScreen.tsx
#	apps/web/src/components/usage/UsagePage.tsx
#	docs/README.md
#	docs/user/usage.md
@coderabbitai

coderabbitaiBot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 92c669ec-4a0e-4bbf-9ac2-bae163641b8a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). labels Aug 12, 2026
@naveed949
naveed949 marked this pull request as ready for review August 12, 2026 18:37
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/mobile/src/features/usage/UsageRouteScreen.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the new Effect service code (SubscriptionAllowanceService, ProviderAllowanceReader, the Codex/Claude allowance readers) against the service conventions. The service definition/layer layout and namespace imports look fine; three findings on dependency acquisition and error modelling are below.

Posted via Macroscope — Effect Service Conventions

Comment threadapps/server/src/provider/Services/ProviderAllowanceReader.ts Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts Outdated
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
@macroscopeapp

macroscopeappBot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Skipped

Macroscope did not run approvability analysis for this PR. Macroscope could not determine whether this PR modifies its approvability configuration, so the PR was not approved automatically. A PR that may change the rules that govern approval is never approved automatically.

Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed the web usage surface for shared-primitive, Tailwind-ownership, and theming consistency. Five concrete issues in apps/web/src/components/usage/UsagePage.tsx, three of which break the build or the rendered UI.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/provider/Layers/CodexAllowanceReader.ts
Comment threadpackages/client-runtime/src/state/subscriptionAllowance.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the new web Usage surfaces. Two findings on apps/web/src/components/usage/UsagePage.tsx; the issues flagged on the previous revision (duplicate Button import, missing PROVIDER_LABEL/PROVIDER_COLOR, bare text-amber-600, mismatched refresh control, topbar header classes) are resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
# Conflicts:
#	apps/web/src/components/usage/UsagePage.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Two consistency findings on the new Subscription view in apps/web/src/components/usage/UsagePage.tsx. The previously raised points about the hand-rolled UsageViewTabs segmented control and the duplicated page frame are unchanged and still stand; they are not repeated inline here.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

One finding: the new Usage view switch is a raw-button reconstruction of the app's segmented ToggleGroup, which the same page already uses for the metric and period switches.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts Outdated
Comment threadapps/server/src/usage/SubscriptionAllowanceService.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

UI consistency review of the changed web usage surface (apps/web/src/components/usage/UsagePage.tsx). The Subscription/Historical switch now goes through ToggleGroup variant="segmented", the card/notice surfaces match the page's existing square border border-border idiom, and the stale label uses the warning-foreground token, so those are consistent. Two issues remain on changed lines, both in the new Subscription view.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated
Comment threadapps/web/src/components/usage/UsagePage.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit f8723f3. Configure here.

Comment threadapps/web/src/state/subscriptionAllowance.ts Outdated
@t3dotgg

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

Closing this PR after an automated pass over open pull requests. Competes with Theo's existing provider-limit proposal in #5739.

@t3dotggt3dotgg closed this Aug 23, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL1,000+ changed lines (additions + deletions).vouch:unvouchedPR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@naveed949@t3dotgg