Skip to content

fix(desktop): 优化用量历史模型与 harness 配色 - #4164

Merged
kirozeng merged 6 commits into
makecindy:mainfrom
kirozeng:fix/usage-category-colors
Sep 9, 2026
Merged

kirozeng merged 6 commits into
makecindy:mainfrom
kirozeng:fix/usage-category-colors

Conversation

@kirozeng

@kirozeng kirozeng commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

优化设置「用量历史」的分类配色:Agent/harness 的顶部占比条、行前色块和占比短条统一为 Claude 陶土橙、Codex 蓝、pi 青绿;模型超过五个后继续分配颜色,模型表和每日柱图保持对应,不再将后续模型全部显示为灰色。

变更类型

  • fix 缺陷修复

范围

  • 关联 Issue / 需求:所有者对用量历史配色的试用反馈。
  • 本 PR 包含:harness 身份色、覆盖完整历史的模型配色、对应回归测试与设计登记。
  • 明确不包含:日期功能、热力图配色、图元几何、字号、命中区、首页金额看板及全局引擎标识调整。
  • 用户可见变化:三个 harness 易于区分;任意数量的模型均可分配分类色,较早使用过的模型也覆盖。切换日期不重新分配颜色,柱图不再将第六个起的实际模型合成灰色“其它”。
  • 是否存在 breaking change:无。

UI 变化

  • 引用的设计规范:docs/design-rules/DESIGN.md §2、§4、§5docs/design-rules/usage-history-charts.md,以及 docs/design-rules/design-governance.md §3.4、§6、§7、§13
  • 设计风险类别:有意可见变化。复用现有主题 Token,后续模型从五个种子色派生 OKLCH 色相;不新增全局 Token,不改变数据高度、圆角、焦点或点击处理。
  • macOS 真实 Electron 沙箱已采集 Default Light/Dark 截图和 computed 值。使用 35 个明确标为 preview-model 的模拟模型,通过页面内存数据状态驱动真实组件,未写入真实账号数据库。
  • 证据索引:docs/design-evidence/2026-09-09/usage-category-colors.md。当前截图为 pi-light.pngpi-dark.png;源码以 pi-manifest.json 的 blob 绑定。图片保存在本地忽略目录,未上传 PR 附件。2026-09-09,项目所有者 / 设计负责人 kirozeng 明确确认当前配色视觉验收通过,并仅对本 PR 豁免截图上传要求;由 Agent 代记,非 AI 自我批准。验收及豁免记录。此记录更新证据索引中此前的待验收状态,不改变其他 PR 的证据要求。

怎么验证的

自动验证

pnpm test:unit:related
fnm exec --using=22.22.3 pnpm test:unit:related -- --workspace desktop
pnpm --filter desktop run --if-present typecheck
pnpm check:dco
pnpm design:inventory
git diff --check
验证口径:原功能分支相关单测通过;同步 main 后门禁自动扩展为全量,其他 workspace 全部通过。Node 24.12.0 下 Desktop 全量发生测试线程清理阶段 SIGSEGV,未改测试覆盖或产品代码,使用仓库 ensure-deps 脚本修复 Node 22 的本地 SQLite ABI 后,在 CI 同代 Node 22.22.3 下重跑完整 Desktop 单测通过。Desktop 类型检查、DCO 与台账检查通过。

覆盖 1000 个颜色分配、35 个模型的片段/表格对应、Agent 排名反转,以及超过 30 天的历史模型。既有单日筛选、空白点击和最近七天强调等回归测试继续保留。

手工验证

Agent 在独立 macOS Electron 沙箱中核对 Light/Dark:三个 harness 标记位置颜色相同;35 个模型均有颜色且与柱图片段对应;单日点击筛选仍生效,柱高及四角 2px 不变。默认范围恢复为最近 30 天。按所有者要求由主 Agent 自查完整 diff,不启动额外独立审查席。

未执行的验证

  • 未重测真实账号用量采集链路:本次只修改展示配色,验证使用模拟数据。
  • 未验证 Windows、Mobile 与全部自定义主题组合;本次无 Mobile 实现改动。
  • 未上传 PR 图片附件:设计负责人已明确豁免本 PR 的上传要求,并确认视觉验收通过,见人工决定记录;不声称 AI 检查等于人工目检。

风险

风险分类

  • 其他:有意可见的分类配色变化。

影响与回滚

  • 影响范围:Desktop 用量历史的分类颜色。大量模型可能出现近似色,名称、harness 标签和 tooltip 继续辅助识别;完整历史排名刷新时颜色可能重新分配。
  • 既有密集日期目标的 Equivalent 入口欠账继续按台账处理;本 PR 不改命中尺寸,也不以改形或撑宽作为配色修复的一部分。
  • 回滚 / 降级方式:回退本 PR 的配色与登记变更,无数据库或配置迁移。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s
  • UI 改动已在「UI 变化」注明引用的设计规范章节
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

