Add optional colors for menu bar quota pace - #3429
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 SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex review: needs maintainer review before merge. Reviewed September 10, 2026, 9:20 PM ET / September 11, 2026, 01:20 UTC (Revision 7). ClawSweeper reviewWhat this changesAdds an off-by-default preference that colors menu bar pace percentages, with persistence, preview support, translations, documentation, and native rendering regression coverage. Merge readiness✅ Ready for maintainer review This remains useful, maintainer-approved work that is absent from main and v0.58.0. The earlier color-loss finding is resolved, native proof demonstrates the result, and no blocking defect remains. Priority: P3 Review scores
Verification
How this fits togetherCodexBar turns provider quota snapshots into signed pace values for configurable menu bar layouts. The renderer combines those values with display preferences and sends attributed text or template images to the native status item. flowchart LR
A[Provider quota snapshots] --> B[Signed pace values]
B --> D[Menu bar layout renderer]
C[Saved color preference] --> D
D --> E{Colored text present}
E -->|Yes| F[Native attributed text]
E -->|No| G[Monochrome template image]
F --> H[Menu bar status item]
G --> H
Before mergeNone. Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep the accepted opt-in presentation preference, preserve signed values and existing layouts, and retain native attributed rendering wherever colors are present. Do we have a high-confidence way to reproduce the issue? Not applicable to the feature request; the earlier patch defect is resolved in source and demonstrated by native before/after captures. Is this the best way to solve the issue? Yes. Reusing existing pace tokens and rounded numeric values avoids a competing token model, and the accepted default-off preference preserves existing settings. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 9f4f544a5bf8. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (6 earlier review cycles)
|
|
@clawsweeper re-review Moved the toggle into Menu Bar → Icon and renamed it “Color Pace Indicator”. Its description is now “Green pace indicator when behind pace, red when ahead of pace (risk of running out early)”. Rendering and preference persistence are unchanged. The PR body now includes the author’s real Settings screenshot showing the red +17% preview, explicitly labeled as captured before this placement/wording revision. The revised debug app has been rebuilt and restarted locally. Validation at 89cd010: all 1,060 test selections across 89 groups passed on the first attempt, with no retries or timeouts. Swift formatting/lint for the changed UI file and locale validation pass. The previously documented ambient TypeScript dependency issue in the local environment remains unchanged. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Add the off-by-default Color Pace Indicator preference for Session, Weekly and Auto pace layout tokens, retaining signed values, zero/unavailable neutrality, and existing layouts. Preserve colored status-item text by rejecting template conversion for differing foreground colors. Keep high-contrast precedence over stale alpha. Cover final button transitions, conditional branches, layout variants and upgraded preferences, with isolated signed native before/after proof. Closes steipete#3428 Co-authored-by: Jon Brown <jb@9seeds.com>
89cd010 to
4b59bae
Compare
|
Accepting the narrow, off-by-default Color Pace Indicator preference under Menu Bar → Icon. The maintainer pass fixes final template-output color loss and stale/high-contrast precedence, preserves existing layouts, and adds consumer/upgrade regressions. Signed native proof now covers the actual status item and updated Settings control; inspected before/after images and validation details are in the PR body. Landing remains gated on the full suite and exact-head CI. |
|
Merged as fe7a45f. The off-by-default Color Pace Indicator preference is under Menu Bar → Icon and applies to the three existing layout pace tokens. Existing layouts and legacy display modes remain intact. The maintainer pass fixed two rendering defects: template images stripped colors from icon-free layouts, and stale alpha overrode high-contrast precedence. Colored text now uses the existing native title path, while neutral text keeps template caching. The preference tests also use isolated stores. Validation passed: 118 focused tests, all 1,066 full-suite selections with no retries/timeouts, lint, independent P0–P2 review, every Linux/musl/macOS CI check, and 16 signed synthetic native cases on the actual status item. Inspected before/after captures are in the PR body; the merged tree matches the reviewed source. Docs and the Unreleased changelog are updated. Thanks @jb510! |
Adds the off-by-default Color Pace Indicator preference under Menu Bar → Icon. Session, Weekly and Auto pace tokens use green for reserve and red for usage ahead of pace, while retaining signed percentages. Zero and unavailable values stay neutral; the setting leaves existing layouts and legacy display modes intact. Labels cover all supported locales.
Maintainer decision: adopt this narrow opt-in preference. The UI and docs identify the layout tokens it affects.
The maintainer pass repairs the final status-item output: explicitly colored text now keeps native attributed rendering instead of being converted into a monochrome template image. Neutral text retains the template cache. It also preserves high-contrast precedence when a snapshot is stale, and replaces partial production-default stores in the preference tests with isolated stores.
Validation:
make checkpasses with zero SwiftLint violations across 2,177 files. Independent P0–P2 review is clean.4b59bae990003c857c67763d3025d096b7463324. Fullmake testpassed all 1,066 selections across 89 groups on the first attempt, with no retries or timeouts (868.9 seconds). Exact-head CI passed all Linux x64, Linux ARM64, musl and macOS checks. Merged asfe7a45ffab530e6b850800fd4a01ef1972709b0d.Docs and the Unreleased changelog are updated. Thanks @jb510!
Closes #3428
Inspected synthetic native before/after evidence
The setting is enabled in both status-item captures:
Switching colors off restores monochrome:
Stale values dim:
High contrast takes precedence over stale dimming:
Dark appearance:
Dark appearance with stale and high contrast: