mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
This records the v0.2.9 release notes and aligns desktop package, Tauri, and Cargo metadata so the release script can create the final annotated tag after manual validation. Constraint: Release tag creation is intentionally deferred for manual smoke validation. Rejected: Run scripts/release.ts now | it would create the release commit and annotated tag before manual review. Confidence: high Scope-risk: narrow Directive: Do not create v0.2.9 tag until the manual release check is complete. Tested: bun run scripts/release.ts 0.2.9 --dry Tested: bun run check:native Not-tested: Full bun run verify and live ChatGPT Official OAuth smoke
8.9 KiB
8.9 KiB
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
首次打开如果提示"已损坏"或"无法验证开发者",请执行:
xattr -cr /Applications/Claude\ Code\ Haha.app