Skip to content

Codex3N 1.3.0-3n.3

Choose a tag to compare

@nk33-dev nk33-dev released this 13 Sep 03:55
· 668 commits to personal since this release

Codex3N 1.3.0-3n.3 基于官方 CodexPlusPlus 1.3.0,重点修复配置与会话数据的可靠性问题、补齐发布门禁,并按个人版定位移除广告子系统。

重要变更

  • 移除广告/推荐内容子系统:不再从第三方仓库(BigPizzaV3/Ad-List)拉取推荐内容,也不再内置赞助商图片与置顶推荐位。管理器「推荐内容」页、概览页赞助商区块、Codex++ 面板的「推荐内容」标签一并移除。供应商预置、供应商配置、模型列表与更新检查都不受影响。

数据可靠性

  • 修复配置可能被写坏后静默清空的问题:settings.json 的临时文件名改为「进程号 + 序号 + 随机串」。以前固定是 settings.json.tmp,管理器进程与 launcher 的 bridge 并发写时,先写完的一方可能把对方没写完的文件顶到正式位置;而解析失败会静默回落到出厂默认值,表现就是「配置全没了」且没有任何报错。
  • 配置解析失败时不再静默:原文件会被改名为 settings.json.corrupt-<时间戳> 保留证据,并写一条诊断日志。
  • 配置的「读 → 合并 → 写」现在整体持跨进程文件锁,两个进程同时保存不会再互相覆盖字段(后写者凭旧内容写入导致先写者的字段消失)。
  • .codex-global-state.json 改用统一原子写,避免写到一半时主文件与 .bak 一起损坏。
  • 会话删除快照不再无限增长:快照目录增加保留上限并自动裁剪(撤销入口只有 10 秒,更早的快照没有任何消费者,而每份都内联了 rollout 全文)。

修复问题

  • 撤销会话时,会话索引恢复失败不再被吞掉,会写进撤销结果提示;「本地数据库已删除但文件删除失败」也不再被改写成「已清理残留」,避免界面显示成功而 rollout 文件仍留在磁盘上。
  • 卸载不再谎报成功:用户数据未清理(或被递归删除守卫拦下)时会明确提示;Windows 下快捷方式删除失败同样会报出来。
  • 修复 watcher 按进程文件名杀进程会误杀另一份 Codex3N 的问题(例如开发构建的 target\debug 实例),现在要求进程映像与当前安装同目录;查不到映像路径时保持原有行为,避免因权限问题导致重启失败。
  • watcher 拉起 launcher 失败不再静默,会写诊断日志(以前失败时界面一切正常,只是 Codex 起不来)。
  • 注入脚本的模型补丁失败不再只写进一个没人读的全局数组,现在会送进诊断通道;失败记录也加了上限,避免高频路径下内存无界增长。
  • 英文界面补齐 75 条此前必然回退中文的文案(会话导入与分享、Dream Skin 社区、悬浮球与回答大纲、脚本市场、模型配置与 Sub2API 倍率等),并清理 141 条已失效的词典条目;npm test 现在会自动校验词典与代码里的调用点是否完全一致,漂移会被挡住。
  • 语音按钮兜底逻辑去掉 "mic" 裸子串匹配(dynamic/atomic/economic 等会被误命中并强行解除禁用状态),只扫描处于禁用状态的按钮,降低常驻开销。
  • 清理 stepwise 中未被使用的 MAX_PROMPT_LENGTH:prompt 按设计要求是「可直接发送的完整消息」,不做截断。

发布与工程改进

  • Release 增加前置测试门禁:cargo fmt --check、cargo test --workspace、前端 npm test / npm run check 全部通过后才会构建安装包;同时新增「标签 == Cargo.toml 版本」校验。此前安装包构建不看测试结果,测试是红的也能发出去。
  • 新增 scripts/release.ps1:发布统一走脚本(校验分支/工作区/版本格式/标签是否已存在 → 本地跑一遍门禁 → 推送分支与标签 → 创建 Release),并把仓库写死为 nk33-dev/Codex3N,避免 gh 默认解析到上游仓库而误操作。
  • GitHub 默认分支切换为 personal。
  • 修复全仓 rustfmt 漂移,cargo fmt --check 现在可以通过,格式检查已纳入 CI 与发布门禁。
  • 修复 macOS 打包脚本静默失败:hdiutil convert 连续失败后脚本仍然退出 0,CI 只能看到「上传时找不到 .dmg」,真正原因被吞掉;现在用独立标记判断并在失败时报错。卸载挂载镜像同时改为按设备(/dev/diskN)强制弹出——Finder 持有镜像时会先卸掉卷目录再报 Resource busy,旧逻辑按已经消失的挂载点重试等于什么都没做,紧接着的 convert 必然报 Resource temporarily unavailable。
  • 发布门禁在 cargo test 之前补上前端构建:管理器 crate 的 tauri::generate_context! 会在编译期检查 frontendDist(../dist),干净检出缺这个目录会直接 proc macro panic;macOS 校验步骤也新增 .dmg 存在性检查。
  • 清理 launcher 中未使用的参数,去掉各平台编译都会出现的 unused variable 警告。

Codex3N 适配

  • 保留 Codex3N 的供应商、模型菜单、本地代理、会话管理、Dream Skin 与模型 RPC 兼容适配。