# v3.12.1 ## 新增功能 - OpenAI 与 xAI 客户端身份统一在「系统设置 → 上游配置」管理。xAI 支持跟随最新 Grok CLI 版本或固定版本、预览请求身份,并可为 API 密钥单独设置覆盖 - 密钥使用统计页新增「密钥配置」,持有者登录后可复制当前密钥的 Codex 配置,选择是否启用 WebSocket,或唤起 CCSwitch 导入;管理员密钥页复用同一配置弹窗 - 表格列支持拖动排序和方向键调整,列顺序与显隐偏好保存在当前浏览器,可一键恢复默认设置 - 管理端用量及错误记录显示关联密钥的当前名称;费用明细新增「长上下文」标识,按请求实际采用的价格区间记录,不按当前价格倒推历史标识 ## 问题修复 - OpenAI 可选账号全部额度耗尽时,HTTP 与 WebSocket 返回 `429 / usage_limit_reached`,让 Codex 客户端停止本轮自动重试;其他可用 Provider 和可安全恢复的续写仍按原有规则尝试恢复 - 修复 OpenAI 额度窗口到期后仍显示旧用量的问题:有用量的正常账号也会在重置时间两分钟后主动复核,已耗尽账号继续周期复核以发现上游提前重置;仅在取得上游结果后更新额度状态 - Responses 输入中显式指定 `type: "message"`、`role: "system"` 的消息会转换为 Codex 接受的 `developer`,保留消息内容、顺序和其他字段,HTTP/SSE 与 WebSocket 使用一致规则 - 修复在线更新的发行通道筛选:正式版只接收同一大版本内更新的正式版,alpha、beta、rc 仅在同一目标版本内向前晋级,exp 仅接收同一轮实验的后续编号;不支持更新的构建不再显示可用更新,检查失败单独提示 - 更新 OpenAI TLS 依赖和握手基线,与 Codex Desktop 26.915 所用版本对齐 ## 体验优化 - 改善浅色主题中表格、输入框与按钮的层次和对比度,统一悬停及焦点反馈,优化表格行过渡和列拖动高亮 - 调整密钥额度、账号用量、使用统计与备注的布局和文字层级,精简周额度标签 ## 升级说明 - 从 v3.11.0 升级不新增数据库迁移,已发布的 `0001`~`0016` SQL 及冻结清单保持不变 - 如需保留 OpenAI 数据驻留约束,请在启动新版本前将 `openai.wire_profile.residency` 移到 `openai.residency`。旧 `openai.wire_profile` 和 `xai.wire_profile` 不再读取;数据库中已有的 OpenAI 身份保留,原先在 YAML 中定制的 xAI 身份需在管理端重新设置,未设置时使用内置 Linux x86_64 身份并跟随最新版本 - 旧环境变量 `CPR_UPDATE_CHANNEL` 不再参与版本选择,可移除;升级后的发行通道由当前版本号决定。实验版切换正式版仍需使用独立数据库迁移业务数据,不能直接复用实验数据库 ## v3.12.1 补充更新 - 修复 OpenAI Responses 请求将 `input` 设为字符串时返回 `Input must be a list` 的问题:自动展开为一条用户文本消息,HTTP/SSE 与 WebSocket 使用一致规则 - 系统概览不再显示「密钥名称」列,使用统计保留该列并缩小列宽;增强平台分段选择器的背景对比度 - 密钥使用趋势的空状态统一使用基础组件,调整「并发上限」和「每分钟请求」的图标与文字对齐 - 创建和编辑密钥时,将 OpenAI 与 xAI 上游身份收拢到同一区域,平台切换与「全局配置 / 独立配置」放在同一行,减少表单占用空间;两个平台仍各自保留配置 - 从 v3.12.0 升级不新增数据库迁移,也无需调整配置