Claude Code Haha v0.2.9
这是一个围绕 ChatGPT Official、统一 AI 网络设置、会话分支、Context Compact 可视化、Provider 兼容性和桌面稳定性 的版本。
相比 v0.2.8,本次最重要的变化是把 ChatGPT Official 作为桌面端一等 provider 接入:用户可以在 Settings 里选择 ChatGPT Official,通过 OpenAI OAuth 登录,使用内置模型目录,并让会话运行时自动走 OAuth token 和对应的 Codex runtime 环境。与此同时,本次把 AI 请求代理和超时设置统一到 General Settings,补齐 OpenAI / DeepSeek / Claude-compatible provider 的一批兼容性问题,并继续打磨桌面会话体验:历史消息可以直接创建分支,context compact 会作为时间线状态显示,后台任务、运行中会话、重试等待和输入布局都更清楚。
Highlight
- ChatGPT Official 正式接入桌面端:Providers 里新增 ChatGPT Official 内置 provider,支持 OpenAI OAuth 登录、登出、状态展示、授权链接 fallback、官方模型目录和 OAuth runtime env 注入。
- OpenAI OAuth 存储更可靠:OAuth token 改为统一文件存储,并针对旧 token、secure-storage cache、env-pinned OAuth 文件和半写入文件补齐防护,避免旧凭据在重启后被错误复活。
- 统一 AI 网络设置:General Settings 新增 AI 请求代理和超时设置,支持 system / manual proxy,provider runtime、OpenAI-compatible proxy 和会话请求会使用同一套网络配置。
- 历史消息可直接分支:完整 turn 的用户消息和助手消息现在可以直接创建分支会话;分支会保留正确的历史链、workdir、worktree 和相关 transcript 元数据。
- Context Compact 成为可读状态:手动或自动 compact 会在聊天时间线中显示进行中状态和完成摘要,支持展开查看摘要、触发方式、token 和消息数量信息。
- Provider 兼容性补强:DeepSeek reasoning 历史、Claude attribution、Claude Code billing CCH、Codex OAuth token exchange、OpenAI Codex context window 和直接 TUI provider env 都补上了更稳的兼容路径。
- 桌面聊天状态更透明:会话运行状态会同步到 TabBar 和 Sidebar;停止后的后台任务不会继续显示为 alive;API retry 会在聊天区展示重试次数、等待时间和错误摘要。
主要更新
- Providers 设置页新增 ChatGPT Official 内置卡片,和 Claude Official 一起固定展示在 provider 列表顶部。
- 新增桌面端 ChatGPT Official 登录组件,支持启动 OAuth、轮询状态、展示账号、登出,以及浏览器无法打开时复制授权链接继续完成登录。
- 新增 Haha OpenAI OAuth API 和桌面 store,登录状态不会回传 token 本体,回调路径统一走桌面 server,并兼容旧
/callback/openai路径。 - ChatGPT Official provider 使用
openai_oauthruntime kind,自动注入OPENAI_CODEX_OAUTH_FILE、OpenAI Codex endpoint、模型映射和 context window 信息。 - Model Selector 新增 ChatGPT Official 分组和模型目录,切换 provider 时会同步默认模型,避免 ChatGPT / Claude / 自定义 provider 之间残留错误模型。
- OpenAI OAuth token 存储统一到
~/.claude/cc-haha/openai-oauth.json,并对 refresh token、id token、client id、过期刷新和原子写入做了更完整处理。 - General Settings 新增 AI network 区域,支持设置 AI 请求 timeout、system proxy 或手动 HTTP(S) proxy,并带有输入校验和保存反馈。
- Provider runtime env 被拆出独立服务,减少 stale proxy / stale provider env 泄漏到直接 TUI、conversation service 或 provider 请求里。
- OpenAI-compatible proxy 会使用统一 AI 网络设置,DeepSeek / opencode.ai 场景会保留 reasoning content 和 thinking toggle。
- 会话历史消息新增“从这里分支”入口,新分支会话会从目标消息截断,并保留必要的 session metadata、worktree state、PR link、file snapshot 和 content replacement。
- Message action bar 将复制和分支入口合并为内联控件,减少悬浮按钮遮挡消息气泡或在长文本中跳动的问题。
- Context compact 期间聊天区显示 compacting 状态;compact 完成后展示可展开的 summary divider,并从 transcript 恢复为结构化状态。
- API retry 期间桌面聊天区会展示 retry 状态、attempt、HTTP status / network error、等待倒计时和错误摘要,减少长时间等待时的不透明感。
- Sidebar 和 TabBar 会根据 tab 状态和 chat store 状态共同展示运行中会话;后台 task 被 TaskStop / KillShell 停止后会更新为 stopped。
- Settings 里的 Plugins / Skills 浏览体验继续打磨,Skills 支持搜索,Plugins 统计区和按钮布局更适合窄屏和宽屏。
- 桌面 composer 多行输入时工具栏改为自然占位,不再覆盖 textarea 最后几行。
- macOS 桌面 CLI launcher 在交互式 TTY 下使用更稳定的 wrapper;原生 Terminal 直接启动 TUI 时保留直接输入,不再被 shell env capture 干扰。
- AGENTS.md 更新了更紧凑的 agent operating contract,继续强调 release notes、质量门禁和本仓库的自动化发布约束。
问题修复
- 修复 ChatGPT Official 选择后只保存 metadata、重启后丢失或回退到其他 provider 的问题。
- 修复 ChatGPT OAuth 授权在回调前失败、Codex OAuth URL 被拒绝、token exchange 请求形状不匹配等问题。
- 修复旧 OpenAI OAuth token、secure-storage cache 或 legacy token 文件在新登录状态中被错误复活的问题。
- 修复 provider settings JSON 写入 ChatGPT OAuth runtime env,导致用户配置文件混入运行时专用变量的问题。
- 修复直接 TUI 启动时沿用 stale provider proxy env,造成 provider 请求走错代理或错误 provider 环境的问题。
- 修复 General 里的 AI proxy timeout 未真正覆盖 proxy 请求超时的问题。
- 修复 OpenAI Codex context window 与自动 compact 判断不一致的问题。
- 修复 DeepSeek reasoning 历史在 OpenAI Chat proxy 转换中丢失,导致多轮推理上下文无法 round-trip 的问题。
- 修复 Claude attribution 只按 provider 而不按模型名判断,导致 OpenAI-compatible provider 归因策略不准确的问题。
- 修复 Claude Code billing header / CCH 签名在代理转换后不兼容部分上游校验的问题。
- 修复 macOS GUI 启动或 launcher 启动时 sidecar 在交互 TTY 下被 job control 暂停的问题。
- 修复停止后台任务后,桌面 UI 仍把任务或会话显示为运行中的问题。
- 修复运行中会话切换 tab 或导航到 Settings 后,Sidebar / TabBar 状态指示不一致的问题。
- 修复多行输入时 composer 工具栏覆盖输入内容的问题。
- 修复 Settings 扩展浏览页在窄屏下统计卡片、按钮和说明文字容易挤压的问题。
- 修复 workspace preview 相关测试时序不稳定,降低覆盖验证中的偶发失败。
验证
- 相关提交已新增和更新 ChatGPT Official provider、OAuth API、OAuth storage、OpenAI token exchange、model catalog、providerStore、ModelSelector、Settings provider UI 和 General Settings 网络配置测试。
- 相关提交已新增和更新 provider runtime env、network settings、OpenAI-compatible proxy、DeepSeek reasoning、Claude attribution、Claude Code CCH、Codex context window 和 auto compact 相关测试。
- 相关提交已新增和更新 session branching、desktop sessions API、MessageList、chatStore、sessionStore、Sidebar、TabBar、StreamingIndicator、background task stopped 状态和 API retry 状态测试。
- 相关提交已新增和更新 desktop CLI launcher、terminal shell environment、Settings Skills / Plugins、composer toolbar、workspace preview、conversation service 和 WebSocket memory event 回归测试。
- 多个功能分支分别跑过 targeted server / desktop / provider / OAuth / proxy / MessageList / Settings / ModelSelector / chatStore 测试;
v0.2.9发布前仍建议再跑一次bun run verify,并在有真实账号和网络条件时补一次 ChatGPT Official OAuth 登录 + 真实请求 smoke。
其他说明
- GitHub Release 正文继续以
release-notes/v0.2.9.md作为来源,发布时无需手动复制 Markdown。 - ChatGPT Official 依赖真实 OpenAI / ChatGPT OAuth 登录状态;没有账号或网络环境时,可以先跳过真实请求,只验证 UI、模型目录和状态恢复。
- 本版本包含网络代理、OAuth token、provider runtime env 和 local config 持久化相关变化;升级后如果遇到 provider 请求异常,请优先检查 Settings -> General 的 AI network 设置和 Providers 里的当前 provider。
- Context Compact 展示和 API retry 状态属于聊天时间线体验变化,发布前建议用一段长会话和一个可控失败的 provider 请求做人工复核。
安装说明
macOS
首次打开如果提示"已损坏"或"无法验证开发者",请执行:
:::bash
xattr -cr /Applications/Claude\ Code\ Haha.app