mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
The chat timeline lost per-turn changed file cards when the visible user message ids did not match persisted transcript ids, and sessions without SDK file-history snapshots had no fallback source for turn changes. Match live cards by stable user-message index when needed and derive checkpoint previews from transcript tool calls when snapshots are absent. Constraint: Right-side workspace changes already derive from transcript tool calls, so chat checkpoint data must remain consistent with that source. Rejected: Force a history reload after every turn | would hide the id mismatch but add churn and still not cover transcript-only sessions. Confidence: high Scope-risk: moderate Directive: Keep snapshot checkpoints as the preferred source, and use transcript extraction only as the compatibility fallback. Tested: bun test src/server/__tests__/sessions.test.ts Tested: bun test src/server/__tests__/workspace-service.test.ts Tested: cd desktop && bun run test src/components/chat/MessageList.test.tsx Tested: cd desktop && bun run lint Tested: cd desktop && bun run test Tested: git diff --check Not-tested: Browser E2E against a live model session.
Claude Code Haha Desktop
基于 Tauri 2 + React 的桌面客户端。
开发
bun install
bun run tauri dev
构建
# macOS (Apple Silicon)
./scripts/build-macos-arm64.sh
# Windows (x64, MSI only)
.\scripts\build-windows-x64.ps1
构建产物位于 build-artifacts/ 目录,文件名会显式包含平台、架构和包类型。
常见问题
macOS 提示"已损坏,无法打开"
xattr -cr /Applications/Claude\ Code\ Haha.app