|
| 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 |
0 commit comments