Skip to content

Adopt Mac 0.70.0 provider brand colors - #822

Open
Finesssee wants to merge 7 commits into
mainfrom
feat/mac-card-palette
Open

Finesssee wants to merge 7 commits into
mainfrom
feat/mac-card-palette

Conversation

@Finesssee

@Finesssee Finesssee commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Card PR 4 of the Mac-parity port. Provider brand colors on Windows now match Mac CodexBar 0.70.0 for tray-card bars, provider icons and chart series (spec tray-card-spec.md §4, §6.2 item 4, §7.5). Vercel keeps #737373 (user decision, 2026-10-10). --provider-accent is still always set on the card root (from #813).

The palette has three copies: Rust ProviderId::brand_color, TS PROVIDER_ICON_REGISTRY and the --chart-<id> tokens in styles.css. providerIcons.test.ts checks that they agree. This PR changes all three together, so no new source of truth was needed.

Color changes

Provider Old New (Mac 0.70.0)
Chutes #FF5C35 #3184FF
Deepgram #13EF93 #6467F2
Doubao #2563EB #3370FF
Grok #111827 #10A37F
Groq #F55036 #F56844
Helmcode #4F46E5 #4934E1
Kilo #5D87FF #F27027
LiteLLM #0EA5E9 #4C89F0
LLMProxy #4F46E5 #24B47E
Ollama #8B95B0 #888888
OpenAI API #10A37F #0F826E
OpenRouter #6B7280 #6467F2
Perplexity #1FB8CD #20B2AA
Poe #5D5FEF #5D5CDE
Qoder #2563EB #10B981
Sakana #0EA5E9 #2975DB
StepFun #999999 #2196F2
T3 Chat #8B5CF6 #F56647
TypeSafe #2563EB #111111
v0 #111827 #111111
Warp #6366F1 #938BB4
Wayfinder #14B8A6 #10A37F
Windsurf #22C55E #34E8BB
Zed #084CCF #084EFF
ElevenLabs bars #111827 bars use the label color (--mac-text); icon stays #111827
Vercel #737373 unchanged (#737373, Mac uses white)

Chart tokens: deepgram, grok, groq, llmproxy and windsurf follow the new colors. xAI used to share --chart-grok. Grok's token is no longer black, so xAI gets its own --chart-xai (#8E8E93).

MenuCard now takes its bar color from providerBarAccent(id, override). It returns the user's accent override if one is set, then the label color for label-styled providers (ElevenLabs), then the brand color.

Test changes and why

  • Rust provider.rs.
    • New MAC_PARITY_ACCENTS (id, old, new) table.
    • New mac_parity_accents_are_pinned test. It pins every new hex and also asserts that Vercel stays #737373.
  • Rust contrast guard. The existing rule is unchanged. An accent passes if it has at least 3:1 contrast, or if it loses less than 0.5 contrast against its previous accent, on #FFFFFF and #222222.
    • The new test mac_parity_accents_do_not_materially_regress_contrast applies this rule to all 24 changes.
    • Four are listed explicitly in MAC_PARITY_CONTRAST_EXEMPTIONS, because they are the exact Mac colors and the user chose Mac colors:
      • LLMProxy on white: 6.29 to 2.66.
      • Qoder on white: 5.17 to 2.54.
      • Windsurf on white: 2.28 to 1.57.
      • TypeSafe on #222222: 3.08 to 1.19.
    • The test asserts passes != exempt. An exemption that becomes unnecessary therefore also fails, so the list cannot grow silently.
    • These colors are used as bar fills and icon tints, not as body text, and no existing text-contrast test was changed.
    • One exception: providers without an SVG icon show a letter glyph colored with the brand color (.provider-icon--letter, styles.css). TypeSafe ("T") is one of them, so on dark surfaces its glyph drops from 3.08 to 1.19 against #222222. v0 ("V") was already near-black (#111827), so it was already in this state.
  • providerIcons.test.ts.
    • Added a check that the Mac parity list matches the registry.
    • Added a check that Vercel stays #737373.
    • Added an ElevenLabs label-bar test (the icon stays #111827).
    • Added a test that the override takes precedence.
    • The grok exception in the chart-token sync test is gone, because grok's token now matches its brand color. The token list adds deepgram, grok, groq, llmproxy, windsurf and xai.
  • chartPalette.test.ts. New test that xai and grok map to separate tokens.

Commands run

Command Result
cargo fmt --all clean
cargo test --manifest-path rust/Cargo.toml 3815 passed, 0 failed, 1 ignored (lib), plus the other targets green
cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings clean
cargo test --manifest-path apps/desktop-tauri/src-tauri/Cargo.toml 642 passed
cargo clippy --manifest-path apps/desktop-tauri/src-tauri/Cargo.toml --all-targets -- -D warnings clean
pnpm test (apps/desktop-tauri) 109 files, 879 tests passed
pnpm run build tsc and vite build OK

Proof

I built a local desktop exe twice, once from main (f54421c3b) and once from this branch, and captured the tray panel for 18 synthetic-data packs with each: Claude, Codex, OpenRouter, Copilot, Cursor, Vercel, Gemini, Kilo, Qoder, Chutes, T3Chat, ElevenLabs, Grok, Windsurf, Deepgram, LLMProxy, TypeSafe and StepFun.

For each pack, a side-by-side sheet shows Mac 0.70.0, Windows main and this PR. I counted pixels near the old and new hex in each Windows panel (old px / new px):

  • The six unchanged providers render identically: Claude, Codex, Copilot, Cursor, Gemini and Vercel.
  • Every changed provider moves from the old hex to the new one. For example:
    • Kilo: 8788/0 on main, 0/8780 here.
    • OpenRouter: 28246/0 on main, 2112/26134 here.
    • Windsurf: 7696/0 on main, 0/7696 here.
    • Deepgram: 18580/0 on main, 0/18580 here.
  • ElevenLabs bars render in the dark label color.

Sheets (Mac 0.70.0 | Windows main | this PR), at W:/mac-parity/report/card-palette/<Pack>.png on the proof host: Claude, Codex, OpenRouter, Copilot, Cursor, Vercel, Gemini, Kilo, Qoder, Chutes, T3Chat, ElevenLabs, Grok, Windsurf, Deepgram, LLMProxy, TypeSafe, StepFun.

Limit: no CUA tray check. The captures show the WebView content, captured through CDP. I did not run a CUA check of the native tray. Only two places call Rust brand_color: Settings::effective_accent_color (rust/src/settings.rs), which nothing calls, and a Hyper test. Nothing under rust/src/tray/, tray_bridge.rs or floatbar/ calls it. So the tray icon pixels should be unchanged. The float bar border and the provider icons take their color from the TS registry, so they do change.

Open questions

  • TypeSafe and v0 are now #111111, as on the Mac. Their icon tints are almost invisible on dark surfaces such as the Settings sidebar and the float bar. v0 and Grok were already near-black (#111827) before this PR.
  • Windsurf, Qoder and LLMProxy have low contrast on the #DEDEE2 card. This matches the Mac.
  • For ElevenLabs bars, a user accent override wins on Windows. On the Mac the label style ignores overrides. I kept the override because Windows exposes an accent picker.
  • The Grok switcher icon renders as a dark square, because its SVG does not use currentColor. The palette-base capture shows it was already the case on main.
  • The spec counts 25 differences. This PR has 24 hex changes, plus the ElevenLabs label rule, plus Vercel kept on purpose.

@coderabbitai

coderabbitai Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 15 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: nesszer/Win-CodexBar/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 249c8e14-ba28-4e28-8fa1-af09ca69215d

📥 Commits

Reviewing files that changed from the base of the PR and between 4be3be9 and 90b839b.


📒 Files selected for processing (14)
  • apps/desktop-tauri/src/components/MenuCard.tsx
  • apps/desktop-tauri/src/components/charts/chartPalette.test.ts
  • apps/desktop-tauri/src/components/charts/chartPalette.ts
  • apps/desktop-tauri/src/components/providers/ProviderIcon.tsx
  • apps/desktop-tauri/src/components/providers/providerIcons.test.ts
  • apps/desktop-tauri/src/components/providers/providerIcons.ts
  • apps/desktop-tauri/src/floatbar/FloatBar.css
  • apps/desktop-tauri/src/floatbar/FloatBar.test.tsx
  • apps/desktop-tauri/src/floatbar/FloatBar.tsx
  • apps/desktop-tauri/src/lib/color.test.ts
  • apps/desktop-tauri/src/lib/color.ts
  • apps/desktop-tauri/src/lib/menuSelection.ts
  • apps/desktop-tauri/src/styles.css
  • rust/src/core/provider.rs

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

TypeSafe and V0 now use the Mac #111111, which vanishes on the dark
Settings window and the dark floating bar. ProviderIcon and the float bar
pills now add a lifted tint (brand mixed toward white until 3:1 on #222222)
for brands under 1.5:1 on #222222; dark scopes use it, light scopes,
including the tray card, keep the exact Mac color. The luminance math moves
to lib/color.ts and menuSelection reuses it.
@Finesssee

Copy link
Copy Markdown
Collaborator Author

Adversarial validation of this PR. I pushed three commits (da969f3..db07891).

The fix. The Mac palette makes TypeSafe and V0 #111111. On the dark surfaces (the float bar's default floating glass, and Settings > Providers in the sidebar and detail header), their marks almost disappeared:

  • TypeSafe on the float bar: 1.20:1 measured from the pixels. Its icon was missing in the capture.
  • Settings letter tiles: 1.35 to 1.43:1.

Commit 482404e adds brandColorOnDark:

  • It applies only to brands under 1.5:1 against #222222. It mixes them with white until they reach 3:1. #111111 becomes #707070.
  • It applies only under [data-theme="dark"] and on the non-light floating float bar.
  • The light tray card and the light-glass float bar keep the exact Mac values.
  • Brands it lifts: aixy, deepinfra, elevenlabs, manus, replicate, typesafe, v0. Of these, only TypeSafe is new with this PR; the others were already near-black on dark.
  • Tests pin literal values: #111111 to #707070, #000000 to #808080, #111827 to #70747d, and nulls for normal brands. They also pin the exact set of lifted brands and the order of the CSS rules.

After the fix (computed styles plus real cua-driver pixels, secondary monitor, synthetic scenario packs only):

  • Float bar, dark glass:
    • v0 and TypeSafe borders and icons are rgb(112,112,112).
    • Grok stays #10a37f.
    • TypeSafe icon pixels measure 2.76:1.
  • Float bar, light glass: v0 and TypeSafe stay #111111.
  • Settings tiles: 2.65 to 2.81:1.
  • Tray panel for TypeSafe, V0 and Grok: pixel-identical before and after the fix (0 differing pixels).

Proof (local, not committed): W:/mac-parity/win-runs/pr822-palette/{before,after}/ and .../tray/*-diff.png.

Checks on db07891 (includes main #811 and #816):

  • cargo fmt --check clean.
  • cargo test on both manifests: 4469 passed, 0 failed.
  • cargo clippy -D warnings on both manifests: clean.
  • pnpm test: 111 files, 917 tests passed.
  • pnpm run build: OK.

Other checks:

  • No tray or float-bar Rust path reads brand_color.
  • The contrast exemptions fail the test once a color passes, so they expire on their own.
  • Rust, TS and CSS palettes agree.
  • The user's override still wins.
  • xAI and Grok stay separate.

Pre-existing, not changed here:

  • The float bar and Settings sidebar ignore the user's accent override.
  • The ElevenLabs chart token rgb(17,24,39) is near-black on the dark Usage & Spend charts.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant