Skip to content

fix(desktop): 诊断页与会话视图硬编码颜色改用语义 token - #3686

Merged
MagicLizi merged 5 commits into
makecindy:mainfrom
Michael-Yu2978:codex/pr2
Sep 3, 2026
Merged

fix(desktop): 诊断页与会话视图硬编码颜色改用语义 token#3686
MagicLizi merged 5 commits into
makecindy:mainfrom
Michael-Yu2978:codex/pr2

Conversation

@Michael-Yu2978

@Michael-Yu2978 Michael-Yu2978 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

合并原 5-PR 提案中的 PR2 + PR3 为同一个「renderer 硬编码颜色清理」。MakerExperimentalView 诊断页整页裸写暗色 hex(生产按 URL 可达,Light 主题下不可读);CCAgentSessionView 的 handoff pill 文字与 context 环阈值色也裸写 hex,与 token 体系脱钩。两处全部收口到已注册的语义 token,颜色随 Light / Dark 及内置主题自动取色,满足双模式交付门槛;纯样式替换,无逻辑与行为变化。

另按自动 review(Greptile)提出的 P1 意见,将诊断事件流标题从 warning-accent 调整为 text-secondarywarning-accent 按设计规范仅限已登记的运行/警告状态表面,普通诊断事件标题不在其适用范围内,且橙色在白色 surface-elevated 上对比度不足;修复已包含在本 PR 提交内。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:无(来源:5-PR 提案 PR2 + PR3,合并为单一「renderer 硬编码颜色清理」PR)
  • 本 PR 包含(4 个功能 commit + 1 个合并上游 main 的 merge commit,head 9a4204594,基于上游 main @ 7f03b7436):
    • MakerExperimentalView 约 20 处裸 hex → 语义 token(text-primary/secondary/tertiarysurface-elevatedborder-defaultaccent-cta-bg/accent-pure-cta-fgerror-flatwarning-accentsurface-chip/surface-chip-alt
    • MakerExperimentalView 诊断事件流标题 → text-secondary(修复自动 review P1 对比度问题)
    • CCAgentSessionView handoff pill 两处 text-[#595959]text-muted-foreground;context 环阈值 #EF4444 / #F59E0Bvar(--error-flat) / var(--warning-fg)
    • 新增两个源契约守卫测试:makerExperimentalThemeContract.test.tsccAgentSessionViewThemeContract.test.ts(锁「零新增裸色 + 消费 token 已注册 + light/dark 双槽位」)
    • 文档:design-decision-log.md backlog 条目置为已解决并登记合并范围(含修正未被源消费的 token 清单);DESIGN.md §13 移除已失效示例;pnpm design:inventory 重新生成 design-inventory.md 台账(冲突期间随上游台账演进再次生成)
  • 明确不包含:诊断页路由的 dev 门禁(token 化后生产可达可读,故不加);CCAgentSessionView<strong> 被 preflight 渲染为 700 的已登记缺口;PR4(effortMapping 死代码)、PR5(Windows Pi 测试)
  • 用户可见变化:Light 主题下诊断页、handoff pill、context 环恢复可读;Dark 及内置主题颜色由 token 体系自动适配(红/橙阈值为语义豁免色,跨主题同值)
  • 是否存在 breaking change:无

UI 变化

  • 引用的设计规范:
    • DESIGN.md §10「Theme System & Token Reference」:组件内禁止硬编码 hex,一律消费语义 token——本 PR 全部替换为已注册 token
    • DESIGN.md §10「Light / Dark Dual-Mode Delivery Gate(双模式交付门槛)」:改动表面必须双模式可交付——经 token 双槽位自动覆盖,守卫测试断言消费 token 的 light/dark 槽位存在
    • DESIGN.md §2 颜色角色:彩色仅限受裁定语义信号——context 环阈值红/橙收敛到 error-flat / warning-fg 语义豁免色,跨主题同值
    • 平台:desktop(Windows 开发环境;应用内实机目检未执行,见「未执行的验证」)

怎么验证的

自动验证

corepack pnpm test:unit:related
结果:PASS(test:runner 503/503 + apps/desktop related 全绿,含两个新增守卫测试 6/6)
说明:本地 Windows 一次全量跑的唯一失败为上游新增 codexMicroGuardCore 的 symlink 用例
(本机无管理员/开发者模式,fs.symlink 报 EPERM),文件与上游 base 完全一致、本 PR 未触碰,
属环境性基线失败,CI Windows runner 已开启开发者模式不受影响。

corepack pnpm --filter desktop run typecheck(mobile typecheck 同步通过)
结果:PASS

node scripts/hardcoded-color-audit.mjs --base-ref 7f03b7436
结果:raw=0 / allowed=0 / unexpected=0 / PASS

node scripts/design-inventory.mjs --check / corepack pnpm check:dco(4 功能 commit 签名 + merge commit 豁免)
结果:PASS

CI(head `9a4204594`):check:pr-design-basis、verify-checks、Desktop Git integration、Windows/Linux unit tests、DCO

手工验证

  • Light / Dark token 化预览目检:以 themes/colors.ts 实际 token 取值渲染两视图的 Light / Dark 预览并目检,对比度与层级正常(截图存于本地,未上传)。该预览为 token 精确渲染,不等同于应用内实机。
  • 应用内实机操作:不涉及(本环境无法启动桌面应用,未做实机操作)。

未执行的验证

  • 桌面应用内 Light / Dark 双模式实机目检未执行:环境无法启动桌面应用,两种模式均未实机验证。已用静态守卫(token 双槽位注册断言 + 零新增裸色审计 + 源契约测试)与 token 化预览目检替代,最终视觉验收仍需人工/CI 实机确认。
  • mobile 不涉及。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:desktop renderer 两个 UI 文件(MakerExperimentalView 诊断页、CCAgentSessionView handoff pill + context 环),纯样式取值替换,无逻辑变化。
  • 回滚 / 降级方式:回退本 PR 相对 main 的全部改动(head 9a4204594)即可;旧值为暗色系,Dark 下外观近似,Light 下按旧值渲染,无数据或兼容风险。不涉及 SQLite / system prompt / 协议 / 原生层,无需特殊降级流程。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档(design-decision-log.mdDESIGN.mddesign-inventory.md
  • 已确认测试结果或说明未执行原因

@Michael-Yu2978
Michael-Yu2978 requested a review from a team as a code owner August 31, 2026 11:05
@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 将桌面端诊断页、handoff pill 和 context 容量环的硬编码颜色替换为主题语义 token,并新增源码契约测试及同步设计文档。

  • MakerExperimentalView 全面改用文本、表面、边框、按钮和状态 token
  • CCAgentSessionView 的 pill 文字及容量阈值颜色接入主题 token
  • 新增 Light/Dark token 注册与裸色守卫测试
  • 仍有一处事件流橙色文本违反限定用途并在 Light 模式下对比度不足

Confidence Score: 4/5

合并前应修正诊断事件标题的颜色 token,避免 Light 主题下的小号文本仍然难以辨认。

主要 token 替换和主题注入路径有效,但事件流将固定橙色 warning-accent 用于 11px 普通文本,在白色提升表面上的对比度不足,同时超出了设计系统登记的使用范围。

Files Needing Attention: apps/desktop/src/renderer/features/maker-experimental/MakerExperimentalView.tsx

Important Files Changed

Filename Overview
apps/desktop/src/renderer/features/maker-experimental/MakerExperimentalView.tsx 大部分硬编码颜色已正确收敛,但事件标题将受限的 warning-accent 用作 11px 正文,在 Light 模式下对比度不足。
apps/desktop/src/renderer/features/cc-agent/CCAgentSessionView.tsx handoff pill 与容量环均改用已注册且适合对应 CSS/SVG 用途的主题 token。
apps/desktop/src/renderer/tests/makerExperimentalThemeContract.test.ts 新增诊断页裸色、token 注册和双模式槽位守卫;当前变更覆盖有效。
apps/desktop/src/renderer/tests/ccAgentSessionViewThemeContract.test.ts 新增 handoff pill 与容量环 token 的定向回归守卫及双模式检查。
docs/design-rules/DESIGN.md 移除已完成的 MakerExperimentalView 延后清理示例。
docs/design-rules/design-decision-log.md 将硬编码颜色清理登记为已解决,但实现中的 warning-accent 消费者尚未符合现有受限用途规则。
Prompt To Fix All With AI
### Issue 1
apps/desktop/src/renderer/features/maker-experimental/MakerExperimentalView.tsx:332
**事件标题颜色对比度不足**

Light 主题下,事件流在白色 `surface-elevated` 背景上以 11px 字号使用固定的 `warning-accent` 橙色,约 3.2:1 的对比度低于普通小号文本所需的 4.5:1,导致事件编号和类型难以辨认;同时该 token 按设计规范仅限已登记的运行或警告状态表面,普通诊断事件标题不在其适用范围内。

---

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

Reviews (1): Last reviewed commit: "fix(desktop): CCAgentSessionView handoff..." | Re-trigger Greptile

Comment thread apps/desktop/src/renderer/features/maker-experimental/MakerExperimentalView.tsx Outdated
@MagicLizi

Copy link
Copy Markdown
Contributor

@Michael-Yu2978 👋 这个 PR 还有 1 条 review conversation 没 resolve(apps/desktop/src/renderer/features/maker-experimental/MakerExperimentalView.tsx),auto-review 因此暂时跳过、没法继续审查 / 合并。

如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。

@MagicLizi MagicLizi added touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Aug 31, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(CCAgentSessionView / MakerExperimentalView)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面,便于确认界面符合 DESIGN.md 设计规范。

@MagicLizi

Copy link
Copy Markdown
Contributor

@Michael-Yu2978 这条改动会改变诊断页和会话视图的实际配色,并更新了设计规则文档,先走维护者确认,暂不合并。

请维护者在本 PR 上 Approve;如果要改,请 Request Changes,作者改完后再 Approve。讨论 issue:#3720

@MagicLizi

Copy link
Copy Markdown
Contributor

@Michael-Yu2978 👋 这个 PR 目前与 main 有合并冲突,auto-review 因此暂时跳过、没法继续审查 / 合并。

请在本地 merge 最新的 origin/main 解决冲突后推送;冲突解除后,下一轮 auto-review 会自动重新处理这个 PR。

@MagicLizi

Copy link
Copy Markdown
Contributor

@Michael-Yu2978 👋 这个 PR 目前与 main 有合并冲突,auto-review 因此暂时跳过、没法继续审查 / 合并。

请在本地 merge 最新的 origin/main 解决冲突后推送;冲突解除后,下一轮 auto-review 会自动重新处理这个 PR。

…pr2-rebase

Signed-off-by: Michael-Yu2978 <ymt2978@163.com>

# Conflicts:
#	docs/design-rules/design-inventory.md

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

独立审查通过:诊断页与会话视图硬编码色已换成已注册语义 token,规则文档只勾掉 backlog。没有 P0/P1。

@MagicLizi MagicLizi removed the awaiting-discussion 等待维护者讨论(review-pr) label Sep 3, 2026
@MagicLizi
MagicLizi merged commit 6c0a12d into makecindy:main Sep 3, 2026
12 checks passed
@MagicLizi

Copy link
Copy Markdown
Contributor

主干侧代合并了。冲突只在生成的 docs/design-rules/design-inventory.md 计数行:保留主干更完整的文件清单,套上本 PR 的 token / hex 计数(诊断页 39→0,会话视图裸 hex 56→52)。theme contract 测试 6/6 通过。硬编码色终于收进 token,Light 下那页诊断再也不会是一团深色块。

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.

2 participants