Signed-off-by: kirozeng <kirozeng@gmail.com>
Signed-off-by: kirozeng <kirozeng@gmail.com>
Signed-off-by: kirozeng <kirozeng@gmail.com>
Signed-off-by: kirozeng <kirozeng@gmail.com>
@kirozeng
kirozeng requested a review from a team as a code owner September 9, 2026 05:58
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-09T08:36:24.352674Z 7933270 New commits
🔒 Security Review Completed 2026-09-09T08:38:03.223968Z 7933270 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Sep 9, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 将用量历史中的 harness 标记改为固定身份色,并以完整历史模型排名生成可扩展配色,使模型表和近 30 天堆叠柱图保持一致。

  • Claude、Codex 与 pi 的顶部占比条、行前色块和占比短条统一使用各自身份色。
  • 前五个模型保留现有主题色,后续模型通过 OKLCH 色相旋转派生颜色。
  • 配色顺序改为覆盖完整历史且不随日期筛选变化,柱图不再把第五名后的模型合并为灰色“其它”。
  • 增加长模型列表、历史模型、排名反转和日期筛选回归测试,并同步设计规范与台账。
  • 新增的设计证据中仍有一处旧版 harness 色值,需要更正。

Confidence Score: 4/5

实现本身看起来可以安全合并,但建议先修正设计证据中与最终 harness 配色不一致的旧版色值。

完整历史配色、模型表与柱图片段对应关系以及三种 harness 身份色均有一致的实现和回归覆盖;唯一发现是新增证据文档保留了旧方案的 computed 色值,不影响运行时行为。

Files Needing Attention: docs/design-evidence/2026-09-09/usage-category-colors.md

Important Files Changed

Filename Overview
apps/desktop/src/renderer/components/settings/usage/usageHistoryColors.ts 新增 harness 固定身份色,并使用五个主题种子色为后续模型派生 OKLCH 色相。
apps/desktop/src/renderer/components/settings/usage/UsageHistorySection.tsx 配色顺序改由完整历史的 token 聚合结果生成,避免日期筛选导致颜色重排。
apps/desktop/src/renderer/components/settings/usage/UsageTokenBars.tsx 使用完整颜色索引保留每个已登记模型的独立柱图片段。
apps/desktop/src/renderer/components/settings/usage/UsageBreakdownTables.tsx Agent 与模型表的色块、占比条统一消费新的分类颜色映射。
apps/desktop/src/renderer/components/settings/usage/tests/usageHistoryColors.test.tsx 覆盖 1000 个派生颜色、35 个模型分段及 harness 排名反转时的颜色一致性。
docs/design-evidence/2026-09-09/usage-category-colors.md 登记配色视觉验证过程,但验证结果中的 harness computed 色值仍是旧版方案。

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  H[完整用量历史] --> R[按 token 聚合并排序模型]
  R --> O[稳定的完整 colorOrder]
  O --> T[筛选范围内模型表]
  O --> B[近 30 天每日柱图]
  T --> C[同一模型使用同一颜色]
  B --> C
  A[Agent / harness 类型] --> I[固定身份色映射]
  I --> S[顶部占比条、行前色块、占比短条]
Loading
Prompt To Fix All With AI
### Issue 1
docs/design-evidence/2026-09-09/usage-category-colors.md:23
**验证色值已过期**

这里仍记录旧版青绿、靛蓝、琥珀的验证结果,但当前实现和本文前文已经改为 Claude 陶土橙、Codex 蓝、pi 青绿。这会让设计证据无法准确证明最终提交版本,请同步更新 computed 色值。

