Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (6)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe change adds direct Antigravity usage fetching through the Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to This change switches Antigravity usage reporting from mirroring Gemini quota data to reading native quota data directly from the 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description explains the implementation, behavior, motivation, and validation, but it omits most required template sections. It does not include an issue link, visual proof or an explicit N/A explanation, testing checkboxes and platform details, AI disclosure, review section, boundary confirmation, notes, or the checklist. Resolution Update the description to use the repository template. Add a valid
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: e3792a05-6083-42e2-923f-e91208f7bad9
📒 Files selected for processing (20)
src/main/rate-limits/antigravity-usage-fetcher.test.tssrc/main/rate-limits/antigravity-usage-fetcher.tssrc/main/rate-limits/antigravity-usage-mirror.test.tssrc/main/rate-limits/antigravity-usage-mirror.tssrc/main/rate-limits/service-antigravity-usage.test.tssrc/main/rate-limits/service/service-full-cycle-application.tssrc/main/rate-limits/service/service-full-cycle-preparation.tssrc/renderer/src/components/status-bar/StatusBarProviderSegment.test.tsxsrc/renderer/src/components/status-bar/StatusBarProviderSegment.tsxsrc/renderer/src/components/status-bar/UsageRosterPanel.test.tsxsrc/renderer/src/components/status-bar/UsageRosterPanel.tsxsrc/renderer/src/components/status-bar/antigravity-compact-metrics.tsxsrc/renderer/src/components/status-bar/antigravity-usage-format.tssrc/renderer/src/components/status-bar/status-bar-provider-visibility.test.tssrc/renderer/src/components/status-bar/status-bar-provider-visibility.tssrc/renderer/src/components/status-bar/tooltip.test.tssrc/renderer/src/components/status-bar/tooltip.tsxsrc/renderer/src/components/status-bar/usage-section-selection.tssrc/renderer/src/components/status-bar/use-status-bar-controller.tssrc/shared/rate-limit-types.ts
💤 Files with no reviewable changes (2)
- src/main/rate-limits/antigravity-usage-mirror.ts
- src/main/rate-limits/antigravity-usage-mirror.test.ts
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.
There was a problem hiding this comment.
ℹ️ No critical issues — one real defect in the timeout classification, and the test that should catch it asserts a shape production never produces.
Reviewed changes
- Native Antigravity fetcher — new
fetchAntigravityRateLimitsshells out toagy --print /usage --output-format jsonviaexecFileCaptureToTermination(fixed argv, no shell, AbortSignal, 10s deadline, 1 MiB cap), parses provider groups/buckets, and classifies failures. - Mirror removed —
antigravity-usage-mirror.tsand its tests are deleted; Antigravity becomes its ownPromise.allSettledslot, applied throughapplyStalePolicyso buckets participate in stale retention. - Visibility decoupled from Gemini —
status-bar-provider-visibility.tsnow treatsantigravityUsageConfigured(checked status item + detectedagyCLI) as the durable signal, no longer requiring the Gemini OAuth opt-in. - Renderer — grouped verbose/compact Antigravity rendering, per-group tightest-window selection (session-first ties), native
5h/wk/source-window labels, and a sharedusage-section-selectionhelper. - Shared types — optional
RateLimitWindow.windowLabelandRateLimitBucket.id/groupName/groupDescription(additive, wire-safe).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
3ac7723 to
03bce76
Compare
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Timeout classification fixed —
classifyAgyFailurenow also matcheskilled === true/signal === 'SIGTERM', so a real deadline kill fromexecFileCaptureToTerminationreaches the timeout-specific copy instead of the generic read-failure message. The regression test now rejects with the production shape ({ code: null, killed: true, signal: 'SIGTERM' }), matching the establishedgit-username.ts#isExecTimeoutErrorpredicate. Cancellation stays distinct: aborts are rethrown before classification. - Bucket sorting extracted and applied uniformly —
UsageRosterPanelverbose rendering and thetooltip.tsxprovider flyout now route Antigravity groups throughsortAntigravityBucketsinstead of ad-hoc.sort((a, b) => windowMinutes - …), so unknown windows (windowMinutes <= 0, e.g. a futuredailywindow) render after known 5h/weekly windows, with duration-ascending then name tie-breaks. Non-Antigravity ordering is unchanged. - Coverage added — new tests assert the unknown-window-after-known ordering in
UsageRosterPaneldetailed mode, theSession < Weekly < dailyordering plus native labels in the provider flyout, and non-Antigravity ordering preservation.
Verified against runProcess / execFileCaptureToTermination that a deadline kill resolves timedOut: true with signal: 'SIGTERM' and code: null, so the new predicate is reachable. Focused tests pass (3 files, 71 tests).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

Summary
agy --print /usage --output-format jsoninstead of mirroring Gemini quota state.Behavior
% used/% left+ reset countdown.5h/wk; provider flyouts use localizedSession/Weekly.Implementation
execFileCaptureToTerminationthrough Orca's sharedrunProcess/resolveSpawnpath with fixed argv, no shell interpolation, AbortSignal handling, bounded output/deadline, and process-tree termination.Validation