Skip to content

Add an all-time range to the spend dashboard - #3009

Merged
steipete merged 7 commits into
steipete:mainfrom
Yuxin-Qiao:feat/spend-dashboard-all-time-range
Aug 17, 2026
Merged

Add an all-time range to the spend dashboard#3009
steipete merged 7 commits into
steipete:mainfrom
Yuxin-Qiao:feat/spend-dashboard-all-time-range

Conversation

@Yuxin-Qiao

@Yuxin-Qiao Yuxin-Qiao commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add 7d / 30d / All ranges to the Usage & Spend dashboard.
  • All uses up to 365 days of local history.
  • Mark partial token totals with ~ on the dashboard and Share Stats card when a peer is unknown.

Note

  • Privacy-sensitive screenshots were removed from this PR description.

Yuxin-Qiao and others added 3 commits August 17, 2026 13:38
A nil cost on one subscription no longer wipes the currency group header.

Co-authored-by: Cursor <cursoragent@cursor.com>
Named models with tokens but no price stay visible as a partial list instead of wiping the whole breakdown.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep 7-day and 30-day windows, and scan local Codex history out to 365 days so cumulative spend is not truncated at a month.

Co-authored-by: Cursor <cursoragent@cursor.com>
@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0b0279c6eb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

static let scanDays = 30
static let activityDays = 365
/// Local spend scan window. Matches token-activity depth so 7d / 30d / All share one snapshot.
static let scanDays = activityDays

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Load the all-time window for non-Codex providers

When the user keeps the default costUsageHistoryDays of 30 and selects All, only Codex is loaded with scanDays; every non-Codex refresh still builds its snapshot using settings.costUsageHistoryDays, and selectDays merely rebuilds the existing inputs. Consequently providers capable of returning older history remain truncated to 30 days in the new 365-day view. The dashboard request needs to fetch the all-time horizon for those providers as well, or the option must not present their result as All.

Useful? React with 👍 / 👎.

Comment on lines 318 to +320
static func combinedTotalTokens(_ values: [Int?]) -> Int? {
let known = values.compactMap(\.self)
guard !known.isEmpty else { return nil }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve partial status for shared token totals

When any currency group has unavailable token data, compacting away its nil total produces a lower-bound totalTokens, but ShareStatsPayload carries no corresponding partial flag and the share card renders this number without the dashboard's ~ marker. For example, one valid group plus one unavailable group is shared as an exact tracked-token total. Either retain the previous nil result or propagate partial-token metadata through the payload and card.

Useful? React with 👍 / 👎.

@Yuxin-Qiao

Yuxin-Qiao commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

After-fix proof

Share Stats renderer on 0b0279c6e (same SwiftUI card the app copies):

  • Partial USD is ~$4.00 because Cursor is spend unavailable
  • Claude stays ~£12.00; currencies stay separate
  • Copied text includes USD: $4.00 estimated (partial)

All-time window is covered by tests (SpendDashboardSource.scanDays == 365). Native 7d/30d/All clicks still need a human glance.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Aug 17, 2026
@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codex review: needs changes before merge. Reviewed August 17, 2026, 9:22 AM ET / 13:22 UTC.

ClawSweeper review

What this changes

Adds a 7-day, 30-day, and 365-day All range to the Usage & Spend dashboard, with partial-total labeling in the dashboard and Share Stats.

Merge readiness

⚠️ Needs maintainer review before merge - 3 items remain

Keep open: the native screenshots now prove the visible 7d/30d/All control, but two snapshot-freshness paths can still show a 30-day or stale result for providers using the new independent 365-day snapshot.

Priority: P2
Reviewed head: e776d1b78652196a9160569320dab2fab62f95b0

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) The visible feature has strong native proof, but two P2 snapshot-lifecycle defects prevent a merge-ready rating.
Proof confidence 🦞 diamond lobster (5/6) ✨ media proof bonus Sufficient (screenshot): Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
Patch quality 🦐 gold shrimp (3/6) 2 actionable review findings remain.

Verification

