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:
程序员阿江(Relakkes)
2026-05-05 22:47:37 +08:00
parent 94c451d592
commit 47e41d68e3
5 changed files with 74 additions and 4 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "claude-code-desktop",
"private": true,
"version": "0.2.0",
"version": "0.2.1",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -473,7 +473,7 @@ dependencies = [
[[package]]
name = "claude-code-desktop"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"anyhow",
"portable-pty",

View File

@@ -1,6 +1,6 @@
[package]
name = "claude-code-desktop"
version = "0.2.0"
version = "0.2.1"
edition = "2021"
[lib]

View File

@@ -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
View 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
```