Skip to content

feat(mac,web,mobile): each fleet account's banked Claude resets show and redeem from Accounts - #1558

Merged
deathemperor merged 3 commits into
mainfrom
feat/fleet-claude-resets
Sep 23, 2026
Merged

deathemperor merged 3 commits into
mainfrom
feat/fleet-claude-resets

Conversation

@deathemperor

@deathemperor deathemperor commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Closes #1554.

Claude banks a few usage-limit resets per account, and #1555 could only read and spend them for the server's own Claude login. The fleet now carries them end to end.

  • swapd (feat: list reports banked limit resets, and reset spends one swapd#56): the usage request asks for the bank (cedar_ember=1) under Claude Code's own agent string, the store keeps it beside the windows, list reports resets per row judged at list time (left / total, the next grant's wording and expiry, the hold: notAtLimit, cooldown with until, blocked), and reset <ident> re-reads the bank as that slot, refuses a spent bank or a hold, and spends the next grant with the CLI's own claim. apps/mac/build-swapd.sh is bumped to its merge commit.
  • Mac: Account.resets (AccountResets, additive), EngineCapabilities.reset, SwapdCLI.reset / SwapdEngine.reset, and the reset <fleet> <n> control route, refused for a row without a bank or with a hold.
  • Contract / client-runtime: InfinitusAccount.resets; AccountRowModel.resets, the reset action (only with the capability and something left), resetHoldText / resetsSummary.
  • Web: a ticket count beside the plan opens the bank, the hold and Use reset, confirmed before the claim. Upstream's "Usage providers" hub section is no longer mounted (and its search entry is gone): the Accounts page reads every hub through the Mac app.
  • Phone: the row carries the same line; the menu offers Use a banked reset while nothing holds it, confirmed like Switch.

Verified: swapd cargo test / clippy / fmt; swift test (751 pass); contracts, client-runtime, server, desktop, web and mobile typecheck clean; infinitusAccounts.test.ts, accountsRoute.logic.test.ts, settingsSearch.test.ts, AccountsPage.test.tsx pass; fmt + lint per touched file. No reset claim was sent to the provider at any point.

Claude Fable 5.1 via Claude Code.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • View banked Claude resets and availability details on account rows across Mac, web, and mobile.
    • Spend an available reset for a specific account after confirmation. Resets are unavailable while an account is on hold.
  • Changes
    • Hub and fleet accounts are shown on the Accounts page; the separate Usage providers section is no longer available in Settings.
  • Documentation
    • Updated account and usage guides with reset details and information about viewing hub and fleet accounts.

deathemperor and others added 2 commits September 23, 2026 14:47
…and redeem from Accounts

Claude banks a few usage-limit resets per account, and #1555 could
only read and spend them for the server's own Claude login. The fleet
now carries them: swapd reads the bank beside the windows and spends
one with `reset <ident>` (deathemperor/swapd#56); the Mac passes
`resets` through per account, declares the `reset` capability and
answers `reset <fleet> <n>` on the control socket; the contract gains
`InfinitusAccount.resets`; the row model derives the count, the next
grant's wording and expiry, and what holds the next one.

On web the row shows a ticket count beside the plan that opens the
bank and a Use reset button, confirmed before the claim; on the phone
the row carries the same line and the menu offers the action while
nothing holds it. Upstream's "Usage providers" hub section is no
longer mounted: the Accounts page reads every hub through the Mac app.

Closes #1554.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@deathemperor
deathemperor enabled auto-merge (squash) September 23, 2026 07:49
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 effective changed lines (test files excluded in mixed PRs). labels Sep 23, 2026
@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@deathemperor
deathemperor merged commit 0d2d896 into main Sep 23, 2026
21 of 22 checks passed
@deathemperor
deathemperor deleted the feat/fleet-claude-resets branch September 23, 2026 08:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fleet-wide Claude resets: read and redeem every swapd account's banked resets

1 participant