Skip to content

修复 macOS app 入口和启动失败状态提示 - #369

Closed
0xC3B6 wants to merge 1 commit into
BigPizzaV3:mainfrom
0xC3B6:fix-macos-app-entrypoints-status-prompt
Closed

修复 macOS app 入口和启动失败状态提示#369
0xC3B6 wants to merge 1 commit into
BigPizzaV3:mainfrom
0xC3B6:fix-macos-app-entrypoints-status-prompt

Conversation

@0xC3B6

@0xC3B6 0xC3B6 commented May 27, 2026

Copy link
Copy Markdown

变更说明

本 PR 修复 Rust 版本在 macOS 安装/修复入口时的两个问题:

  1. 修复安装入口可能覆盖真实 .app 可执行文件的问题

之前在生成 macOS app bundle 入口时,某些已安装路径下会把真实 Mach-O 可执行文件覆盖成启动脚本,导致安装后的 Codex++.appCodex++ 管理工具.app 可能出现无法正常启动的问题。
本次调整了 macOS app bundle 的目标路径判断和 companion binary 路径解析,确保安装/修复入口时保留真实可执行文件,不再把自身覆盖成脚本。

  1. 优化静默启动失败时的反馈

之前如果 Codex++ 静默启动阶段失败,例如查询 CDP targets 失败,用户侧可能只看到 Codex++ 没有响应,不容易知道失败原因。
现在 launcher 在启动/注入失败时会自动打开 Codex++ 管理工具,并直接进入状态页,方便用户查看最近一次启动失败信息。

实现细节

  • MacosAppBundle 增加目标可执行文件路径记录,用于判断当前写入目标是否就是真实 app executable。
  • macOS bundle 写入时,如果目标路径已经是自身真实可执行文件,则跳过脚本覆盖,保留 Mach-O 文件。
  • 调整 companion binary 路径解析,使已安装的 Codex++.appCodex++ 管理工具.app 能正确互相定位。
  • launcher 启动失败时调用管理工具,并传入 --show-status
  • 管理工具启动参数增加 showStatus,前端根据该参数默认打开状态页。

验证

  • cargo test -p codex-plus-core --test installers(11 passed)
  • cargo test -p codex-plus-launcher(6 passed)
  • cargo test -p codex-plus-manager --lib startup_options(5 passed)
  • npm --prefix apps/codex-plus-manager run check
  • git diff --check
  • cargo fmt --check -p codex-plus-core -p codex-plus-launcher -p codex-plus-manager

备注

本地验证中重新打包并安装 macOS app 后,确认:

  • /Applications/Codex++.app/Contents/MacOS/CodexPlusPlus 仍为 Mach-O 可执行文件
  • /Applications/Codex++ 管理工具.app/Contents/MacOS/CodexPlusPlusManager 仍为 Mach-O 可执行文件

@BigPizzaV3

Copy link
Copy Markdown
Owner

Codex++ maintainer review note

当前 main 下这个 PR 仍存在 merge conflict,暂时不能合并。请先 rebase 到最新 main 并解决冲突;更新后我们会重新跑针对性测试再复审。

This PR currently conflicts with main, so it is not mergeable yet. Please rebase onto the latest main and resolve the conflicts, then we can review and test it again.

@BigPizzaV3

Copy link
Copy Markdown
Owner

当前 的 macOS bundle 已采用 sidecar 二进制复制与校验流程,并由 、、 等修复入口和启动失败路径;图标遗留问题由更聚焦的 #1696 跟踪。此 PR 同时捆绑旧 bundle 结构和 Manager 状态页改动,已与现有实现分叉,现按被后续方案替代关闭。感谢贡献。

@BigPizzaV3 BigPizzaV3 closed this Aug 26, 2026
@BigPizzaV3

Copy link
Copy Markdown
Owner

补充完整关闭依据:当前 main 的 macOS bundle 已采用 sidecar 二进制复制与校验流程,并由 1ba0f711eb628e307aae9 等修复入口和启动失败路径;图标遗留问题由更聚焦的 #1696 跟踪。此 PR 同时捆绑旧 bundle 结构和 Manager 状态页改动,已与现有实现分叉。

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