mirror of
https://github.com/NanmiCoder/cc-haha.git
synced 2026-05-06 15:20:26 +08:00
Prepare the desktop 0.2.1 release
This records the user-facing 0.2.1 release notes and aligns the desktop package, Tauri config, Cargo manifest, and lockfile package version so the tag-triggered release workflow can publish the intended build. Constraint: GitHub Release body is sourced from release-notes/v0.2.1.md in the tagged commit Constraint: Keep provider and OpenAI login details weak in the release narrative because this release is centered on IM, notifications, context usage, and desktop stability Rejected: Run scripts/release.ts directly | it creates a generic commit message and tag before review of the release narrative Confidence: high Scope-risk: narrow Directive: Do not tag v0.2.1 from a commit that lacks release-notes/v0.2.1.md or mismatched desktop version files Tested: bun run scripts/release.ts 0.2.1 --dry Tested: cargo check Tested: git diff --check Not-tested: Live release gate with real provider credentials in this commit step
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "claude-code-desktop",
|
||||
"private": true,
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
2
desktop/src-tauri/Cargo.lock
generated
2
desktop/src-tauri/Cargo.lock
generated
@@ -473,7 +473,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "claude-code-desktop"
|
||||
version = "0.2.0"
|
||||
version = "0.2.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"portable-pty",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "claude-code-desktop"
|
||||
version = "0.2.0"
|
||||
version = "0.2.1"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/nicegui/nicegui/main/nicegui/static/tauri-schema-v2.json",
|
||||
"productName": "Claude Code Haha",
|
||||
"version": "0.2.0",
|
||||
"version": "0.2.1",
|
||||
"identifier": "com.claude-code-haha.desktop",
|
||||
"build": {
|
||||
"frontendDist": "../dist",
|
||||
|
||||
70
release-notes/v0.2.1.md
Normal file
70
release-notes/v0.2.1.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Claude Code Haha v0.2.1
|
||||
|
||||
这是一个以 IM 接入、桌面通知、上下文统计和桌面运行稳定性为主的版本。
|
||||
|
||||
相比 `v0.2.0`,本次最大的变化是把桌面端的外部协作链路做实:微信和钉钉成为一等 IM 通道,移动端权限审批更顺手,IM adapter sidecar 更稳定;同时桌面系统通知、诊断导出、上下文用量和终端工作目录也做了集中补强。
|
||||
|
||||
这个版本也修复了一批 release 前人工测试中最容易踩到的问题:微信回复不可见、钉钉解绑不清凭据、IM 权限审批在手机上难操作、Telegram sidecar 残留导致收不到消息、桌面 context 用量在回复后下降、空会话显示误导性 loading、macOS 通知权限看似成功但没有真实系统通知等。
|
||||
|
||||
## Highlight
|
||||
|
||||
- IM 接入进入可用阶段:微信和钉钉成为一等 IM 通道,飞书、Telegram、微信、钉钉的配对、权限审批和默认项目行为进一步统一。
|
||||
- IM sidecar 更稳定:各 IM 平台独立 sidecar 运行,并在启动前清理 stale adapter,降低 Telegram 长轮询被旧进程抢占的问题。
|
||||
- 桌面通知更可信:macOS 通知改为原生 UserNotifications 桥接,权限、测试通知和前台展示都能被真实验证。
|
||||
- 上下文用量更接近真实会话:`/context`、桌面 composer 和离线 transcript fallback 统一统计口径,避免回复后用量反而下降。
|
||||
- 诊断与启动错误更可排查:CLI 启动失败、runtime 退出和桌面 API 错误会保留更有用的脱敏上下文。
|
||||
|
||||
## 主要更新
|
||||
|
||||
- 新增微信 IM adapter:支持扫码绑定、配对码、文本消息、图片 / 文件候选提取、回复发送、typing 状态和权限审批。
|
||||
- 新增钉钉 IM adapter:支持 Stream 接入、扫码注册、AI Card 流式输出、权限卡片模板,以及没有模板时的文本授权 fallback。
|
||||
- IM 接入设置页补齐飞书、微信、钉钉、Telegram 四个平台的配置入口、配对管理、默认项目和中英文文案。
|
||||
- IM 权限审批对移动端更友好:单个待审批请求可以用短回复完成 allow / always / deny,多请求并发时仍保留 requestId 防歧义。
|
||||
- 每个 IM 平台现在以独立 sidecar 进程运行,避免 Telegram、飞书、微信、钉钉共享进程时互相影响 SDK loop 或长轮询消费。
|
||||
- 桌面端新增系统通知能力:权限请求、定时任务完成和长任务最终回复都可以触发桌面通知,并复用去重和冷却逻辑。
|
||||
- 桌面端 composer 新增更准确的上下文用量显示,支持活跃 CLI inspection、空会话初始状态、断开会话的 transcript fallback 和模型窗口变化。
|
||||
- 终端页和会话内终端会优先在用户当前工作目录打开,提升为独立终端 tab 后仍保留 cwd。
|
||||
- 诊断页可以查看最近错误、复制错误摘要、打开日志目录、清理日志,并导出脱敏诊断包。
|
||||
|
||||
## 问题修复
|
||||
|
||||
- 修复钉钉机器人解绑后 Client ID / Secret 仍残留的问题;现在通过显式 unbind endpoint 清理凭据,不再依赖会丢失 `undefined` 字段的通用配置合并。
|
||||
- 修复微信 agent 回复不可见的问题:发送消息和 typing API 现在会校验 iLink 业务 ret code,失败时会重试或把队列错误反馈到会话。
|
||||
- 修复微信长任务期间 typing 状态过早消失的问题,长工具执行期间会持续维护 typing,并在完成或失败后取消。
|
||||
- 修复钉钉权限请求后最终答案可能更新到旧 AI Card 上方的问题;权限请求现在会结束当前流式卡片,审批后新建卡片展示结果。
|
||||
- 修复 Telegram 等 IM adapter 因旧 sidecar 残留或多平台共享进程导致长轮询被抢占的问题;桌面端会清理 stale sidecar,并把每个 IM 平台拆成独立 sidecar 进程。
|
||||
- 修复 IM adapter credential 文件权限和配对文件写入安全问题,配置目录和凭据文件会尽量使用 owner-only 权限。
|
||||
- 修复空桌面会话 context snapshot 全为 0 时显示成 0% 的误导状态。
|
||||
- 修复桌面 context 用量在 assistant 回复完成后下降的问题;统计会把最新输出 token 纳入下一轮上下文,并用本地估算作为下限。
|
||||
- 修复断开会话的 transcript fallback 与 live `/context` 统计口径不一致的问题,现在复用同一套当前上下文 token 总量逻辑。
|
||||
- 修复 prewarm CLI 还没连上 SDK socket 时就发送 context inspection,导致 composer spinner 或首次 context 请求超时的问题。
|
||||
- 修复空会话误报 “CLI session is not running” 的问题,未发送首轮消息时会保持更明确的待计算状态。
|
||||
- 修复会话删除失败后可能污染后续 chat startup 的问题,删除文件失败会回滚删除标记,避免旧会话存在但无法继续启动。
|
||||
- 修复 desktop rewind resume 的稳定性问题,rewind 前会等待 CLI 退出并排空输出,空 transcript 占位会话仍保留 canonical workDir。
|
||||
- 修复桌面权限 prompt 在切换权限模式后可能不可见的问题,权限模式变更会重启 CLI 并保持 prompt 可见。
|
||||
- 修复 macOS 通知插件权限状态不可信的问题;macOS 现在通过原生 UserNotifications 获取授权、展示前台通知并发送测试通知。
|
||||
- 修复底层 auth env 策略不一致和 secret 误展示问题,避免 Settings JSON 编辑时误保存占位符。
|
||||
- 修复 `/context` 对不同模型上下文窗口显示不准确的问题,补齐内置模型窗口解析。
|
||||
|
||||
## 文档与测试
|
||||
|
||||
- 更新微信和钉钉 IM 文档,补充扫码绑定、配对码、默认项目、命令发现和移动端权限审批说明,并加入对应截图。
|
||||
- `docs/im` 总览补齐四个平台的配置入口和安全模型说明。
|
||||
- 新增和扩展 context 统计、IM permission、WeChat typing、DingTalk stream state、desktop notifications、adapter config redaction 等回归测试。
|
||||
- 本地 PR 质量门禁覆盖 desktop、server、adapters、native 和 docs;真实微信、钉钉、飞书、Telegram 等 IM 平台仍建议维护者在发布前用真实账号做 smoke test。
|
||||
|
||||
## 其他说明
|
||||
|
||||
- GitHub Release 正文继续以 `release-notes/v0.2.1.md` 作为来源,发布时无需再手动复制 Markdown。
|
||||
- PR 质量门禁默认不会调用真实模型;微信 / 钉钉 / 飞书 / Telegram 端到端消息仍需要维护者显式验证。
|
||||
- macOS 通知现在默认更保守,用户需要在设置中开启桌面通知,并完成系统授权后才会收到权限请求、任务完成或长任务回复通知。
|
||||
|
||||
## 安装说明
|
||||
|
||||
### macOS
|
||||
|
||||
首次打开如果提示“已损坏”或“无法验证开发者”,请执行:
|
||||
|
||||
```bash
|
||||
xattr -cr /Applications/Claude\ Code\ Haha.app
|
||||
```
|
||||
Reference in New Issue
Block a user