Conversation
Adopt the accents upstream CodexBar 0.70.0 took from its palette audit (steipete#4075): Abacus, Amp, Augment, Bedrock, ClinePass, Codebuff, Command Code, Cursor, DeepSeek, Devin, Kiro, LongCat, Mistral, Neuralwatt, sub2api and Venice. The Rust brand_color table, the frontend PROVIDER_ICON_REGISTRY and the --chart-<id> tokens that mirror them move together. Tests pin the adopted accents, check upstream's contrast non-regression rule against the previous Windows accents on white and #222222, and keep the Rust table, the registry and the chart tokens in sync.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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 |
UI proof (browser-use)Result: PASS on build At the maintainer's direction, this proof drove the app's WebView2 over CDP with the browser-use CLI instead of CUA. It used no keyboard, mouse or focus. The proof windows stayed on the second display, and the kit settings turned the global shortcut off. Setup
Results
Validation at
|
| Command | Result |
|---|---|
cargo +1.98.0 fmt --all --check |
pass |
cargo +1.98.0 clippy --workspace --all-targets -- -D warnings |
pass |
cargo +1.98.0 test -p codexbar --lib core::provider::tests |
23 passed |
cargo +1.98.0 test -p codexbar |
2164 passed, 0 failed, 1 ignored |
cargo +1.98.0 test -p codexbar-desktop-tauri -- --skip bootstrap_payload_exposes_every_provider_variant |
461 passed, 0 failed. The skipped test is the non-hermetic #684 test, which #711 fixes. |
pnpm install --frozen-lockfile |
pass |
pnpm run check-locale |
879 keys match between Rust and TS |
pnpm test |
67 files, 405 tests passed |
pnpm run lint |
0 errors. The 15 warnings are all in files this PR doesn't touch. |
pnpm run build |
pass |
Screenshots
All paths are under C:\Users\FSOS\AppData\Local\Win-CodexBar\port-audit\proof\719\shots\. Disabled sidebar rows are dimmed, so their icons look darker in the captures than the computed colors in A2.
bu-01-settings-cursor-accent.png: Cursor selected. The orange icon, and the accent field showing#f54e00.bu-02-settings-kiro-accent-sidebar-kiro-augment-amp.png: Kiro's accent#9046ff, with the Kiro, Augment and Amp rows.bu-03-sidebar-abacus-mistral-bedrock-codebuff.png: Abacus AI, Mistral, AWS Bedrock, Codebuff and DeepSeek.bu-04-sidebar-deepseek.png,bu-05-sidebar-commandcode-venice.png: DeepSeek, Command Code and Venice.bu-06-sidebar-devin-sub2api.png,bu-07-sidebar-sub2api-clinepass-longcat-neuralwatt.png: Devin, sub2api, ClinePass, LongCat and Neuralwatt.bu-08-traypanel-cursor-weekly-track.png: the switcher's Cursor item with the orange weekly bar at 37%.bu-09-floatbar-cursor-pill-raw.png: the Cursor pill with the#f54e00border. The float bar window is transparent, so the capture is RGBA.bu-09-floatbar-cursor-pill-raw-on-dark.pngcomposites it onto#1c1c1eat 4x.
Not blocking (found on main, not caused by this PR)
- The reset-refresh timer in
useProvidersoverflows for resets more than about 24.8 days away.- The hook arms
window.setTimeout(refresh, nextReset - now + 1000). WebView2 stores the delay as a 32-bit signed integer. In run 2's page, a2280193515000ms timer (the 2099 reset) fired after 0 ms, while a 7-day control timer did not fire. - Real data hits this whenever the soonest reset across enabled providers is between about 24.9 and 49.7 days away. For example, a Cursor-only user early in a billing month. In that case the timer fires at once and calls the forced
refresh_providers. Each provider update then re-arms another overflowing timer. - The code dates from "Port upstream 0.38.0" (
3b39f595). It's tracked separately, and this PR doesn't change it.
- The hook arms
- ClinePass's glyph renders black. Its SVG path has no fill, so the glyph is
rgb(0, 0, 0)on the dark sidebar tile whatever the accent. The badge color is correct. - Kilo's glyph keeps a fixed dark fill (
rgb(26, 26, 24)).
Neither SVG changes in this PR.
Summary
Ports upstream v0.70.0 steipete#4075: the 16 provider accents that upstream's September 2026 palette audit adopted from official brand sources.
Windows keeps each provider's brand color in two tables: the Rust
brand_colortable and the frontendPROVIDER_ICON_REGISTRY. Both now carry the audited values. The seven provider chart tokens that mirrored the old accents move with them.docs/provider-palette.md. For example, Cursor changes from#00BFA5to#F54E00, and Kiro from#FF9900to#9046FF.--chart-amp,--chart-augment,--chart-codebuff,--chart-cursor,--chart-deepseek,--chart-kiroand--chart-mistralinstyles.cssequalled the old brand color, so they now equal the new one. The other nine providers have no chart token, as before.#222222, the new accent must reach 3:1 or lose less than 0.5 of contrast.Upstream reference
25bba9b7fd9ce83c33053958f7366e23b2dc8a82. The v0.70.0 release notes say: "Refreshed provider colors: 16 accents now match official brand sources, while colors that would hurt menu bar or widget readability keep their current values (Update provider branding color palettes steipete/CodexBar#4075)."v0.70.0sources:docs/provider-palette.md: the audit table with the old, proposed and final values and the contrast decision for each.Sources/CodexBar/ProviderAccentPalette.swiftTests/CodexBarTests/ProviderPaletteRegressionTests.swift: WCAG luminance, white and#222222surfaces, and the rule "at least 3:1, or a loss under 0.5".Ported / Deferred
brand_colorandPROVIDER_ICON_REGISTRY#222222.#44FF00, and#2768FFwith#2DC6D8) don't take the accent; the badge, bars and pills do.docs/provider.mdRetained upstream accents where Windows already differs:
#FF5C35#3184FF#13EF93#6467F2#2563EB#3370FF#F55036#F56844#5D87FF#F27027#0EA5E9#4C89F0#1FB8CD#20B2AA#2563EB#10B981#0EA5E9#2975DB#8B5CF6#F56647#6366F1#938BB4Deepgram and Groq already use the value that upstream proposed and then declined.
Validation
Run in the worker worktree on Rust 1.98.0 and Node 24 at
40c6c116:cargo +1.98.0 fmt --all --checkcargo +1.98.0 clippy --workspace --all-targets -- -D warningscargo +1.98.0 test -p codexbar --lib core::provider::testscargo +1.98.0 test -p codexbarcargo +1.98.0 test -p codexbar-desktop-tauri -- --skip bootstrap_payload_exposes_every_provider_variantpnpm install --frozen-lockfilepnpm run check-localepnpm testpnpm run lintpnpm run buildThe skipped desktop test is the non-hermetic #684 test, which #711 fixes.
Mutation check: changing Zed's color to
#084ccein one table only made the new Rust/TS sync test fail. The change was reverted.New tests:
core::provider::tests:contrast_ratio_matches_upstream_audit_valuesadopted_upstream_palette_accents_are_pinnedadopted_palette_accents_do_not_materially_regress_contrastbrand_colors_are_uppercase_hexproviderIcons.test.ts:Affected areas
rust/src/core/provider.rs: thebrand_colorvalues, its doc comment and the tests.apps/desktop-tauri/src/components/providers/providerIcons.ts: the registry values.apps/desktop-tauri/src/components/providers/providerIcons.test.ts: the sync tests.apps/desktop-tauri/src/styles.css: seven--chart-*tokens.UI proof
PASS on a fresh debug build of
40c6c116, driven over WebView2 CDP with the browser-use CLI. See the UI proof comment.#f54e00and Kiro#9046ff.#F54E00: paints the tray panel switcher's weekly bar and the float bar pill border.:roottokens carry the new values.