# 更新记录 - **v1.2.8** - **Codex 双 Agent 接入** - 新建会话时可选择 Claude 或 Codex,复用 cc-web 现有的多会话、后台进程、断线续挂和文件 I/O 核心逻辑 - 侧边栏按 Agent 隔离会话列表、最近会话记忆与默认新建行为 - Agent 切换入口收进顶部栏标签下拉 - Claude / Codex 各有独立设置入口,Codex 设置简化为 `local/custom + API Profile` - Codex 会话通过 `codex exec --json` / `codex exec resume --json` 对接,stdin 文件喂入 prompt,持久化 thread id 用于续接 - `/model`、`/cost`、`/help` 对 Codex 会话做了适配 - **Codex 本地历史导入** - 扫描 `~/.codex/sessions/` 下的 rollout `.jsonl`,解析用户消息、助手输出、函数调用与 token 使用量后导入到 cc-web - 删除 Codex 会话时同步清理对应 rollout 文件与本地线程元数据 - **图片上传** - Claude 和 Codex 会话均支持图片消息:拖拽、粘贴或点击附件按钮上传 - 客户端自动压缩(WebP),服务端附件缓存(7 天 TTL) - Claude 通过 `--input-format stream-json` 传入 base64 图片,Codex 通过 `--image` 参数传入 - 历史消息仅保留图片文字标签,不渲染原图 - 单条消息最多 4 张图片 - **会话加载体验优化** - 回退并收敛长会话加载策略:最近消息先到,更老消息分批补充 - 新增会话加载遮罩与加载期不可操作状态 - 热会话缓存(最近 4 个,strong/weak 两级命中策略) - 修复切后台再切回时运行中内容短暂消失的问题(`preserveStreaming` 机制) - **主题系统** - 引入完整的主题系统与 CoolVibe Light 视觉方案 - 主题入口从设置页顶部改为「外观 → 界面主题」二级页 - 加载遮罩适配 washi / coolvibe / editorial 三套主题变量 - **移动端交互增强** - 对话区任意位置右滑唤起侧栏、侧栏打开后左滑关闭 - 运行中状态覆盖移动端 cwd 标签显示 - 修复附件按钮、新会话分裂按钮的移动端比例失调 - **其他改进** - 后端重构:spawn spec 与事件解析抽离到 `lib/agent-runtime.js`,Codex rollout 解析在 `lib/codex-rollouts.js` - 新增隔离式回归脚本 `npm run regression`,使用 mock CLI 在临时目录中校验主路径 - 设置页说明卡移除,Codex Web Search 解释文案移除 - 删除确认弹窗按 Agent 动态提示 Claude / Codex 的本地删除影响 - **v1.2.7** - 新增导入本地 CLI 会话:扫描 `~/.claude/projects/` 下的 `.jsonl`,解析后导入到 cc-web,可续接历史对话。 - 新增新建会话指定工作目录:创建会话时弹窗设置 cwd,spawn 子进程时使用该目录,header 显示当前工作路径。 - 新增检查更新功能:设置面板底部「检查更新」按钮,对比本地 CHANGELOG 与 GitHub 最新版本。 - 修复导入历史会话中工具调用显示动态动画的问题:已完成的工具调用统一显示为静态状态。 - **v1.2.6** - 工具调用折叠显示:长任务中散落的工具调用块达到5个时自动折叠入唯一父节点,之后每满5个再次移入同一父节点(两级结构),输出结束后剩余散落项也一并收入;总数不超过5个则完整显示不折叠。 - 新增编辑模板弹窗「获取上游模型列表」:通过 `/v1/models` 端点拉取可用模型,填充到四个模型输入框的下拉建议列表,支持自定义端点地址。 - 修改密码改为按钮+弹窗模式:设置面板中密码修改从内联表单改为独立弹窗,成功后自动关闭。 - 子弹窗关闭按钮样式适配:编辑模板和修改密码弹窗的关闭按钮统一为与主面板一致的风格。 - 新增 AskUserQuestion 选项预览区:左侧选项列表,右侧实时显示选项说明;桌面端 hover 切换,移动端 tap 选中后点确认按钮发送。 - 修复 `~/.claude/settings.json` 写入竞争问题:改为原子写入(先写临时文件再 rename),避免 Claude 子进程读到写了一半的文件导致随机 401 认证失败。 - 修复 `ANTHROPIC_REASONING_MODEL` 被误删问题:补充到 settings.json 白名单,保留该字段不被覆盖。 - 修复删除会话时同步删除 `~/.claude/projects/` 下对应的原生会话历史,遍历所有项目目录确保完整清除。 - 新增删除确认弹窗,支持「确认且不再提示」选项,风格与主界面一致。 - 用户消息支持多行换行显示。 - 修复 AskUserQuestion 选项卡渲染位置:从消息顶部移至底部。 - 修复流式输出与工具调用 UI 共存时的覆盖问题(bubble 拆分为 .msg-text 和 .msg-tools)。 - 新增聊天区自定义滚动条,支持鼠标/触屏拖动,悬停时滑块变宽。 - 会话历史分批异步渲染,切换会话体感延迟大幅降低。 - 修复快速切换会话时旧历史错误渲染到新会话的问题(epoch 校验)。 - 模型配置保存时立即同步写入 `~/.claude/settings.json`,无需触发对话才生效。 - **v1.2.3** - 新增模型配置系统:支持 local(读取本地配置)和 custom(自定义 API 模板)两种模式切换。 - custom 模式通过写入 `~/.claude/settings.json` 实现 API 凭据注入,兼容 cc-switch-web 等配置管理工具。 - 模板配置改为弹窗编辑,界面更简洁;切换至 custom 模式时显示覆盖警告。 - spawn 时增加模型名称校验,防止无效模型参数导致进程静默失败。 - **v1.2.2** - 对齐 Claude Code 原生上下文压缩策略:`/compact` 改为真实下发到 CLI 执行,不再使用本地会话伪重置。 - 补齐超限自动恢复链路:当出现 `Request too large (max 20MB)` 时,自动执行 `/compact` 并在压缩后自动重放上一条失败请求继续运行。 - 增加自动续跑保护:若压缩后仍超限,停止自动重试并提示用户手动缩小输入范围,避免死循环。 - **v1.2.1** - 修复 `AskUserQuestion` 交互选项在 Web 端不显示的问题:后端保留完整结构化参数并前端按问题/选项渲染。 - 新增交互选项快捷填充:点击选项即可把对应答案插入输入框,便于快速确认并发送。 - **v1.2** - 修复消息中包含代码块时可能触发的页面横向溢出问题:窗口不再被长代码撑宽,代码块可在块内横向滚动。 - 优化移动端输入体验:手机浏览器回车键默认换行,不再直接发送消息;消息发送改为手动点击发送按钮。 - **v1.1** - 增加 Windows 环境下 Claude Code CLI 的兼容支持,完善本地部署与启动体验。