Skip to content

Claude Code Haha v0.7.8

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Nov 07:18
· 86 commits to main since this release
98c9c08

Claude Code Haha v0.7.8

本次让手机外出时也能稳定连上电脑:连接期间电脑不再闲置休眠,服务重启沿用原隧道地址,地址变了手机也能自动找回;新增 P2P 直连,打包版也能用,手机回前台原地续会话只补收增量。桌面端可以在回合运行中切换执行权限,长思考不再卡顿、Markdown 不闪烂,并修复了跨会话消息串台、超大消息静默丢失、编辑供应商悄悄改动路由等一批问题。新增 Claude Fable 5.2,微信支持媒体投递与断线恢复。手机 App 升级到 0.1.4。

核心功能

  • 外出连接更稳(#1862):设置 → 手机连接 → 外出连接新增「外出时保持电脑唤醒」开关,默认开启,连接和重连期间电脑不自动休眠(屏幕仍可关)。桌面服务重启会沿用原来的 cloudflared 隧道和地址,手机不用重新扫码;隧道地址真的变化时,同一 Wi-Fi 下的手机会自动换到新地址,iPhone 还会收到「电脑地址已更新」的推送。
  • 手机 P2P 直连(#1844,#1859):外出连接页新增「允许手机直连(P2P)」开关和状态行。开启后手机与电脑建立直连,聊天页菜单显示「直连 / 局域网直连」而不是「经 Cloudflare」;此前打包版读不到直连模块、永远只能走隧道兜底,现在打包版也能直连。手机把会话切到后台或锁屏几秒再回来,会原地续会话、只补收增量,不再重新拉取整段历史。需要新版手机 App(0.1.4)。
  • 回合运行中切换执行权限(#1851):任务正在跑时,输入框工具栏的盾牌选择器可以直接在 ask 和 skip permissions 之间切换并立即生效,之后的工具调用按新模式执行;已经显示的审批卡仍等待你作答,不会被自动批准。
  • Claude Fable 5.2(#1874):新增 claude-fable-5-2,1M 上下文、128K 输出。fable 别名现在指向 Fable 5.2;显式固定的 Fable 5 / 5.1 不会被改写,Fable 5.1 仍可选择。Claude Code 下 Fable 5.2 默认中等思考强度。
  • ChatGPT Official 按模型设上下文窗口(#1869):ChatGPT Official 设为默认时,模型映射面板里每个模型多了一个「上下文窗口(可选)」输入框,留空用官方默认,超过该模型上限会被拦下;设置对新会话生效,自动压缩据此触发。
  • 微信媒体投递与连接恢复(#1819):微信接入新增通道状态面板,显示在线 / 重连 / 认证失效和最近收发时间;助手回复里的本地图片和文件会按限额回传(文件 30MiB、图片 10MiB、每轮不超过 5 项),失败的输入和回复保留为待核对记录,可以用 /delivery、/retry 补发。感谢 @yuehua-meng。

修复

  • 长思考渲染(#1858):思考块流式输出时不再每个增量都整块重解析,界面不再卡顿,流式期间粘贴图片附件卡会立即出现;带表头的表格、嵌套引用链接和四反引号代码块在流式全程保持正确,结束后渲染与整块解析一致。
  • 跨会话消息串台(#1843):并发工具或子 Agent 产生重复消息编号时,切换会话不再把上一个会话的消息带过来,也不出现重复行。
  • 超大消息不再静默丢失(#1811):发送超过 16 MB 上限的消息(例如粘贴多张 4K 截图)时,会明确提示超限并建议大图从磁盘添加,文字和附件卡留在输入框不消失,编辑后可以重发;此前整条消息会无痕消失。
  • 编辑供应商不再影响运行中的会话(#1835):保存非默认供应商的设置不再覆盖默认供应商的运行时配置,正在跑的会话不会被悄悄路由到别的端点和密钥;弹窗打开期间默认供应商被切换时,保存会提示重新确认。
  • 错误分类更准(#1870,#1868,#1836):无效的已保存 API key 立即失败并显示上游原文,不再反复重试长时间转圈;供应商额度或余额耗尽(部分以 401/403 返回)显示「额度或余额不足」并保留厂商原文,不再误判成认证失败引导登录,错误卡片在会话重载后仍在。
  • 带版本号的接口地址(#1852):OpenAI 兼容供应商填以 /v3、/v4 结尾的 Base URL(如火山 /api/v3、智谱 /api/paas/v4)时直接在该版本路径下请求,不再被追加 /v1 导致 404。
  • 单张坏图不再卡死会话(#1853):历史里有一张无法验证尺寸的图片时,后续请求只把该图替换为文字说明,会话可以继续,不再每轮都报图片尺寸错误。
  • Memory 重载(#1834,#1867):在设置 → Memory 里点 Refresh 或再次点击当前文件,正文会重载为磁盘最新内容,不再只刷列表;有未保存草稿时先确认丢弃,保存进行中禁用刷新。
  • worktree 会话恢复(#1854):会话中途进入 worktree 后,切模型、重启应用等触发的恢复不再报「找不到会话」,恢复后仍在 worktree 内工作,徽标与实际目录一致。
  • 输入框附件托盘(#1850,#1867):添加大量选中文本、文件或 diff 评论引用时,托盘限高内部滚动,不再把对话顶走或把发送按钮挤出屏幕,新增卡片自动滚入视野。
  • 归档会话菜单(#1848):右键靠下的归档会话,「恢复」菜单精确出现在指针处,不再偏移或被裁剪。
  • 团队成员页面回答问题(#1849):成员触发提问时,可以直接在该成员的标签页选答并提交,成员继续执行,不用回到队长会话回答。
  • 安全与登录(#1821):Glob 绝对路径的审批和 deny 规则按真实搜索目录判定,不再被绕过;桌面与 CLI 并发刷新 OAuth token 不再互相覆盖导致意外掉登录,授权真失效时明确提示重新登录;Notebook 编辑拒绝部分读取或外部已改的文件,不再静默覆盖。感谢 @yuehua-meng。
  • 插件 marketplace 列表(#1792):设置 → 插件页正确显示已配置 marketplace 的名称、来源、安装数和更新时间,不再恒空。
  • IM 连接可靠性(#1815):Telegram、飞书、钉钉、微信共用的连接层修复审批重复推送、断线丢消息、并发操作丢回复和状态;半开连接自动重连并续原会话,他处已答的审批自动消失,失败消息可重发。感谢 @yuehua-meng。
  • 手机端(#1857,#1855):移除连不上的电脑不再被卡住,最多等几秒必成功;Android 前台也能弹出测试通知横幅;发送后的文本不再回灌输入框。

其他

  • Windows 安装包默认未签名:SignPath 签名申请仍在审批中,本版本 Windows 安装包未签名,运行时 SmartScreen 可能提示,见下方安装说明。
  • 手机 App 0.1.4:包含 P2P 直连、原地续会话和上述手机端修复,需要桌面端 v0.7.8 或更新版本。

安装

桌面端请在下方 Assets 中下载对应平台和架构的安装包:

  • macOS:Claude-Code-Haha-0.7.8-macOS-Apple-Silicon.dmg / Claude-Code-Haha-0.7.8-macOS-Intel.dmg
  • Windows:Claude-Code-Haha-0.7.8-Windows-x64-Setup.exe / Claude-Code-Haha-0.7.8-Windows-arm64-Setup.exe
  • Linux x64:Claude-Code-Haha-0.7.8-Linux-x64.AppImage、Claude-Code-Haha-0.7.8-Linux-x64.deb 或 Claude-Code-Haha-0.7.8-Linux-x64.rpm
  • Linux ARM64:Claude-Code-Haha-0.7.8-Linux-arm64.AppImage、Claude-Code-Haha-0.7.8-Linux-arm64.deb 或 Claude-Code-Haha-0.7.8-Linux-arm64.rpm

名字以 -update.zip 结尾的文件和 latest*.yml 是应用自动更新用的,不用手动下载。

Windows 安装包默认未签名:运行时若出现 SmartScreen 提示,确认文件来自本仓库的 Release 后,点「更多信息」→「仍要运行」。

手机 App 需要桌面端 v0.7.8 或更新版本:

  • Android:下载 Assets 中的 cc-haha-mobile-0.1.4-*.apk 安装,APK 会在桌面端安装包发布后自动附上。
  • iPhone / iPad:先在 App Store 安装 TestFlight,再打开 TestFlight 公开链接 加入测试。新构建需要苹果测试审核通过后,公开链接才会更新到 0.1.4。

完整变更:v0.7.7...v0.7.8

English Version

Claude Code Haha v0.7.8

This release keeps your phone connected to the computer while you are away: the computer no longer sleeps during a connection, a service restart reuses the same tunnel address, and the phone finds the new address automatically when it changes. A new P2P direct connection works in the packaged app, and returning to the foreground resumes the session in place with only incremental updates. On the desktop you can switch the permission mode while a turn is running, long thinking no longer stalls or breaks Markdown, and fixes address cross-session message leakage, silently lost oversized messages, and provider edits quietly rerouting active sessions. Claude Fable 5.2 is added, and WeChat gains media delivery and connection recovery. The phone app updates to 0.1.4.

Highlights

  • More reliable away-from-home connection (#1862): Settings → Phone connection → Away connection adds a "Keep the computer awake while away" toggle, on by default, so the computer does not sleep during connection and reconnection (the screen can still turn off). Restarting the desktop service reuses the original cloudflared tunnel and address, so the phone does not need to re-scan; when the tunnel address really changes, phones on the same Wi-Fi switch to the new address automatically, and iPhones get a "Computer address updated" push.
  • Phone P2P direct connection (#1844, #1859): the away-connection page adds an "Allow phone direct connection (P2P)" toggle and status line. When on, the phone connects directly and the chat menu shows "Direct / LAN direct" instead of "via Cloudflare"; packaged builds previously could not load the direct-connection module and always fell back to the tunnel, and now they connect directly too. Backgrounding or locking the phone for a few seconds and returning resumes the session in place with only incremental updates instead of re-fetching the whole history. Requires the new phone app (0.1.4).
  • Switch permission mode mid-turn (#1851): while a task is running, the shield selector in the composer toolbar switches between ask and skip permissions and takes effect immediately; subsequent tool calls use the new mode, and approval cards already on screen still wait for your answer.
  • Claude Fable 5.2 (#1874): adds claude-fable-5-2 with 1M context and 128K output. The fable alias now resolves to Fable 5.2; explicitly pinned Fable 5 / 5.1 are never rewritten and Fable 5.1 stays selectable. Claude Code defaults Fable 5.2 to medium effort.
  • Per-model context windows for ChatGPT Official (#1869): when ChatGPT Official is the default, each model in the mapping panel gets an optional "Context window" field; empty uses the official default, values above the model's limit are rejected, and the setting applies to new sessions and drives auto-compaction.
  • WeChat media delivery and recovery (#1819): WeChat adds a channel status panel showing online / reconnecting / auth-expired and recent send/receive times; local images and files in replies are delivered within limits (30MiB files, 10MiB images, up to 5 per turn), and failed inputs and replies are kept for review and can be retried with /delivery and /retry. Thanks @yuehua-meng.

Fixes

  • Long thinking rendering (#1858): streaming thinking blocks no longer re-parse the whole block on every delta, so the UI stays responsive and pasted image attachments appear immediately; tables with headers, nested reference links and quadruple-backtick code blocks stay correct throughout streaming, and the final render matches a full parse.
  • Cross-session message leakage (#1843): when concurrent tools or subagents produce duplicate message IDs, switching sessions no longer carries messages from the previous session or shows duplicate rows.
  • Oversized messages no longer vanish (#1811): sending a message over the 16 MB limit (for example several pasted 4K screenshots) now shows a clear size error and suggests adding large images from disk; the text and attachment cards stay in the composer and can be edited and resent, instead of the whole message disappearing silently.
  • Provider edits isolated from active sessions (#1835): saving a non-default provider no longer overwrites the default provider's runtime settings, so running sessions are not quietly rerouted to another endpoint and key; if the default changes while the dialog is open, saving asks you to reconfirm.
  • Better error classification (#1870, #1868, #1836): an invalid saved API key fails immediately with the upstream message instead of retrying for a long time; exhausted provider quota or balance (sometimes returned as 401/403) shows "quota or balance exhausted" with the vendor's message instead of being mistaken for an auth failure that prompts sign-in, and the error card survives a session reload.
  • Versioned base URLs (#1852): OpenAI-compatible providers with a Base URL ending in /v3 or /v4 (such as Volcano /api/v3 or Zhipu /api/paas/v4) request that version path directly instead of having /v1 appended and returning 404.
  • One bad image no longer stalls a session (#1853): when history contains an image whose dimensions cannot be verified, later requests replace just that image with a text note and the session continues, instead of failing every turn with an image-size error.
  • Memory reload (#1834, #1867): in Settings → Memory, Refresh or clicking the current file again reloads the body from the latest disk content instead of only refreshing the list; an unsaved draft asks before discarding, and Refresh is disabled while saving.
  • Worktree session resume (#1854): after a session enters a worktree mid-conversation, resumes triggered by switching models or restarting the app no longer report "conversation not found"; the session keeps working in the worktree and the badge matches the actual directory.
  • Composer attachment tray (#1850, #1867): adding many selected-text, file or diff-comment references keeps the tray height-limited and scrollable instead of pushing the transcript away or the send button off screen; new cards scroll into view.
  • Archived session menu (#1848): right-clicking a lower archived session opens the Restore menu exactly at the pointer instead of offset or clipped.
  • Answer a team member from its page (#1849): when a member asks a question, you can answer and submit directly on that member's tab and the member continues, without returning to the lead session.
  • Security and sign-in (#1821): Glob approval and deny rules for absolute paths are judged by the real search directory and can no longer be bypassed; concurrent OAuth token refresh between the desktop and CLI no longer overwrites tokens and causes unexpected sign-out, and a genuinely revoked authorization clearly prompts re-login; Notebook edits refuse partially read or externally modified files instead of silently overwriting. Thanks @yuehua-meng.
  • Plugin marketplace list (#1792): Settings → Plugins correctly shows configured marketplaces' name, source, install count and update time instead of an empty list.
  • IM connection reliability (#1815): the shared connection layer for Telegram, Feishu, DingTalk and WeChat fixes duplicate approval pushes, lost messages on disconnect, and lost replies and state across concurrent operations; half-open connections reconnect and resume the original session, approvals answered elsewhere disappear, and failed messages can be resent. Thanks @yuehua-meng.
  • Phone (#1857, #1855): removing an unreachable computer is no longer blocked and succeeds within a few seconds; Android shows the test notification banner even in the foreground; sent text no longer returns to the composer.

Other

  • Windows installer unsigned by default: the SignPath signing application is still pending, so this release's Windows installers are unsigned and SmartScreen may warn; see the installation notes below.
  • Phone app 0.1.4: includes P2P direct connection, in-place session resume and the phone fixes above, and requires desktop v0.7.8 or later.

Installation

Download the desktop installer for your platform and architecture from the Assets section below:

  • macOS: Claude-Code-Haha-0.7.8-macOS-Apple-Silicon.dmg / Claude-Code-Haha-0.7.8-macOS-Intel.dmg
  • Windows: Claude-Code-Haha-0.7.8-Windows-x64-Setup.exe / Claude-Code-Haha-0.7.8-Windows-arm64-Setup.exe
  • Linux x64: Claude-Code-Haha-0.7.8-Linux-x64.AppImage, Claude-Code-Haha-0.7.8-Linux-x64.deb or Claude-Code-Haha-0.7.8-Linux-x64.rpm
  • Linux ARM64: Claude-Code-Haha-0.7.8-Linux-arm64.AppImage, Claude-Code-Haha-0.7.8-Linux-arm64.deb or Claude-Code-Haha-0.7.8-Linux-arm64.rpm

Files ending in -update.zip and latest*.yml are used by in-app auto-update and do not need to be downloaded manually.

The Windows installers are unsigned by default: if SmartScreen warns, confirm the file came from this repository's Release, then choose More info → Run anyway.

The phone app requires desktop v0.7.8 or later:

  • Android: install cc-haha-mobile-0.1.4-*.apk from the Assets; the APK is attached automatically after the desktop installers are published.
  • iPhone / iPad: install TestFlight from the App Store, then open the TestFlight public link to join. The public link updates to 0.1.4 after the new build passes Apple's beta review.

Full changelog: v0.7.7...v0.7.8