Skip to content

feat(desktop): 关于页 Claude Code / Codex 版本菜单对齐 Pi - #5061

Merged
MagicLizi merged 7 commits into
mainfrom
cindy/humble-euclid
Sep 24, 2026
Merged

MagicLizi merged 7 commits into
mainfrom
cindy/humble-euclid

Conversation

@MagicLizi

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

设置 → 关于里,Claude Code 和 Codex 的版本行改成和 Pi 一模一样的样式:一行显示当前版本和一个简短状态(检查中 / 检查失败 / 有更新),点版本号弹出菜单。菜单里只有我们自己维护的版本线:

  • 「更新 Claude Code / Codex」,右侧显示当前更新渠道的最新版本;只有严格更新时可点
  • 「检查更新」
  • 上次检查时间

不提供上游版本、恢复正式版或更新说明。点更新后仍沿用 #4928 的流程:确认 → 有任务在跑时二次提醒 → 重启 Cindy,由正常启动流程(Splash)下载安装。

为了让两边长期一致,把 Pi 行的外框、菜单项和底部时间抽成共用的 HarnessVersionMenuRow,Pi 行只换成调用共用组件,渲染结构与交互不变。

顺带修正:原先更新按钮和弹窗文案里的 {{name}} 传的是行标签,会显示成「更新 Claude Code 版本号」;现在传产品名。

变更类型

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

范围

  • 关联 Issue / 需求:仓库 owner 要求关于页 Claude Code / Codex 的更新表现与 Pi 对齐(只更新自家维护的版本,点更新后重启走 Splash)
  • 本 PR 包含:共用版本行组件;Claude Code / Codex 行改为 Pi 式菜单;maker:agent:binary-version 响应追加 latestCheckFailed;五语文案;单测;DESIGN.md「About: harness versions」与协议兼容文档补充
  • 明确不包含:更新服务 / 重启标记 / Splash 下载逻辑(均未改);Pi 的安装、恢复与检查逻辑;Mobile
  • 用户可见变化:Claude Code / Codex 版本号后不再有独立按钮,改为点版本号打开菜单;读不到线上清单时显示「检查失败」而不是看起来像「无更新」
  • 是否存在 breaking change:无

UI 变化

  • 截图 / 录屏:未附;本轮未执行 Light / Dark 实机目检
  • 引用的设计规范:docs/design-rules/DESIGN.md §4「About: harness versions」(每个 harness 一行、pill 触发器打开菜单、菜单沿用既有容器与 inner-row 几何、状态只放在行内),本 PR 已把 Claude Code / Codex 的规则补进该节;§5 Step 2 inner control(菜单行 rounded-lg)。样式与 Pi 共用同一组件,颜色全部走既有语义 token(--settings-section-*、--surface-hover、--text-secondary、--focus-ring-soft),Light / Dark 同源。

怎么验证的

自动验证

pnpm test:unit:related
结果:apps/desktop unit PASS(rebase 到最新 main 后重跑;在 Cindy 宿主 shell 中按仓库记录清理 XDT_*/CINDY_* 环境变量并使用系统 bsdtar)

pnpm --filter desktop run --if-present typecheck
结果:通过

npx vitest run(About 版本行、Pi 版本行、binary-version IPC)
结果:3 files, 32 passed

npx eslint(改动的 5 个文件)
结果:通过

pnpm check:i18n
结果:通过(五语 key 一致,仅存量非阻断 warning)

pnpm check:i18n-glossary
结果:通过(无新增违规)

pnpm check:design-colors
结果:通过,0 unexpected;4 条非阻断 report,均为从 Pi 行原样移入共用组件的既有圆角 / 18px 行内距

pnpm check:design-inventory
结果:通过(已重新生成 design-inventory.md,settings 文件数 +1)

手工验证

不涉及:未启动打包版 Desktop。

未执行的验证

  • 未在打包版上实测「菜单 → 更新 → 重启 → Splash 下载」全流程(重启与下载链路本 PR 未改动)
  • 未执行 Light / Dark 实机目检;两种模式均通过共用的语义 token 实现,与 Pi 行同源

风险

风险分类

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

影响与回滚

  • 影响范围:maker:agent:binary-version(device-link 只读白名单内)响应追加 latestCheckFailed: boolean。纯追加:旧控制端忽略新字段;旧被控端不返回时新控制端按「未失败」处理。未新增 channel,update-harness-relaunch 仍不在 device-link 白名单内。Pi 行只是换成共用组件,DOM 与交互不变(Pi 单测全部通过)。
  • 回滚 / 降级方式:revert 本 PR 即恢复原按钮样式;无数据、配置或持久化格式变更。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO)
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已核对受影响的文档,行为变化涉及的旧结论已同步修订(不涉及则无需修改文档)
  • 已确认测试结果或说明未执行原因

Claude Code 与 Codex 的版本行改用与 Pi 共用的 HarnessVersionMenuRow:
点版本号打开菜单,只提供更新到当前渠道版本、检查更新与上次检查时间;
更新仍走确认、忙碌提醒后重启,由启动 Splash 安装。

binary-version 的 checkLatest 响应追加 latestCheckFailed,读不到线上清单时
行内显示检查失败。弹窗与菜单文案改传产品名,不再出现「更新 Claude Code 版本号」。

Signed-off-by: MagicLizi <jiali@magiclizi.com>
@MagicLizi
MagicLizi requested a review from a team as a code owner September 24, 2026 15:12
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 24, 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-24T18:33:37.233396Z 214c74a New commits
🔒 Security Review ✅ Completed 2026-09-24T18:34:01.195708Z 214c74a 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 24, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

暂不宜合并:线上检查失败后,关于页仍允许依据过期结果发起可能无效的更新重启。

Findings

  1. P1 检查失败后仍可更新 ▶
Fix with agent prompt
### Issue 1
apps/desktop/src/renderer/components/settings/AboutSection.tsx:101
再次检查线上清单失败时,这里仍保留上次的 `updateAvailable`,因此“更新”菜单项继续可点。用户可能依据已过期的版本信息确认并重启;但启动流程会重新检查清单,无法保证安装菜单显示的版本,持续离线时还可能没有更新可装。

```suggestion
            updateAvailable: failed ? false : latest.updateAvailable,
```

---

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

此 PR 将关于页的 Claude Code、Codex 版本行改为与 Pi 共用的版本菜单,新增线上检查失败状态和五语文案,并补充测试与协议文档。

  • 本地版本先显示,随后检查当前渠道清单;更新仍通过确认和重启后的启动流程执行。
  • 检查失败后,旧的更新结果仍可触发重启,需要处理这一过期操作。
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[关于页读取本地版本] --> B[检查当前渠道清单]
  B -->|成功| C[显示版本与更新状态]
  B -->|失败| D[显示检查失败]
  D --> E[当前仍保留旧的可用更新操作]
  E --> F[确认并重启]
  F --> G[Splash 重新检查并决定是否安装]
Loading

Reviews (1) · Last reviewed commit: "feat(desktop): 关于页 Claude Code / Codex 版..."

Comment thread apps/desktop/src/renderer/components/settings/AboutSection.tsx Outdated
@MagicLizi MagicLizi added status:ci-failed CI 失败(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Sep 24, 2026
关于页再次检查线上清单失败时不再保留上次的 updateAvailable,避免用户按过期版本确认重启。Windows 上 DuplexClient 默认劫持 stdout 会导致 spawnSync 超时 status=null,协议探测改为显式注入 stdin/stdout。

Signed-off-by: MagicLizi <jiali@magiclizi.com>

@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: 5549125506

ℹ️ 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".

Comment thread apps/desktop/src/renderer/i18n/locales/en/common.json Outdated
@MagicLizi MagicLizi removed the status:ci-failed CI 失败(review-pr 自动维护,仅展示) label Sep 24, 2026
清单请求失败时行内不再只显示「检查失败」,五语改为说明无法检查更新并提示打开菜单再试,符合 DESIGN.md §11.1。

Signed-off-by: MagicLizi <jiali@magiclizi.com>
…ailed-copy

Signed-off-by: MagicLizi <jiali@magiclizi.com>

@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: f2ee033bdd

ℹ️ 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".

Comment thread apps/desktop/src/renderer/components/settings/HarnessVersionMenuRow.tsx Outdated
@MagicLizi MagicLizi added the status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) label Sep 24, 2026
800px 最小窗口下 Settings 侧栏仍占 260px,长失败文案不再 shrink-0,行内保留打开菜单再试,避免横向撑破版本行。

Signed-off-by: MagicLizi <jiali@magiclizi.com>

@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: dfe944e4d4

ℹ️ 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".

Comment thread apps/desktop/src/renderer/components/settings/AboutSection.tsx Outdated
@MagicLizi MagicLizi added status:ci-running CI 还在跑(review-pr 自动维护,仅展示) and removed status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) labels Sep 24, 2026
再次检查尚未返回时不再用上次的 updateAvailable 确认重启;菜单项与 handleUpdate 都把 checking 纳入门槛。

Signed-off-by: MagicLizi <jiali@magiclizi.com>
…ailed-copy

Signed-off-by: MagicLizi <jiali@magiclizi.com>
@MagicLizi MagicLizi removed the status:ci-running CI 还在跑(review-pr 自动维护,仅展示) label Sep 24, 2026
@MagicLizi
MagicLizi merged commit 5d5d665 into main Sep 24, 2026
18 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.

2 participants