```suggestion
- Agent 顶部占比条、行前色块与占比短条一致。Light:`rgb(217, 119, 87)` / `rgb(122, 157, 255)` / `rgb(20, 184, 166)`;Dark:`rgb(217, 119, 87)` / `rgb(122, 157, 255)` / `rgb(45, 212, 191)`。
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "Merge origin/main into fix/usage-categor..." | Re-trigger Greptile

Comment thread docs/design-evidence/2026-09-09/usage-category-colors.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 377baf24de

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

「验证结果」仍记录初版青绿/靛蓝/琥珀的 computed 色值,与最终实现不一致;
按 review 反馈更新为当前值:Claude rgb(217, 119, 87)、Codex
rgb(122, 157, 255)(双模式同值),pi Light rgb(20, 184, 166) /
Dark rgb(45, 212, 191);初版实测值改为明确标记的历史对照。
「截图与记录」同步指向 pi 版栅格证据,登记源文件 blob 与 PR head
逐项一致的复核结论,并按治理合同 §6 如实登记 PR 附件上传与设计师
验收缺口。

本轮仅改本文档,不改运行时代码;纯文档改动按 development-workflow.md
跳过 workspace 单测。

Signed-off-by: Kirozeng <kirozeng@gmail.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Repo admins can enable using credits for code reviews in their settings.

@kirozeng

kirozeng commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

本轮已修复 review 指出的证据过期问题(commit 80104eeeb),只改设计证据文档,运行时代码没有变化。

改了什么docs/design-evidence/2026-09-09/usage-category-colors.md 的「验证结果」此前还留着初版青绿/靛蓝/琥珀的 computed 色值。现已更新为当前实现的实测值,初版数值明确标注为已废弃的历史对照:

  • Claude 陶土橙 rgb(217, 119, 87)(Light/Dark 同值)
  • Codex 蓝 rgb(122, 157, 255)(Light/Dark 同值)
  • pi 青绿 Light rgb(20, 184, 166)、Dark rgb(45, 212, 191)

「截图与记录」一节同步改为指向 pi 版栅格证据文件,并补上 blob 复核结论。

核对过的证据:上述数值与 colors.ts 的 Token 定义逐值一致(--engine-badge-cc #d97757--engine-badge-codex #7a9dff--usage-model-1 Light #14B8A6 / Dark #2DD4BFusageHistoryColors.ts 按此消费);pi-manifest.json 记录的四个源文件 git blob 与 PR 提交 377baf24de 逐项相同,pi-light.json / pi-dark.json 实测的 agentColors 与文档数值一致——证据对应的就是最终提交版本。本轮为纯文档改动,按 development-workflow.md 跳过 workspace 单测,CI 会照常复跑。

视觉验收还差两步人工动作(合入前):Light/Dark 真实 Electron 截图(35 个模拟模型、三 harness、40 天数据)已在证据索引登记的忽略目录 .cindy/usage-category-evidence-2026-09-09/ 就绪,并通过 sha256 与源文件 blob 校验。按 design-governance.md §6:栅格证据须由人经 PR 评论附件上传(gh CLI 与 API 传不了图),上传后把评论链接回写证据索引;设计师视觉验收仍待完成,AI 采集与核对不构成批准。这两步做完即满足「两级证据 + 设计师批准」的合入条件。

dispatch:9e261b73d865d13c

@kirozeng

kirozeng commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

已核实本轮两条反馈,无需代码改动,80104eeeb 保持不变。

CI 的「Windows unit tests 缺席」:这个 required context 是汇总门禁 job(.github/workflows/ci.yml 里的 windows-unitneeds: windows-unit-shardsif: always()),只有两个 Windows 分片跑完后才会被创建。本轮告警扫描时分片还在跑(07:07:15Z 启动、各需 15–18 分钟),汇总 job 尚未创建,所以 context 暂时缺席——是时序问题,不是检查失败。已等到终态核验:Windows unit tests (1/2)Windows unit tests (2/2) 与汇总的 Windows unit tests 全部通过(run 34322262538),PR 全部 10 项 checks 绿。

Codex 配额通知:这条评论是 Codex 云端 code review 的用量提示,需要仓库管理员在 ChatGPT Codex 的 code review 设置里启用 credits 才能继续,与 PR 代码无关,PR 侧无需处理。

dispatch:65c1a2998cb5ade8

Signed-off-by: Kirozeng <kirozeng@gmail.com>
@MagicLizi MagicLizi added status:conflict 与目标分支有冲突(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Sep 9, 2026
@kirozeng

kirozeng commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

已把 origin/main56c0e5002)合进本分支解决冲突,merge commit 为 793327081,冲突面与解法如下。

冲突在哪:main 侧合入了 DS-6(#4135)等更新,与本分支同时改了 docs/design-rules/design-decision-log.mddocs/design-rules/design-inventory.md 两个文件(DESIGN.md 自动合并成功,无冲突;用量相关代码两侧无重叠)。

怎么解的

  • 决策史台账是只增不改的日志,两侧条目都保留:本分支的三条 09-09 用量配色记录在上,DS-6 的 09-08 表单五项裁决在其后,既有 09-08/09-07 条目原样未动。
  • inventory 的 desktop.settings 事实行按仓内流程重跑 scripts/design-inventory.mjs 生成器重算:结果为 153 | 121 | 724,正好是两侧改动的合并(本分支 151→153,DS-6 735→724);DS-6 更新的人工迁移状态行与本分支追加的「Usage History category colors」小节均保留。

验证pnpm test:unit:related 通过(用量相关单测,18.7s);pnpm --filter desktop run --if-present typecheck 通过;pnpm check:dco 通过(range 56c0e500..79332708)。推送后 PR 已恢复 MERGEABLE(mergeStateStatus 为 BLOCKED 仅因新 head 的 required CI 还在跑)。

dispatch:439031655cb36ce8

@kirozeng

kirozeng commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

已核实本轮 CI 告警,无需代码改动,793327081 保持不变。

原因同上一轮:required context「Windows unit tests」是 ci.yml 里的汇总门禁 job(needs: windows-unit-shards),两个 Windows 分片跑完(约 16-17 分钟)后才会创建。引擎扫描时分片还在跑,context 因此缺席——不是检查失败。

终态已核验Windows unit tests (1/2) 16m47s、(2/2) 16m41s、汇总门禁 4s 全部通过(run 34329615838),PR 全部 10 项 checks 绿。这也顺带验证了 merge commit 793327081 与 main 的语义合并在 Windows/Linux 双平台单测下无回归。

dispatch:5e601cc97641d7dd

@MagicLizi MagicLizi removed the status:conflict 与目标分支有冲突(review-pr 自动维护,仅展示) label Sep 9, 2026
@kirozeng
kirozeng merged commit 1fc3052 into makecindy:main Sep 9, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants