From a68a244285d101e823d6669d251894f4f5177004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Tue, 28 Apr 2026 23:27:04 +0800 Subject: [PATCH] Prepare 0.1.8 for remote desktop release The release note is now the GitHub Release source of truth, and the desktop version files have been moved together so the tag-triggered workflow can package the same version consistently. Constraint: release-desktop.yml reads release-notes/v0.1.8.md from the tagged commit Rejected: Push tag without a release commit | workflow requires version files and notes in the tag Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep the release notes filename aligned with the tag before pushing future releases Tested: bun run scripts/release.ts 0.1.8 --dry Tested: bun run scripts/release.ts 0.1.8 Not-tested: Remote GitHub Actions build before pushing the tag --- desktop/package.json | 2 +- desktop/src-tauri/Cargo.lock | 114 +++++++++++++++++++++--------- desktop/src-tauri/Cargo.toml | 2 +- desktop/src-tauri/tauri.conf.json | 2 +- release-notes/v0.1.8.md | 43 +++++++++++ 5 files changed, 126 insertions(+), 37 deletions(-) create mode 100644 release-notes/v0.1.8.md diff --git a/desktop/package.json b/desktop/package.json index 27b0ade5..58511b0f 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,7 +1,7 @@ { "name": "claude-code-desktop", "private": true, - "version": "0.1.7", + "version": "0.1.8", "type": "module", "scripts": { "dev": "vite", diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 9c188625..8684eb2a 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -329,7 +329,7 @@ dependencies = [ [[package]] name = "claude-code-desktop" -version = "0.1.7" +version = "0.1.8" dependencies = [ "anyhow", "portable-pty", @@ -1591,9 +1591,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1711,6 +1711,36 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.18", + "walkdir", + "windows-link 0.2.1", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.117", +] + [[package]] name = "jni-sys" version = "0.3.1" @@ -1741,9 +1771,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.95" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf" dependencies = [ "cfg-if", "futures-util", @@ -2552,9 +2582,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "plist" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +checksum = "092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1" dependencies = [ "base64 0.22.1", "indexmap 2.14.0", @@ -2707,9 +2737,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.38.4" +version = "0.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d" dependencies = [ "memchr", ] @@ -2902,9 +2932,9 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ "base64 0.22.1", "bytes", @@ -3042,13 +3072,13 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" dependencies = [ "core-foundation", "core-foundation-sys", - "jni", + "jni 0.22.4", "log", "once_cell", "rustls", @@ -3488,6 +3518,22 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "0.3.11" @@ -3720,7 +3766,7 @@ dependencies = [ "gdkwayland-sys", "gdkx11-sys", "gtk", - "jni", + "jni 0.21.1", "libc", "log", "ndk", @@ -3786,7 +3832,7 @@ dependencies = [ "gtk", "heck 0.5.0", "http", - "jni", + "jni 0.21.1", "libc", "log", "mime", @@ -4016,7 +4062,7 @@ dependencies = [ "dpi", "gtk", "http", - "jni", + "jni 0.21.1", "objc2", "objc2-ui-kit", "objc2-web-kit", @@ -4039,7 +4085,7 @@ checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e" dependencies = [ "gtk", "http", - "jni", + "jni 0.21.1", "log", "objc2", "objc2-app-kit", @@ -4097,13 +4143,13 @@ dependencies = [ [[package]] name = "tauri-winres" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" dependencies = [ "dunce", "embed-resource", - "toml 0.9.12+spec-1.1.0", + "toml 1.1.2+spec-1.1.0", ] [[package]] @@ -4679,9 +4725,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1" dependencies = [ "cfg-if", "once_cell", @@ -4692,9 +4738,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.68" +version = "0.4.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" +checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" dependencies = [ "js-sys", "wasm-bindgen", @@ -4702,9 +4748,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4712,9 +4758,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41" dependencies = [ "bumpalo", "proc-macro2", @@ -4725,9 +4771,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.118" +version = "0.2.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea" dependencies = [ "unicode-ident", ] @@ -4781,9 +4827,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.95" +version = "0.3.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" dependencies = [ "js-sys", "wasm-bindgen", @@ -5485,7 +5531,7 @@ dependencies = [ "gtk", "http", "javascriptcore-rs", - "jni", + "jni 0.21.1", "libc", "ndk", "objc2", diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 81bbe6e2..25e9326f 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "claude-code-desktop" -version = "0.1.7" +version = "0.1.8" edition = "2021" [lib] diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 7ec0ef4d..28bd2eb7 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/nicegui/nicegui/main/nicegui/static/tauri-schema-v2.json", "productName": "Claude Code Haha", - "version": "0.1.7", + "version": "0.1.8", "identifier": "com.claude-code-haha.desktop", "build": { "frontendDist": "../dist", diff --git a/release-notes/v0.1.8.md b/release-notes/v0.1.8.md new file mode 100644 index 00000000..f17545e5 --- /dev/null +++ b/release-notes/v0.1.8.md @@ -0,0 +1,43 @@ +# Claude Code Haha v0.1.8 + +这是一个以桌面端 Slash Command、Provider 配置体验和会话稳定性为主的版本。 + +相比 `v0.1.7`,这次重点补齐了桌面端里 `/status`、`/cost`、`/context` 等命令的可视化检查能力,让终端工作流可以作为独立标签页留在桌面端内使用,同时修复了 provider runtime 漂移、rewind 回退目标错位、CLI 异常退出后会话卡住等问题。 + +## 主要更新 + +- 增强桌面端 Slash Command 面板:`/status`、`/cost`、`/context` 会在桌面端内展示会话状态、用量和上下文信息,不再只依赖终端文本输出。 +- 桌面端 Slash Command 行为进一步贴近 CLI:补齐 `/help`、`/clear`、`/compact`、`/plugin` 等命令的本地处理与边界提示,并支持按 `Esc` 关闭命令面板。 +- 终端能力升级为桌面端标签页工作流:可以在标签栏中打开和保留多个终端页签,设置页里的终端也可以直接新建独立终端标签。 +- Provider 配置体验优化:设置页补齐 API Key 入口、说明文案、密钥显示/隐藏逻辑和本地 provider 引导,并新增接口AI、胜算云、LM Studio、Ollama 等预设配置入口。 +- Kimi 预设切换到 coding endpoint,并补充 Kimi / 自定义 provider 常见认证问题的 FAQ 排查说明。 +- 桌面端本地服务启动失败时会显示最近的 server stdout/stderr 诊断日志,并支持一键复制诊断信息,方便定位 sidecar 或环境启动问题。 + +## 问题修复 + +- 修复桌面端会话在使用第三方 provider 时可能退回旧 settings 或错误模型能力的问题,让会话运行时更稳定地沿用当前激活的 provider、model 和能力配置。 +- 修复第三方 Anthropic 兼容端点的 thinking / adaptive thinking 能力误判问题,减少模型能力不兼容导致的请求失败。 +- 修复桌面端 rewind 可能因为隐藏消息或可见索引错位而回退到错误 turn 的问题,现在会优先按用户消息 ID 精确定位并校验原始内容。 +- 修复 CLI 在会话过程中异常退出后,桌面端 turn 可能长时间停留在进行中的问题;异常退出也会正确结束当前消息状态。 +- 修复子代理工具活动在桌面端聊天记录中被错误拉平的问题,让 subagent 的工具调用和结果继续保持嵌套展示。 +- 修复 ripgrep 路径检测不稳定的问题,避免 Bun 虚拟路径或不可执行路径被误当作可用 `rg`,并在不可用时给出更明确的错误。 +- 修复飞书适配器 HTTP 请求缺少超时保护的问题,避免外部接口慢响应时长期阻塞机器人处理流程。 +- 修复 `/clear` 等 Slash Command 的参数边界处理,避免误解析或误清理会话状态。 +- 修复桌面端 inspector 中上下文百分比显示缺失,以及 `/context` 查询在部分运行时下可能长时间等待的问题,并优化暗色模式下模型选择器的对比度。 + +## 其他说明 + +- README 和文档补充了赞助合作方、参考项目说明,以及自定义 Provider / Kimi 认证错误排查内容。 +- 补齐并润色了早期版本的 release notes,方便从 GitHub Release 回看历史版本变化。 +- 本地 macOS Apple Silicon 测试打包脚本改进了签名与 sidecar 校验流程,提升本地构建产物的启动成功率;正式 GitHub Actions release 流程保持不变。 +- GitHub Release 正文继续以 `release-notes/v0.1.8.md` 作为来源,发布时无需再手动复制 Markdown。 + +## 安装说明 + +### macOS + +首次打开如果提示“已损坏”或“无法验证开发者”,请执行: + +```bash +xattr -cr /Applications/Claude\ Code\ Haha.app +```