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.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)
- 2.5.3 发布说明: [docs/release-notes-2.5.3.zh-CN.md](./docs/release-notes-2.5.3.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.6 - 2026-07-25

- 长时稳定性浸泡现在持续验证本机事件回放结构与 `latestSeq` 单调性,并在配置公网地址时逐样本确认未登录 Codex API 始终返回 HTTP 401;JSON 报告新增回放失败、鉴权失败和事件序号倒退汇总,避免只看 `/health` 而漏掉消息接收链路或远程鉴权回归。
- 设置中的“手机访问”前置到基础设置之后,新人无需先滚过套餐余量和权限控制即可生成、复制、打开或停止临时地址;功能、安全验证和视觉样式保持不变。
- 仅限本机的手机配对页新增本地生成二维码,手机相机可直接打开已验证的临时地址;二维码不包含访问密码、不调用第三方二维码服务,配对页继续对公网请求返回 404。
Expand Down
9 changes: 5 additions & 4 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.4 的公开资产、五进程无警告卸载和无安装状态重装均已通过;首次升级时 Cloudflare 临时地址一度完全不可达,手动再次开启约 20 秒即成功,2.5.5 已只对这种 `HTTP unreachable` 自动重试一次。当前 `main` 还补上了仅限本机的二维码配对页。项目仍不能称为真正“傻瓜式”,主要差距变为:下载阶段缺少连续进度、首次工作区选择不够明确,以及手机扫码后仍需手动输入密码。
首次源码预览安装最终成功用时 153.5 秒。正式 2.5.5 已完成公开资产与安装回归,并只对 Cloudflare 临时地址的 `HTTP unreachable` 自动重试一次。2.5.6 候选还补上了仅限本机的二维码配对页。项目仍不能称为真正“傻瓜式”,主要差距变为:下载阶段缺少连续进度、首次工作区选择不够明确,以及手机扫码后仍需手动输入密码。

## 测试边界

Expand Down Expand Up @@ -62,7 +62,8 @@
| 运行中升级与同版本重复升级 | 2.5.3 通过 |
| 默认保留数据卸载与重装 | 2.5.3 通过;2.5.4 正式版关闭超时误警告 |
| 正式五进程无警告卸载 | 2.5.4 通过 |
| Quick Tunnel 瞬时不可达恢复 | 2.5.5 候选自动重试一次 |
| Quick Tunnel 瞬时不可达恢复 | 正式 2.5.5 自动重试一次 |
| 本机二维码配对 | 2.5.6 候选已通过真实解码和公网 404 验证 |

## 实测发现并已经修复

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

Expand All @@ -112,7 +113,7 @@

### 第一阶段:发布即可用

1. 已完成:2.5.3 正式 Release 已完成公网下载、运行中升级、同版本重复升级、卸载和重装验证;2.5.4 正式版关闭卸载的父子进程与误警告边界,2.5.5 候选继续收口临时公网传播抖动
1. 已完成:2.5.3 正式 Release 已完成公网下载、运行中升级、同版本重复升级、卸载和重装验证;2.5.4 正式版关闭卸载的父子进程与误警告边界,正式 2.5.5 收口临时公网传播抖动
2. 已完成:bootstrap 读取同版本能力清单,确认归档支持 `RemoteQuick`、`JsonOutput` 和所需安装器契约,拒绝混用。
3. 已完成:stdout 最终只输出一行稳定 JSON;进度和诊断写入 stderr,失败提供固定错误码和阶段。
4. 已完成:增加官方 `uninstall-windows.ps1`,默认保留 Codex 登录态、工作区和 Android 签名,可选清除运行数据与托管 cloudflared。
Expand Down
9 changes: 5 additions & 4 deletions docs/open-source-readiness-20260725.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## 结论

2.5.3 与 2.5.4 已正式发布。2.5.4 六个公开资产全部通过校验,真实五进程卸载 `warnings` 为空,程序、端口与受管通道均清理完成且用户数据保留。正式升级首次遇到 Cloudflare 临时地址完全不可达,手动重试约 20 秒即成功;2.5.5 候选已将这条安全重试收进 CLI 与设置页。协议基线漂移与历史 Google/Firebase key 仍需按下述边界持续处置。
2.5.3、2.5.4 与 2.5.5 已正式发布。2.5.4 六个公开资产全部通过校验,真实五进程卸载 `warnings` 为空,程序、端口与受管通道均清理完成且用户数据保留。正式升级首次遇到 Cloudflare 临时地址完全不可达,2.5.5 已将受限安全重试收进 CLI 与设置页;2.5.6 候选继续补齐手机访问入口、仅限本机的扫码配对和长时消息接收门禁。协议基线漂移与历史 Google/Firebase key 仍需按下述边界持续处置。

## 已通过

Expand All @@ -22,10 +22,11 @@
- 正式 2.5.3 Release 工作流通过;公开下载的 Windows ZIP、正式签名 APK、调试 APK 及三组 SHA-256 共六个资产全部校验通过,ZIP 版本、双 HTML 入口、CLI 和产品化能力清单一致。
- 正式 2.5.3 从正在运行的 2.5.2 成功升级,再次执行同一命令完成 2.5.3 → 2.5.3 重复升级;两次均通过本机健康、公网健康、HTTP 鉴权和 WebSocket 鉴权。
- 官方卸载成功清理安装目录、启动器、PID 标记、受管进程和 7420 监听,同时保留配置、cloudflared 缓存和 Codex 登录态;随后从无安装状态重装 2.5.3 并再次通过三项验证。
- 2.5.4 候选已在真实五进程运行树和自动化子进程夹具上通过无警告卸载,关闭正式回归发现的 `PROCESS_STOP_TIMEOUT` 误警告。
- 正式 2.5.4 已在真实五进程运行树和自动化子进程夹具上通过无警告卸载,关闭正式回归发现的 `PROCESS_STOP_TIMEOUT` 误警告。
- 正式 2.5.4 的 Windows ZIP、正式签名 APK、调试 APK 和三组 SHA-256 共六个资产全部通过;公开归档内版本、双 HTML 入口、CLI 和官方卸载器一致。
- 正式 2.5.4 五进程卸载返回 `warnings: []`,安装目录、回滚目录、启动器、PID 标记、7420 监听和受管 cloudflared 均清理完成,配置与 Codex 登录态保留;随后无安装状态重装成功。
- 2.5.5 候选只对公网验证的 `HTTP unreachable` 自动重试一次;错误鉴权 HTTP 状态仍不重试,服务模块和真实 Quick Tunnel 验证通过。
- 正式 2.5.5 只对公网验证的 `HTTP unreachable` 自动重试一次;错误鉴权 HTTP 状态仍不重试,正式资产、服务模块和真实 Quick Tunnel 验证通过。
- 2.5.6 候选已通过本地二维码真实解码、手机窄屏、配对页公网 404、Quick Tunnel 停止清理、长时事件回放/鉴权浸泡和双平台 CI。
- 当前工作树未发现 AWS、Google、GitHub、OpenAI 私钥或常见访问令牌格式。
- 文档中的历史真实公网地址、个人用户目录和本机工作区路径已替换为 RFC 5737 示例地址或通用示例路径。
- README 截图已人工查看;工作区、会话、地址和消息均为虚构内容。图片元数据未发现用户名、路径、GPS 或设备标识。
Expand All @@ -49,5 +50,5 @@
1. 处置历史 Google/Firebase key 并保留处置证据。
2. 审阅 App Server schema 漂移,更新协议兼容说明。
3. 发布与当前 `main` 同一提交对应的新版本和 SHA-256 文件。
4. 2.5.5 Release 发布后,从正式归档执行升级;如能复现首次公网不可达,确认自动第二次成功,否则至少确认普通一次成功、三项鉴权验证全绿和停止清理
4. 2.5.6 Release 发布后,从正式归档执行升级,确认二维码可扫码、三项公网鉴权验证全绿、消息浸泡无序号倒退并能停止清理
5. 启用 Dependabot;条件允许时增加 CodeQL 或等价静态分析。
4 changes: 2 additions & 2 deletions docs/release-notes-2.5.5.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@
- 自动化验证 `PUBLIC_AUTH_VERIFY_FAILED + HTTP 200` 不重试,仍返回失败。
- 真实 Quick Tunnel 通过公网健康、未登录 HTTP 401、未登录 WebSocket 拒绝和停止清理。

## 候选边界
## 正式发布结果

GitHub Release 工作流、正式资产校验和公开归档安装回归完成前,2.5.5 仍是候选版本。Quick Tunnel 是 Cloudflare 提供的临时免费入口,地址会变化且没有 SLA;自动重试只减少瞬时传播抖动,不能替代固定 Tunnel 或 Tailscale。
GitHub Release 工作流、公开资产校验和正式归档安装回归均已完成,2.5.5 已正式发布。Quick Tunnel 是 Cloudflare 提供的临时免费入口,地址会变化且没有 SLA;自动重试只减少瞬时传播抖动,不能替代固定 Tunnel 或 Tailscale。
53 changes: 53 additions & 0 deletions docs/release-notes-2.5.6.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# CX-Codex 2.5.6:手机扫码配对与更完整的稳定性门禁

2.5.6 聚焦新人第一次从电脑连接手机的实际步骤:手机访问入口现在更容易找到,本机配对页可以直接扫码打开临时地址。同时,长时浸泡测试开始持续核对消息事件回放和公网鉴权,避免服务看似健康但消息接收或访问边界已经退化。

## 本版变化

- 设置中的“手机访问”移动到基础设置之后,不再需要先滚过套餐余量和权限控制。
- 仅限本机的 `/local-setup` 配对页新增二维码,手机相机可直接打开当前已验证的临时地址。
- 二维码只包含公网地址,不包含访问密码;在本机生成,不请求第三方二维码服务。
- 配对页继续使用 `no-store` 和禁止脚本的 CSP,通过公网 Host 访问仍返回 404。
- 长时稳定性浸泡逐样本验证事件回放结构、`latestSeq` 单调性,以及公网未登录 Codex API 始终返回 HTTP 401。
- 浸泡报告新增回放失败、鉴权失败和事件序号倒退汇总,便于区分服务健康、消息接收与公网安全问题。

## 安装或升级

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

同一条命令可用于首次安装、升级和修复。它会选择最新正式 Release、校验 SHA-256,并保留用户配置、Codex 登录态和工作区。

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

```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 缓存。

## 验证

- Linux 构建与 Windows bootstrap smoke 均通过。
- 本机配对页在 393 × 852 下无横向溢出,二维码宽度为 220px。
- 从真实页面截图解码二维码,结果与服务端当前 `publicUrl` 完全一致。
- 真实 Quick Tunnel 通过公网健康、未登录 HTTP 401、未登录 WebSocket 拒绝、配对页公网 404 和停止清理,残留 cloudflared 数量为 0。
- 7420 前端 21 个表面回归通过,覆盖主页、手机抽屉、折叠屏、输入框、消息尾部、恢复与任务状态。
- 完整 Release 验证通过构建、服务模块、CLI、Release 归档和 npm package smoke。

## 边界

Quick Tunnel 免费、免注册且不需要自有服务器,但地址临时、没有 SLA,也不支持 SSE;CX-Codex 会使用 WebSocket 和轮询恢复链路。二维码不会把密码写入 URL,因此扫码后仍需手动输入密码。

本版没有扩大对最新 Codex App Server 能力的公开承诺。当前 schema audit 仍记录上游漂移,协议能力继续以仓库兼容矩阵和 candidate review 为准。

正式标签发布前,本版仍按候选版本审查;只有 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.5",
"version": "2.5.6",
"description": "CX-Codex Web UI and browser bridge for Windows, Linux, Android, LAN, and remote self-hosted access",
"type": "module",
"license": "MIT",
Expand Down