Skip to content

Commit 87638b1

Browse files
authored
chore(release): v2.1.15 — Codex Desktop UX 深化 + per-provider 修复综合 (#267)
- src-tauri/Cargo.toml + tauri.conf.json + Cargo.lock: 2.1.14 → 2.1.15 - README zh/en: 当前版本号回填 v2.1.15 - CHANGELOG: 加 v2.1.15 综合段(8 项 PR),清掉 2 个 stale Unreleased (#153 已 2026-05-13 merge, #254 fix 折进 v2.1.15) - release-notes/v2.1.15.md: 单 ### 主题 + bullets + zh/en(v2.1.7 模板) 覆盖 PR:#250 (#248) / #252 / #255 (#253) / #256 (#254) / #260 / #261 (#258) / #263 (#262) / #265 (#264)
1 parent c76589a commit 87638b1

7 files changed

Lines changed: 61 additions & 13 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@
22

33
逐版本要点。详细变更见 [GitHub Releases](https://github.com/Cmochance/codex-app-transfer/releases)`release-notes/v*.md`
44

5-
## UnreleasedPR #153 draft
5+
## v2.1.152026-05-26
66

7-
**Anthropic Messages 协议适配**:新增 canonical `apiFormat=anthropic_messages`,将 Codex CLI Responses 请求转换到 Anthropic `/v1/messages`,并把 Anthropic Messages SSE 还原为 Responses SSE。当前 PR 已覆盖 text、thinking、tool_use、tool_result repair、`previous_response_id`、compact response、upstream error、provider test/model list 与 UI 保存显示路径
7+
**Codex Desktop UX 集成 + 通用 provider 修复综合更新**:本版主要把 transfer 跟 Codex Desktop 的集成面继续做深(主题 / context 圆环 / system prompts i18n / plugin-unlock 强化),同时收掉一批 per-provider reasoning / autocompact 真机暴露的 bug
88

9-
Claude preset 暂不开放:需要 P7 真实 Claude text、tool-call、`previous_response_id`、upstream error 验证通过后再加入默认 preset。
9+
- **Codex Desktop 主题页**(PR #265 / issue #264):Sidebar 加 Theme 页,内置 5 套主题(`carton` 带浮动看板娘 + `changli` / `azurlane` / `nailin` / `zani` 单背景),通过 CDP `Page.addScriptToEvaluateOnNewDocument` 一次注入持久(无 daemon)。资源 `include_bytes!` 嵌进 binary(~5MB)。跟 Plugin Unlock 完全独立 toggle(默认关)。支持 user 上传自定义主题(1:1 crop)+ 隐藏 / 删除 + 缩略图实拍(GaussianBlur 防隐私)
10+
- **system prompts 跟随 transfer 语言**(PR #263 / issue #262):注入 Codex 的 system prompts 改读 transfer UI 语言设置,中文 UI 下 Codex 不再固定英文回复
11+
- **Codex Desktop context 圆环**(PR #261 / issue #258):transfer 管理 context 使用率 atom,展示进度环 + 阈值告警 settings
12+
- **CAT_SKIP_MODEL_PROVIDER_WRITE env**(PR #260):配 verify 环境跳过 `model_provider` 字段写入,验证 Codex 自己持久化时不被 transfer 反复覆盖
13+
- **plugin-unlock 注入失败原因分流 + 15s 重试 + 心跳回收**(PR #255 / issue #253):macOS 改用 `--remote-debugging-port=0` + 异步 poll `DevToolsActivePort`(借 codex-theme launcher 同款模式),消除原 `try_bind` 预检与 Chromium bind 之间的 race window
14+
- **Per-provider `reasoning_effort` 策略**(PR #256 / issue #254):新建 `crates/registry/src/reasoning_effort_policy.rs` 注册表,DeepSeek 真实 xhigh→max 到达;Kimi/GLM/MiMo/MiniMax/Qwen 不传该字段(LiteLLM 白名单实证不承认);自定义 provider 保守 fallback。provider 识别改用 `id` / `name` / `base_url` substring(跟 `provider_looks_like` 同范式),修 healing UUID 让 precise id 匹配永远不命中导致整修复失效的真机 bug;补阿里云百炼 `maas.aliyuncs` / `百炼` needle
15+
- **GLM-5.1 autocompact**(PR #250 / issue #248):新建 model 级 `compact_thinking_policy` 注册表
16+
- **docs/ 整目录 gitignored + followup 迁 Linear**(PR #252):内部计划文档不入仓,跨 session followup 改 Linear (MOC-N) 跟踪
1017

11-
## Unreleased — fix #254
12-
13-
**Per-provider `reasoning_effort` 策略**:修复 DeepSeek xhigh/max 档位被一刀切降级到 high 的问题(issue #254)。新建 `crates/registry/src/reasoning_effort_policy.rs` 注册表:DeepSeek 真实 xhigh→max;Kimi/GLM/MiMo/MiniMax/Qwen 不传 `reasoning_effort` 字段(LiteLLM 白名单实证不承认);自定义 provider 保守 fallback。同时删除已冗余的 `deepseek_max_effort` preset 死字段。
14-
15-
**Provider 识别用自然主键(substring)而非 id 精确匹配**:实机抓 wire 验证(2026-05-25)暴露:本项目 healing 流程会把 builtin preset 的 id 换成 UUID(`34fe2433`),precise `provider.id == "deepseek"` 匹配在用户真实 saved config 上永远不命中,issue #254 修复对真实用户失效。改用 `provider.id` / `name` / `base_url` 三字段大小写不敏感 substring 匹配(跟 `provider_looks_like` 同款范式)。同时 audit 出阿里云百炼 (Token Plan) 第二个漏网点:baseUrl `token-plan.cn-beijing.maas.aliyuncs.com` 不含 `dashscope`,name 不含 `bailian`,补 needle `maas.aliyuncs` + `百炼` 兜底。
18+
完整改动:[v2.1.14...v2.1.15](https://github.com/Cmochance/codex-app-transfer/compare/v2.1.14...v2.1.15)
1619

1720
## v2.1.14 — 2026-05-23
1821

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.en.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Codex App Transfer is a lightweight desktop config + forwarding tool for the **O
2727

2828
After starting forwarding, Codex App talks to this tool at `127.0.0.1:18080`. Closing the window minimizes the app to the system tray; right-click the tray icon and choose "Exit" to fully quit.
2929

30-
Current version **v2.1.14** (see [Changelog](CHANGELOG.md) and [Releases](https://github.com/Cmochance/codex-app-transfer/releases)).
30+
Current version **v2.1.15** (see [Changelog](CHANGELOG.md) and [Releases](https://github.com/Cmochance/codex-app-transfer/releases)).
3131

3232
## Preview
3333

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Codex App Transfer 是一个面向 **OpenAI Codex APP** 的轻量桌面配置 +
2727

2828
启动转发后,Codex APP 通过本机 `127.0.0.1:18080` 与本工具通信。关闭窗口会缩到系统托盘继续运行,右键托盘"退出"才完全退出。
2929

30-
当前版本 **v2.1.14**(详见 [Changelog](CHANGELOG.md)[Releases](https://github.com/Cmochance/codex-app-transfer/releases))。
30+
当前版本 **v2.1.15**(详见 [Changelog](CHANGELOG.md)[Releases](https://github.com/Cmochance/codex-app-transfer/releases))。
3131

3232
## 界面预览
3333

release-notes/v2.1.15.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Codex App Transfer v2.1.15
2+
3+
## 中文
4+
5+
### Codex Desktop UX 深化 + 通用 provider 修复综合更新
6+
7+
本版主要把 transfer 跟 Codex Desktop 的集成面继续做深(主题 / context 圆环 / system prompts i18n / plugin-unlock 强化),同时收掉一批 per-provider reasoning / autocompact 真机暴露的 bug。
8+
9+
- **Codex Desktop 主题页**(PR #265 / issue #264):Sidebar 加 Theme 页,内置 5 套主题(`carton` 带浮动看板娘 + `changli` / `azurlane` / `nailin` / `zani` 单背景),通过 CDP `Page.addScriptToEvaluateOnNewDocument` 一次注入持久(无 daemon)。资源 `include_bytes!` 嵌进 binary(~5MB),运行时 base64 → data URI。跟 Plugin Unlock 完全独立 toggle(默认关)。支持 user 上传自定义主题(1:1 crop)+ 隐藏 / 删除 + 缩略图实拍(GaussianBlur 防隐私)
10+
- **system prompts 跟随 transfer UI 语言**(PR #263 / issue #262):注入 Codex 的 system prompts 读 transfer UI 语言设置,中文 UI 下 Codex 不再固定英文回复
11+
- **Codex Desktop context 圆环 atom**(PR #261 / issue #258):transfer 管理 context 使用率 atom,展示进度环 + 阈值告警 settings
12+
- **`CAT_SKIP_MODEL_PROVIDER_WRITE` env**(PR #260):配 verify 环境跳过 `model_provider` 字段写入,验证 Codex 自己持久化时不被 transfer 反复覆盖
13+
- **plugin-unlock 注入失败分流 + 15s 重试 + 心跳回收**(PR #255 / issue #253):macOS 改用 `--remote-debugging-port=0` + 异步 poll `DevToolsActivePort`,消除原 `try_bind` 预检跟 Chromium bind 之间的 race window
14+
- **Per-provider `reasoning_effort` 策略**(PR #256 / issue #254):新建 `crates/registry/src/reasoning_effort_policy.rs` 注册表,DeepSeek 真实 `xhigh``max` 到达;Kimi / GLM / MiMo / MiniMax / Qwen 不传该字段(LiteLLM 白名单实证不承认);自定义 provider 保守 fallback。Provider 识别改用 `id` / `name` / `base_url` substring 匹配(修 healing UUID 让 precise id 匹配永远不命中导致整修复失效的真机 bug),补阿里云百炼 `maas.aliyuncs` / `百炼` needle
15+
- **GLM-5.1 autocompact**(PR #250 / issue #248):新建 model 级 `compact_thinking_policy` 注册表
16+
- **docs/ 整目录 gitignored + followup 迁 Linear**(PR #252):内部计划文档不入仓,跨 session followup 改 Linear (MOC-N) 跟踪
17+
18+
### 验证
19+
20+
- `cargo fmt --check` / `cargo check --workspace`
21+
- `cargo test --bin codex-app-transfer codex_theme_injector::` 8 个单测 pass
22+
- 真机 macOS:Codex Desktop 主题 5 套切换 + Plugin Unlock 各自独立 toggle 无干扰;DeepSeek max 档实机抓 wire 验 reasoning_effort=max 真到达
23+
- Devin pre-merge:ThemeStatus serde PascalCase 对齐前端 / 测试过滤 custom theme bug 修复
24+
25+
## English
26+
27+
### Codex Desktop UX integration + per-provider fixes — composite update
28+
29+
This release continues deepening the transfer / Codex Desktop integration surface (themes, context ring, system-prompts i18n, plugin-unlock hardening) while cleaning up per-provider reasoning and autocompact bugs surfaced by real-device usage.
30+
31+
- **Codex Desktop Theme page** (PR #265 / issue #264): new Theme entry in sidebar, 5 built-in themes (`carton` with floating mascot + `changli` / `azurlane` / `nailin` / `zani` background-only), injected once via CDP `Page.addScriptToEvaluateOnNewDocument` (no daemon). Assets `include_bytes!`-embedded in binary (~5MB), base64 → data URI at runtime. Independent toggle from Plugin Unlock (default off). User-uploaded custom themes (1:1 crop) + hide / delete + real-shot thumbnails (GaussianBlur for privacy)
32+
- **System prompts follow transfer UI language** (PR #263 / issue #262): Codex system prompts read the transfer UI locale, so Codex no longer always replies in English under a zh-CN UI
33+
- **Codex Desktop context ring atom** (PR #261 / issue #258): transfer manages the context-usage atom, exposes a progress ring + threshold-alert settings
34+
- **`CAT_SKIP_MODEL_PROVIDER_WRITE` env** (PR #260): verify-environment switch to skip `model_provider` writes so we can confirm Codex's own persistence isn't being overwritten by transfer
35+
- **plugin-unlock failure-reason classification + 15s retry + heartbeat reaping** (PR #255 / issue #253): macOS switches to `--remote-debugging-port=0` + async polling of `DevToolsActivePort`, eliminating the race window between the prior `try_bind` precheck and Chromium's actual bind
36+
- **Per-provider `reasoning_effort` policy** (PR #256 / issue #254): new registry at `crates/registry/src/reasoning_effort_policy.rs` — DeepSeek truly reaches `xhigh` / `max`; Kimi / GLM / MiMo / MiniMax / Qwen drop the field (LiteLLM whitelist confirms upstream doesn't accept it); custom proxies clamp conservatively. Provider matching switches to substring on `id` / `name` / `base_url` (fixing the real-device bug where healing replaces builtin preset id with a UUID and precise id-match never fired); Alibaba Bailian `maas.aliyuncs` / `百炼` needle added
37+
- **GLM-5.1 autocompact** (PR #250 / issue #248): new model-level `compact_thinking_policy` registry
38+
- **`docs/` directory gitignored + followups migrated to Linear** (PR #252): internal planning docs no longer enter the repo; cross-session followups tracked in Linear (MOC-N)
39+
40+
### Verification
41+
42+
- `cargo fmt --check` / `cargo check --workspace`
43+
- `cargo test --bin codex-app-transfer codex_theme_injector::` — 8 unit tests pass
44+
- Real-device macOS: 5 Codex Desktop themes switching + Plugin Unlock both toggle independently without interference; DeepSeek max-tier on-wire verified `reasoning_effort=max` actually reaches the provider
45+
- Devin pre-merge: ThemeStatus serde PascalCase aligned with frontend / `theme_ids_match_all_themes_metadata` filtered to skip custom theme

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "codex-app-transfer"
3-
version = "2.1.14"
3+
version = "2.1.15"
44
description = "Codex App Transfer - Tauri 2 shell"
55
edition.workspace = true
66
rust-version.workspace = true

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "Codex App Transfer",
4-
"version": "2.1.14",
4+
"version": "2.1.15",
55
"identifier": "store.alyse.codex-app-transfer",
66
"build": {
77
"frontendDist": "../frontend"

0 commit comments

Comments
 (0)