Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Self-hosted OpenAI Codex Web UI and Android client bridge.
## 快速入口

- 最新 Release: [github.com/Qjzn/CX-Codex/releases/latest](https://github.com/Qjzn/CX-Codex/releases/latest)
- 2.5.7 发布说明: [docs/release-notes-2.5.7.zh-CN.md](./docs/release-notes-2.5.7.zh-CN.md)
- 2.5.6 发布说明: [docs/release-notes-2.5.6.zh-CN.md](./docs/release-notes-2.5.6.zh-CN.md)
- 2.5.5 发布说明: [docs/release-notes-2.5.5.zh-CN.md](./docs/release-notes-2.5.5.zh-CN.md)
- 2.5.4 发布说明: [docs/release-notes-2.5.4.zh-CN.md](./docs/release-notes-2.5.4.zh-CN.md)
Expand Down
2 changes: 2 additions & 0 deletions docs/changelog.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## 未发布

## 2.5.7 - 2026-07-25

- 修复 Windows 一键安装的 `-JsonOutput` 被 PowerShell 变量或自动化管道捕获时,常驻 Node 服务继承原生进程作业或输出句柄、导致 JSON 已成功返回但调用脚本仍不退出的问题;安装器现在通过 CIM 创建隐藏 worker,在保留当前环境和端口级日志的同时让服务脱离安装作业,官方 PID、健康检查和卸载流程保持有效。

## 2.5.6 - 2026-07-25
Expand Down
9 changes: 6 additions & 3 deletions docs/new-user-install-review-20260725.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

从没有 CX-Codex 运行环境的 Windows 状态出发,按 README 的一行命令已经能够完成安装、构建、启动、免费临时公网访问、密码登录、发送消息和接收回复。

首次源码预览安装最终成功用时 153.5 秒。正式 2.5.5 已完成公开资产与安装回归,并只对 Cloudflare 临时地址的 `HTTP unreachable` 自动重试一次。2.5.6 候选还补上了仅限本机的二维码配对页。项目仍不能称为真正“傻瓜式”,主要差距变为:下载阶段缺少连续进度、首次工作区选择不够明确,以及手机扫码后仍需手动输入密码。
首次源码预览安装最终成功用时 153.5 秒。正式 2.5.6 已完成公开资产与安装回归,并补上仅限本机的二维码配对页。2.5.7 候选进一步修复外层 PowerShell 变量或自动化管道捕获安装 JSON 时,后台服务已启动但调用脚本不退出的问题。项目仍不能称为真正“傻瓜式”,主要差距变为:下载阶段缺少连续进度、首次工作区选择不够明确,以及手机扫码后仍需手动输入密码。

## 测试边界

Expand Down Expand Up @@ -63,7 +63,8 @@
| 默认保留数据卸载与重装 | 2.5.3 通过;2.5.4 正式版关闭超时误警告 |
| 正式五进程无警告卸载 | 2.5.4 通过 |
| Quick Tunnel 瞬时不可达恢复 | 正式 2.5.5 自动重试一次 |
| 本机二维码配对 | 2.5.6 候选已通过真实解码和公网 404 验证 |
| 本机二维码配对 | 正式 2.5.6 已通过真实解码和公网 404 验证 |
| PowerShell 捕获安装 JSON | 2.5.7 候选已在外层变量捕获、真实服务健康、三项公网鉴权和官方卸载链路中通过 |

## 实测发现并已经修复

Expand All @@ -78,6 +79,7 @@
9. 缺少官方卸载入口。现在默认卸载保留用户数据、Codex 登录态、工作区和 Android 签名,可显式清运行数据与项目托管的 cloudflared。
10. `StartNow` 使用通用日志时可能被已有实例占用。现在使用端口级启动日志,并用真实健康与卸载关停作为 Windows CI 门禁。
11. 正式 2.5.1 首次安装成功后,重复执行原命令会因旧服务占用安装目录而无法原子替换。2.5.2 已停止目标父服务与隧道,但正式回归又发现 `codex.exe` 子进程可能继续持有目录;2.5.3 改为停止整棵受管进程树、有限重试,失败时自动恢复旧服务。
12. 安装 JSON 被外层 PowerShell 变量或自动化管道捕获时,常驻 Node 服务可能继承原生进程作业或输出句柄,导致 JSON 已产生但调用脚本不退出。2.5.7 改由 CIM 创建隐藏 worker,再由 worker 启动带独立日志句柄的服务;回归要求外层捕获退出后服务继续健康,并可由官方卸载完整停止。

## 槽点

Expand All @@ -87,6 +89,7 @@
- 2.5.3 正式 Release 已补齐运行中重复升级、默认保留数据卸载和无安装状态重装;Windows CI 会让旧服务及其子进程锁定目录后再次执行 bootstrap。
- 2.5.4 正式版让官方卸载器以子进程优先顺序关闭整棵受管进程树,真实五进程卸载与自动化夹具均无超时警告。
- 正式 2.5.5 在 Quick Tunnel 公网验证完全不可达时自动重试一次,但错误鉴权状态仍立即失败。
- 正式 2.5.6 已提供仅限本机的二维码配对页;2.5.7 候选已关闭 PowerShell 捕获安装结果时的后台服务句柄挂起。
- README 默认使用 Release + SHA-256 链路,不再依赖 `main` 源码归档。
- Release 工作流强制校验标签、`package.json` 和版本说明一致,避免误发错版本。

Expand Down Expand Up @@ -117,7 +120,7 @@
2. 已完成:bootstrap 读取同版本能力清单,确认归档支持 `RemoteQuick`、`JsonOutput` 和所需安装器契约,拒绝混用。
3. 已完成:stdout 最终只输出一行稳定 JSON;进度和诊断写入 stderr,失败提供固定错误码和阶段。
4. 已完成:增加官方 `uninstall-windows.ps1`,默认保留 Codex 登录态、工作区和 Android 签名,可选清除运行数据与托管 cloudflared。
5. 已完成:Windows CI 增加真正的 `StartNow` 健康和卸载关停检查。
5. 已完成:Windows CI 增加真正的 `StartNow` 外层变量捕获、健康和卸载关停检查。

### 第二阶段:首次引导

Expand Down
50 changes: 50 additions & 0 deletions docs/release-notes-2.5.7.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# CX-Codex 2.5.7:一键安装调用可可靠退出

2.5.7 修复 Windows 新人安装链路中的一个关键稳定性问题:当自动化工具或 PowerShell 变量捕获 `-JsonOutput` 结果时,CX-Codex 服务虽然已经启动并返回成功 JSON,外层调用仍可能因为后台进程继承句柄而一直不退出。

## 本版变化

- Windows 安装器通过 CIM 创建隐藏 worker,使常驻 Node 服务脱离安装脚本的原生进程作业和输出管道。
- 服务继续使用端口级 stdout/stderr 日志,不向安装 JSON 泄漏密码、Cookie、Token 或临时公网地址之外的敏感信息。
- PID 标记、健康检查、Quick Tunnel 和官方卸载流程保持原有契约。
- Windows 产品化回归改为从外层 PowerShell 变量捕获真实 `StartNow` JSON,并要求调用在 60 秒内退出。
- Release 归档强制包含新的 detached worker,避免源码验证通过但正式 ZIP 缺文件。

## 一步安装、升级或修复

在普通 Windows PowerShell 中执行:

```powershell
& ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/Qjzn/CX-Codex/main/scripts/bootstrap-windows.ps1'))) -RemoteQuick -JsonOutput
```

命令会选择最新正式 Release、校验 SHA-256、启动本机服务并创建免费临时 HTTPS 地址。无需服务器、域名或 Cloudflare 账号。

安装完成后,在电脑本机打开:

```text
http://127.0.0.1:7420/local-setup
```

用手机扫描二维码打开临时地址,再输入页面单独显示的访问密码。二维码不包含密码,配对页也不能从公网打开。

## 卸载

```powershell
& ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/Qjzn/CX-Codex/main/scripts/uninstall-windows.ps1'))) -JsonOutput
```

默认卸载会停止受管服务和临时通道,删除程序与启动器,同时保留 CX-Codex 运行数据、Codex 登录态、工作区、Android 签名和已校验的 cloudflared 缓存。

## 验证

- 本机 Windows 产品化回归通过真实外层变量捕获、单行 JSON、服务健康、官方卸载和端口关闭。
- 隔离新人环境的源码版 `RemoteQuick` 通过公网健康、未登录 API 401 和未登录 WebSocket 拒绝三项验证。
- 全新浏览器可经密码页进入新会话界面,创建任务、消息输入和设置入口均可见,无横向溢出。
- GitHub Linux Release gate 与 Windows bootstrap、产品化、锁文件升级和卸载 smoke 全部通过。

## 边界

Quick Tunnel 免费、免注册且无需自有服务器,但地址是临时的,没有 SLA,服务退出后地址会失效。2.5.7 解决的是安装调用不退出问题,不把临时通道升级为长期固定公网服务。

正式标签发布前,本版仍按候选版本审查;只有 Release 工作流、公开资产校验和正式归档安装回归全部完成后,才视为正式可交付版本。
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cx-codex",
"version": "2.5.6",
"version": "2.5.7",
"description": "CX-Codex Web UI and browser bridge for Windows, Linux, Android, LAN, and remote self-hosted access",
"type": "module",
"license": "MIT",
Expand Down