mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
Long desktop transcripts (797+ messages / 2.6MB) showed 1-2s blank frames while scrolling. The previous strategy inflated virtualization overscan from 360px to 7200px on every wheel/touch/pointer event and routed scroll-handler state updates through flushSync, which serialized large React reconciles onto WebKit's compositor thread and starved paint. Replaces the dynamic overscan + idle-timer state machine with a single stable 1200px overscan, and removes the flushSync barrier in updateAutoScrollState so React 18's automatic batching handles the scroll-handler setStates. ResizeObserver height callbacks now mark a pending bit and flush a single setMeasuredItemsVersion per animation frame, instead of triggering a list-wide re-render per measured item. Auto-scroll-on-measure is also removed so measurement feedback no longer fights an active user scroll. Tested: 722/722 desktop vitest suites pass Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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