Add DeepSeek and OpenRouter widgets - #3743
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. Reviewed September 19, 2026, 7:52 PM ET / 23:52 UTC (Revision 9). ClawSweeper reviewWhat this changesAdds DeepSeek and OpenRouter widget choices and balance displays, suppresses DeepSeek’s artificial quota bar, and keeps update ages visible on small widgets. Merge readiness⛔ Blocked before merge - 3 items remain This remains useful work absent from main and the latest release. No blocking code defect was found, but the elapsed-time evidence predates the final freshness implementation and needs updating. Priority: P2 Review scores
Verification
How this fits togetherCodexBar writes provider usage into a shared JSON snapshot that its macOS widgets read. This change carries existing balance values through that pipeline into widget choices and displays. flowchart LR
A[Provider usage] --> B[App snapshot projection]
B --> C[Shared JSON snapshot]
C --> D[Widget provider selection]
D --> E[Quota or balance display]
C --> F[Native update age]
Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep the additive balance projection and existing native date rendering, with legacy snapshots and existing widget selections preserved. Do we have a high-confidence way to reproduce the issue? Not applicable to the provider-support feature; source confirms both providers are excluded from the existing picker. Final-head elapsed-time behavior was not executed during this read-only review. Is this the best way to solve the issue? Yes: reusing the existing balance formatter and adding an optional snapshot field is a bounded extension of the current widget pipeline. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against fd2414d29576. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (8 earlier review cycles)
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
@clawsweeper re-review |
|
Cross-link: #3748 also makes OpenRouter widget-selectable, but for Activity spend ( |
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Elapsed-time native proof is now attached in the PR body: the installed widgets visibly advance from @clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Full local suite and GitHub CI are now green:
The PR description now includes these receipts alongside the native elapsed-time proof. @clawsweeper re-review |
Preserve account widget support, document balance-only behavior, and cover capped and uncapped OpenRouter rendering.
Installed WidgetKit proof showed custom TimelineView strings freezing while the app was stopped. Retain native relative date text and keep it visible on small widgets.
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Add DeepSeek and OpenRouter widgets This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
DeepSeek and OpenRouter are now selectable in configurable widgets. Their credit balances use the existing menu-bar formatting; DeepSeek has no invented quota bar, while OpenRouter retains a real configured key limit alongside its balance. The optional snapshot field keeps older widget snapshots readable.
Small widgets now show their update age consistently. The age uses WidgetKit's native relative-date text: installed testing found that formatting a string inside
TimelineView(.everyMinute)could freeze between reloads, so that implementation was replaced.Validation
make checkand independent P0–P2 review passed.make test: all 1,245 selections across 114 groups passed, with no failures, retries, or timeouts.3c9d9ea57f0b63200449cc1e53db19896652e469. A lint-tool download hit a connection reset before lint ran; rerunning the failed jobs passed.All screenshots use synthetic data. The test widget was removed, original preferences/snapshot/registrations restored, and the installed app relaunched after verification.
Provider picker before and after
Balance and quota states
DeepSeek and elapsed-time proof
Thanks @brzvsk for the provider widget support.