Check Result Evidence
Real behavior Verified Sufficient (screenshot): Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
Evidence reviewed 6 items Fresh all-time snapshot can be skipped: For independent dashboard providers, a normal menu publication is returned as a fallback when the 365-day publication is absent. That makes refreshMissing consider the source loaded, so opening the dashboard can retain the 30-day input instead of fetching All history.
Existing all-time snapshot is never refreshed automatically: refreshMissing only refreshes when no publication exists; after a 365-day snapshot is present, ordinary pane opens and activation-triggered date refreshes retain it while regular background refreshes update only the menu snapshot.
Current tests cover forced All fetches, not ordinary freshness: The added Claude/Cursor test invokes forceRefresh, so it does not exercise opening the pane with only a regular snapshot or reopening after a retained dashboard snapshot.
Findings 2 actionable findings [P2] Require a real 365-day snapshot before treating All as loaded
[P2] Refresh retained all-time snapshots outside manual refresh
Security None None.

How this fits together

CodexBar collects provider usage into local cost snapshots, then projects those snapshots into the Settings Usage & Spend dashboard and Share Stats. This change introduces a separate 365-day snapshot for the dashboard while keeping the menu bar on its configured cost-history window.

flowchart LR
    A[Provider usage history] --> B[Menu and dashboard snapshots]
    B --> C[7d 30d or All selection]
    C --> D[Spend aggregation]
    D --> E[Settings Usage and Spend]
    D --> F[Share Stats]
Loading

Before merge

  • Require a real 365-day snapshot before treating All as loaded (P2) - When only the regular menu publication exists, this fallback makes .refreshMissing skip the independent 365-day fetch and the dashboard renders that 30-day snapshot as All. Return no dashboard publication here, or otherwise make the load check distinguish the two scopes, and add the normal-open regression case.
  • Refresh retained all-time snapshots outside manual refresh (P2) - Once an independent snapshot exists, .refreshMissing skips this refresh forever; ordinary pane opens and activation call that mode, while background refresh updates only the menu snapshot. New usage therefore does not reach the dashboard until the user presses Refresh. Apply a bounded age/revision policy and cover the retained-snapshot path.
  • Resolve merge risk (P1) - Claude, Cursor, Bedrock, and Vertex users can see a newly added All range populated from a regular 30-day snapshot on first open, or stale 365-day data after later usage refreshes, until they manually press Refresh.

Findings

  • [P2] Require a real 365-day snapshot before treating All as loaded — Sources/CodexBar/SpendDashboardController.swift:616-618
  • [P2] Refresh retained all-time snapshots outside manual refresh — Sources/CodexBar/SpendDashboardController.swift:194-200
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Patch scope 52 files, +1,297 / -161 lines The all-range feature spans UI, snapshot ownership, provider projection, localization, proof assets, and tests, so the freshness boundary needs focused review.

Merge-risk options

Maintainer options:

  1. Repair independent snapshot freshness (recommended)
    Fetch the 365-day snapshot when it is absent and refresh it when stale, with regression coverage for normal dashboard opens and post-background-refresh data.

Technical review

Best possible solution:

Treat a missing independent 365-day publication as missing even when a menu snapshot exists, then refresh retained dashboard snapshots with a bounded freshness policy that does not alter the menu snapshot or its configured window.

Do we have a high-confidence way to reproduce the issue?

Yes—source provides a high-confidence path: open the dashboard with a normal 30-day Claude/Cursor publication but no independent publication, then reopen after the independent snapshot exists and new usage is fetched normally.

Is this the best way to solve the issue?

No—the range UI and proof are sound, but the separate dashboard cache needs missing-snapshot and retained-snapshot refresh handling before it accurately represents All history.

Full review comments:

  • [P2] Require a real 365-day snapshot before treating All as loaded — Sources/CodexBar/SpendDashboardController.swift:616-618
    When only the regular menu publication exists, this fallback makes .refreshMissing skip the independent 365-day fetch and the dashboard renders that 30-day snapshot as All. Return no dashboard publication here, or otherwise make the load check distinguish the two scopes, and add the normal-open regression case.
    Confidence: 0.98
  • [P2] Refresh retained all-time snapshots outside manual refresh — Sources/CodexBar/SpendDashboardController.swift:194-200
    Once an independent snapshot exists, .refreshMissing skips this refresh forever; ordinary pane opens and activation call that mode, while background refresh updates only the menu snapshot. New usage therefore does not reach the dashboard until the user presses Refresh. Apply a bounded age/revision policy and cover the retained-snapshot path.
    Confidence: 0.96

Overall correctness: patch is incorrect
Overall confidence: 0.96

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 14e300389e9e.

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • add status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
  • remove status: 📣 needs proof: Current PR status label is status: ⏳ waiting on author.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🦐 gold shrimp, so this older rating label is no longer current.

Label justifications:

  • P2: The feature can present incomplete or stale spend estimates but remains recoverable through the existing Refresh action.
  • merge-risk: 🚨 compatibility: The new independent snapshot layer can silently replace a current dashboard result with a 30-day or stale history for existing provider setups.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (screenshot): Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
  • proof: sufficient: Contributor real behavior proof is sufficient. Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Prepared native Settings screenshots directly show the 7d, 30d, and All controls and the observed 365/365 All result; redact account details in any replacement proof after the freshness repair.

Evidence

Acceptance criteria:

  • [P1] swift test --filter SpendDashboardAllTimeTokenSnapshotTests.
  • [P1] swift test --filter SpendDashboardControllerTests.
  • [P1] make test.
  • [P1] make check.

What I checked:

Likely related people:

  • Chipagosfinest: Authored the merged unified Usage & Spend dashboard that established this controller and settings surface. (role: feature introducer; confidence: high; commits: 0397529ae6e5; files: Sources/CodexBar/SpendDashboardController.swift, Sources/CodexBar/PreferencesSpendDashboardPane.swift)
  • steipete: Authored a subsequent spend-model correctness fix and has repeatedly maintained nearby dashboard behavior. (role: recent area contributor; confidence: medium; commits: 27a314f3a3a8, b52d309da032; files: Sources/CodexBar/SpendDashboardModel.swift, Sources/CodexBar/SpendDashboardController.swift)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Add regression tests for a regular-only snapshot and for a retained independent snapshot after normal usage refresh.
  • Repair the independent snapshot freshness policy, then refresh the native proof if the visible behavior changes.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (2 earlier review cycles)
  • reviewed 2026-08-17T08:57:06.920Z sha 0b0279c :: needs real behavior proof before merge. :: [P2] Load the All horizon for non-Codex providers | [P2] Preserve partial status for shared token totals
  • reviewed 2026-08-17T11:37:59.245Z sha ec998de :: needs real behavior proof before merge. :: [P2] Load the All horizon for provider-derived snapshots | [P2] Make copied Share Stats use the All label

Keep menu token publications on costUsageHistoryDays, and refresh a separate 365-day spend snapshot slot so All can include days outside Last 30 days.

Co-authored-by: Cursor <cursoragent@cursor.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6a90ad887

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +594 to +596
return (
store.tokenSnapshotPublicationForCurrentProviderConfig(for: provider),
revision)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Refresh when only the shorter menu snapshot exists

When a direct-cost provider such as Claude or Cursor already has its normal 30-day publication but no dashboard publication, this fallback makes refreshMissing treat the source as loaded, so the new 365-day fetch is skipped and selecting All silently reuses the 30-day data until the user manually refreshes. The fresh evidence beyond the earlier comment is that the new fallback returns the regular publication while pairing it with the dashboard revision; only a real dashboard publication should satisfy the initial-load check.

Useful? React with 👍 / 👎.

