Skip to content

fix: 菜单栏彩色样式文字对比度过低(1.31:1 → 4.21:1) - #146

Open
zhongwuzw wants to merge 1 commit into
cclank:mainfrom
zhongwuzw:fix/menubar-label-contrast
Open

zhongwuzw wants to merge 1 commit into
cclank:mainfrom
zhongwuzw:fix/menubar-label-contrast

Conversation

@zhongwuzw

@zhongwuzw zhongwuzw commented Nov 6, 2026 •

Copy link
Copy Markdown

问题

menuBarStyle = color 时,菜单栏读数几乎看不清。

实测方法:用 System Events 取状态项真实位置(891,3,64,24 pt),再按该区域精确截图(128×48px @2x),逐像素量亮度与 WCAG 对比度。

  • 菜单栏材质底色 #6B728D(L=0.171)
  • 读数笔画 #586078(L=0.106),比底色还暗,对比度 1.31:1(WCAG 正文需 4.5:1)
  • 同一位置 Apple 原生状态项 #EFF1F5,对比度 4.19:1

另一张浅色外观下的截图是 #7E7E7E 压 #657290,1.19:1,同一个毛病。

image

原因

MenuBarMetricKind.nsColor 的 .total 分支、以及 .color 样式的分隔符,都用了 .secondaryLabelColor(等于 labelColor 加 50% 透明度)。半透明色叠在菜单栏的 vibrancy 材质上后,亮度刚好落在底色附近,色相和对比度一起丢失。

.system 样式用的是纯 .white,所以经典白没这个问题;.symbols / .dots 也早就只给图标上色、数字统一用 .labelColor。

改动

  1. MenuBarStyle.swift:224 — .total 由 .secondaryLabelColor 改为 .labelColor(不透明,按菜单栏明暗自动取纯黑/纯白)
  2. MenuBarStyle.swift:659 — .color 样式的 · 分隔符改为 NSColor.labelColor.withAlphaComponent(0.75)(比主数字略弱,但不会糊进底色)
  3. MenuBarStyle.swift:749 — staleAlpha 0.45 → 0.62(过期读数仍然能和新鲜读数区分开,但不至于看不清)

验证

本地构建(arm64),实机截图,同一状态项位置:

底色 文字峰值色 对比度
改前(v1.0.51) #6B728D #586078 1.31:1
改后 #6B728D #F0F1F4 4.21:1
同栏 Apple 原生项 — #EFF1F5 4.19:1

改后文字亮度与系统原生状态项同一档。

过期读数按新系数模拟合成(同一底色):0.45 → 2.08:1,0.62 → 2.64:1。

未覆盖

  • .color / .compact 下额度数字仍用 claudeColor / codexColor / grokColor(实测 1.85:1 / 2.05:1 / 2.15:1),本 PR 不动,避免超出范围。如果需要可以另开 PR 统一成 .labelColor + 彩色图标。
  • 分隔符与 staleAlpha 这两处在本地没能实机触发(当前只显示「今日总量」,额度数据未同步;读数也是新鲜的),只做了代码级修改。

.total 与 .color 分隔符原来用 .secondaryLabelColor(labelColor + 50% 透明),
叠在菜单栏 vibrancy 材质上后亮度贴近底色,色相和对比度一起丢失。

- .total 改用 .labelColor(不透明,按菜单栏明暗取纯黑/纯白)
- .color 分隔符改用 labelColor.withAlphaComponent(0.75)
- staleAlpha 0.45 → 0.62,过期读数仍可区分但不至于看不清

实机实测(同一状态项位置,128×48px @2x):
改前 #586078 压 #6B728D = 1.31:1;改后 #F0F1F4 压 #6B728D = 4.21:1
(同一栏 Apple 原生状态项 #EFF1F5 = 4.19:1)
Copilot AI balanced review requested due to automatic review settings November 6, 2026 09:35

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the menu-bar contrast adjustments.

No open issues 🎉

What changed in this PR

This PR improves menu-bar readability by increasing contrast for total readings, separators, and stale values.

Changes:

  • Uses .labelColor instead of .secondaryLabelColor for total readings.
  • Gives color-style separators .labelColor at 75% opacity.
  • Raises stale-value opacity from 45% to 62%, leaving provider-specific quota colors unchanged.
File Description
Tokei/​Sources/​Tokei/​MenuBarStyle.swift Adjusts text colors and opacity to improve menu-bar contrast.

Review effort: Balanced

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.

2 participants