Comment on lines 195 to +198
if UsageStore.tokenCostRequiresProviderSnapshot(baseline.provider) {
await store.refreshProvider(baseline.provider)
} else {
await store.refreshTokenUsageNow(for: baseline.provider, force: true)
await store.refreshSpendDashboardTokenUsageNow(for: baseline.provider, force: true)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Fetch the All window for provider-derived snapshots

With the default 30-day cost-history setting, OpenAI API, Mistral, and OpenCodeGo enter the tokenCostRequiresProviderSnapshot branch, whose provider refresh still receives settings.costUsageHistoryDays; only the other branch invokes the new 365-day dashboard loader. As a result, even a manual dashboard refresh cannot populate older data for these providers and the All view remains a 30-day result. The fresh evidence beyond the earlier comment is that the new independent loader explicitly excludes these provider-derived snapshot sources, so this branch also needs an all-window fetch/projection.

Useful? React with 👍 / 👎.

Usage & Spend 30d vs All renders show MiniMax-M3 only in All, and the share card prefixes tracked tokens with ~ when a peer is unknown.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Yuxin-Qiao

Yuxin-Qiao commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

After-fix proof (All range + partial tokens)

Claude/Cursor now load a 365-day spend snapshot slot (menu bar still uses costUsageHistoryDays). Share Stats prefixes tracked tokens with ~ when a peer is unknown.

Same Usage & Spend section the app draws:

30d — MiniMax-M3 clipped, Cursor spend unavailable:

All — MiniMax-M3 $1.20, coverage 365/365:

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ec998ded0c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +382 to +384
var lines = ["My AI subscriptions · last \(payload.days) days"]
if let tokens = payload.totalTokens {
lines.append("\(self.compactCount(tokens)) tracked tokens")
let count = self.compactCount(tokens)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Label copied all-time stats as All

When the user selects the new All range, ShareStatsExporter.copyText calls this formatter with payload.days == 365, so the copied text still says last 365 days and uses /365 days coverage even though the image labels the same payload ALL and ALL-TIME. Format the period and coverage using the same all-time semantics as the card so the two share outputs describe the selected range consistently.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Aug 17, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
@Yuxin-Qiao

Yuxin-Qiao commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

Native Usage & Spend (this machine, QA bundle)

Opened Settings → 用量与支出 and clicked 7天 / 30天 / 全部. Codex catch-up finished (477/478). Claude stays spend unavailable on this head (bare-ID pricing is #3002).

7天 — Codex ~$127.36, coverage 7/7:

30天 — Codex ~$310.40, coverage 30/30, 1/2 subscriptions have spend, tracked tokens ~7.1B:

全部 — coverage 365 / 365, same priced Codex subtotal on this account, Claude still unavailable:

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞👀
Exact review queued.

Re-review progress:

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8683edd313

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

await store.refreshProvider(baseline.provider)
} else {
await store.refreshTokenUsageNow(for: baseline.provider, force: true)
await store.refreshSpendDashboardTokenUsageNow(for: baseline.provider, force: true)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Refresh retained all-time snapshots

After Claude, Cursor, Bedrock, or Vertex AI successfully creates an independent 365-day publication, every later ordinary load—including reopening the dashboard and date-window refreshes—skips this call because .refreshMissing sees that publication as present. This is the only caller of refreshSpendDashboardTokenUsageNow; background token refreshes update only the normal menu publication, while dashboard revisions track the independent publication. Consequently, newly recorded usage never appears in the dashboard until the user explicitly clicks Refresh or changes provider configuration; refresh independent snapshots using an age/revision policy or update them during background refreshes.

Useful? React with 👍 / 👎.

…end to the scan window.

Copied text was still saying last 365 days, and Mistral/OpenCode Go All totals were clipped to the menu history setting.

Co-authored-by: Cursor <cursoragent@cursor.com>
@Yuxin-Qiao

Copy link
Copy Markdown
Contributor Author

Follow-up for the remaining All-range review notes (e776d1b78):

  • Copied Share Stats All now uses all time and coverage N/all instead of last 365 days / /365 days.
  • Mistral / OpenCode Go All projects already-fetched daily rows through the 365-day scan window. Menu cost still uses costUsageHistoryDays. OpenAI still uses the days already on the API snapshot.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Aug 17, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

@clawsweeper clawsweeper Bot added proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Aug 17, 2026
@steipete
steipete merged commit c249610 into steipete:main Aug 17, 2026
9 checks passed
@clawsweeper

clawsweeper Bot commented Aug 18, 2026

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants