Files
claude-code-haha/release-notes/v0.7.0.md
程序员阿江(Relakkes) 4fa5684629 release: v0.7.0
2026-10-08 23:50:39 +08:00

22 KiB
Raw Permalink Blame History

Claude Code Haha v0.7.0

这是一次大版本改版:桌面端整体换上全新的「素 Porcelain」视觉系统,手机和平板 H5 按触屏重做,输入框「+」菜单重新组织为技能 / 连接器 / 运行方式三组,新增「编辑已发送的提示词并重跑」和会话「轨迹」视图。Agent Teams 的可靠性和后台任务的收尾也做了系统性修复——停止后保持停止、成员失败自动唤醒、跨会话的后台任务不再永久转圈。

核心功能

  • 全新桌面视觉系统「素 Porcelain」(#1452):所有页面重做在同一个视觉系统上——浅色主题、工具调用读成时间线、用户消息用气泡、输入框是悬浮卡片;六个主题统一圆角(4/6/8/12/16/20)和字号(11/12/13/14/15/18/22/26)阶梯,字重不超过 semibold;状态色按语义取(运行中 = info、等待 = warning、完成 = success、失败 = error);图标全部来自 lucide,去掉 Material Symbols 字体。designSystem.test.ts 会拦下越级的字号、过重的字重、斜体、Material 图标和散落的自定义圆角。
  • 手机 / 平板 H5 按触屏重做(#1460、#1461):抽屉式布局换成单层导航栈,首页是按状态分组的会话列表(「等你处理」置顶),系统返回手势回上一层;输入框只留一行(+ / 模型 / 发送),其余收进「+」底部面板;审批、提问和计划直接占用输入框位置,不再弹窗遮挡;消息长按出菜单;每轮工具调用折成一张卡,点开看完整时间线;首页右下角悬浮「新任务」,点开从底部升起全屏卡片,项目在顶部。平板保留左列表右详情。
  • 输入框「+」菜单重组(#1462):一级分为「给这次任务用」(技能 / 连接器 / 文件)和「运行方式」(Agent Teams、操作电脑两个开关),其余进「更多工具」;桌面端二级从右侧展开;连接器按「已连接 / 需要处理 / 推荐」列出并显示各自 logo,不再单列「插件」;技能列出最近用过、全部技能和两个可一键安装的市场热门。从菜单打开「操作电脑」与设置里走同一套授权确认。
  • 编辑已发送的提示词并重跑(#1432,#1343):悬停已发送的提示词出现「编辑并重发」,气泡变成内联编辑器,发送前会先试算回滚、在影响后续轮次或文件时确认,然后原地重跑;回滚失败不改动任何东西并保留草稿。当前无法编辑时(轮次运行中、有后台任务、检查点加载中)按钮保持可见并给出禁用原因,不再直接消失。
  • 会话「轨迹」视图(#1443):会话头部新增聊天 / 轨迹切换。轨迹是每行一个事件的高密度账本(系统提示、用户消息、注入的上下文、助手回复、工具调用),配三轨小地图、按轮折叠、搜索和逐行详情面板,也能钻进子 Agent。设置里原来的 Trace 列表、trace 标签页和独立窗口取消,已保存的 trace 标签会迁移成会话标签。
  • 安全的数据目录迁移(#1433、#1473):在「设置 → 通用」更改数据目录不再直接搬文件,而是走暂存 → 校验 → 迁移凭据 → 重启的流程,写迁移日志以便中断后恢复;同时会先让 IM sidecar 停稳再动盘。Windows 上被系统扫描程序短暂占用的文件会重试发布(最多六次、约 3 秒退避),仍失败则原样回滚。
  • 语音听写(#1457、#1427):录音时工具栏整行变成录音条——取消、麦克风听到内容的滚动痕迹、倒计时时钟(最后 15 秒)、停止和发送;发送会在草稿带上文字后走正常发送路径,被判定为中途改动而扣下的文字不会发送。语音输入默认开启(已保存过 false 的保持不变),Windows 上的识别 worker 也能正常启动。

Agent Teams

  • 长任务可恢复(#1426):成员回合被截断的流会自动重发;服务端托管成员,停下的成员收到消息后从自己的 transcript 重启,瞬时失败按 15s/45s/2m/5m/10m 自动续跑,只有重试耗尽才上报队长;停止现在是暂停整组,队长的下一条用户消息会带上停止成员的清单和未完成任务;队长重启(切模型、崩溃)不连带成员,服务端重启会重新接管团队。邮箱改为原子写入、按身份标记已读,并对齐官方 CLI 2.1.284 的回合间投递语义。
  • 停止后保持停止(#1446):按下停止后队长不再继续轮询邮箱,队员在停止前发出的汇报不会偷偷把团队唤醒,只有用户的下一条消息能解除;因用量超限、计费、网络或崩溃停下的成员,无论是否按过停止,都会在用户下一条消息里逐个列出其失败原因和未完成任务。
  • 强制执行任务依赖(#1459):依赖未完成的成员只在依赖就绪时才收到指令,之前收到的消息在收件箱里等待;TaskUpdate 拒绝队员在依赖未完成时开始或完成自己的任务(队长不受此限);每个成员会被告知谁在等它的结果,并在完成前把结果发过去。
  • 成员任务状态(#1446):成员停下或失败后,它的任务不再显示「进行中」的动画条;成员抽屉把任务分成「当前 / 下一个 / 已完成」,标出被阻塞任务缺哪个依赖,时长测量不到时不再打印 +0:00。

后台任务与运行时

  • 停止与运行时丢失时收敛后台任务(#1441):按停止会一并收掉本会话的后台 shell 任务(run_in_background、Dream、workflow),不再只断前台轮;没有客户端、只靠后台任务续命的会话有 31 分钟的硬上限,到期停掉运行时并写终态;运行时已经没了但任务记录还在时直接写终态,不再让重连把「运行中」灌回来。
  • 桌面没运行过的会话也能收敛(#1471):别的 CLI 跑完的会话里,后台 shell 任务不再永久「运行中」——任务终态在 transcript 里有四种落盘形态,现在全部读取;没有 CLI 进程时,停止一个只存在于历史里的任务会收敛为已停止而不是报错。

模型与供应商

  • OpenAI Chat 代理默认发图(#1458):不再按主机名和模型名猜图片能力,图片一律先发给模型;上游明确以「不支持图片输入」拒绝时,去掉图片重发一次,只有这次成功才会把该端点和模型记为纯文本 30 分钟。这样 OpenCode Go 上每个新的视觉模型都能直接用,也覆盖了 vLLM 和 OpenAI 的措辞。
  • 新会话默认推理强度改为 low(#1439):服务端和桌面 store 的全局默认都从 max 调到 low,已保存过偏好的人不变;不在 provider 列表里的 ChatGPT Official、Grok Official 也会按模型目录解析强度,不再出现选择器显示全局值、实际跑模型默认值的情况。

修复

  • 中文文件名被截断(#1429、#1431,#1423):正文和内联代码里的中文文件名按整个 token 读取,测试文档1.docx 不再变成 1.docx;文案无法自行界定的名字(报告v2.docx、无空格粘连的名字、全角括号、纯中文加扩展名)交给磁盘确认,优先取最长的已存在文件。
  • 不存在的图片报红卡(#1450):文件路由返回 400/403/404/413 时视为图片本就不存在,内联卡片静默消失、Markdown 图片退回 alt;只有服务出错、连接断开、凭据被拒或字节无法解码才显示可重试的错误。
  • 硬编码文案没走翻译(#1450):把组件里直接写死的界面文字接入 t()(回复里的图片标题、Mermaid 的错误与加载文案、侧栏「未命名」、Computer Use 的状态检查、/context 的 token 数、轨迹视图标签和读屏标签等),补齐五个语种;untranslatedText.test.ts 会扫描所有组件防止回退。
  • provider 流中断的报错(#1449):上游在 message_stop 之前关闭 200 流且所有重试都失败时,错误会指明是上游模型供应商的问题、明确不是上下文超限,并记录这次收到的证据(事件数、最后一个事件、stop_reason、是否缺 message_stop、未闭合块、耗时和重试次数);桌面端五个语种都有本地化说明。
  • 文件卡片和链接乱弹(#1444):回复里只是「提到」的路径不再当成产出的文件;输出卡片需要本回合确实产出过该文件(或有改动记录),链接要等磁盘确认文件存在且在本回合之后被改过才渲染,没有依据的名字保持为普通代码。
  • 会话查找每次全量解析(#1430):只有一个候选文件时不再解析整个 transcript 去比对内容,多文件时也在第一条会话记录处停止,长会话分页重开的开销不再随文件大小平方增长。
  • 工作区浏览器改用 <webview>(#1437):不再用永远盖在 DOM 之上的原生 WebContentsView,网页放进会话面板内的一层 <webview>,其他页面、菜单和弹窗能正常盖在上面,选择元素的截图不再拍到已关闭的气泡或闪白。
  • 虚拟占位符在分数缩放下抖动(#1428):非整数缩放时消息列表的占位高度稳定,不再跳动。
  • 技能市场首页像两页拼接(#1434):标题、免责声明、分类和搜索与卡片网格回到同一个页面表面,切换首页和详情不再闪色。
  • Agent Teams 头部在窄栏被挤扁(#1472):控件改为换行排布,按钮和时长不再被压成竖排文字。
  • 空白会话的侧边聊天(#1455):还没开始对话的会话不再显示侧边聊天入口,避免每次点击只弹一句「先开始一段对话」。
  • 自定义 provider 预设的语言(#1472):自定义预设不再固定显示英文「Custom」,按当前语言显示并在预填名称里一致。
  • 其他:token 用量页按用量、活动、模型排序;token 用量表移到活动热力图下方。

其他

  • README 改为中文默认、英文移到 README.en.md,并换上产品宣传片封面。
  • 官网首页新增点击播放的宣传片区块。

安装

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

SignPath Foundation 尚未接入完成,本次 Windows 应用和安装包暂未签名;macOS 安装包已签名并完成公证。

  • macOS:Claude-Code-Haha-0.7.0-mac-arm64.dmg / Claude-Code-Haha-0.7.0-mac-x64.dmg
  • Windows:Claude-Code-Haha-0.7.0-win-x64.exe / Claude-Code-Haha-0.7.0-win-arm64.exe
  • Linux x64:Claude-Code-Haha-0.7.0-linux-x86_64.AppImage、Claude-Code-Haha-0.7.0-linux-amd64.deb 或 Claude-Code-Haha-0.7.0-linux-x86_64.rpm
  • Linux ARM64:Claude-Code-Haha-0.7.0-linux-arm64.AppImage、Claude-Code-Haha-0.7.0-linux-arm64.deb 或 Claude-Code-Haha-0.7.0-linux-aarch64.rpm

完整变更:v0.6.8...v0.7.0

English Version

Claude Code Haha v0.7.0

This is a major release: the desktop app moves to a new visual system, 「素 Porcelain」; the phone and tablet H5 shell is rebuilt around touch; the composer's + menu is reorganized into skills, connectors and run modes; and "edit and resend a prompt" plus an in-session trajectory view are new. Agent Teams and background tasks also get systematic reliability fixes — a stopped team stays stopped, failed members are woken automatically, and background tasks from other sessions no longer spin forever.

Highlights

  • New desktop visual system, 「素 Porcelain」 (#1452): every page is rebuilt on one visual system — a quiet light theme, tool calls read as a timeline, user turns as bubbles, and the composer as a floating card. All six themes share one radius scale (4/6/8/12/16/20) and one type scale (11/12/13/14/15/18/22/26), weights stop at semibold, and status colours carry meaning (running = info, waiting = warning, done = success, failed = error). Every icon comes from lucide and the Material Symbols font is gone. designSystem.test.ts fails on off-scale font sizes, weights above semibold, italics, Material icons and ad-hoc radii.
  • Phone and tablet H5 rebuilt around touch (#1460, #1461): the drawer layout becomes a single navigation stack, with the home being a session list grouped by status ("waiting for you" first) and the system back gesture moving up a level. The composer is one row (+, model, send) and everything else moves into a + bottom sheet; approvals, questions and plans take the composer's place instead of covering the chat; messages use a long-press menu; each tool run folds into one card that opens the full timeline; a floating "New task" button on the home opens a full-height sheet with the project at the top. Tablets keep the list beside the page.
  • Composer + menu reorganized (#1462): the root splits into "for this task" (skills, connectors, files) and "how it runs" (Agent Teams and Computer Use switches), with the rest under More tools; on desktop the second level opens in a side panel. Connectors list connected services, ones that need sign-in and suggestions, each with its own logo, and the separate Plugins entry is gone. Skills show recently used ones, all skills, and two market skills that install in place. Turning Computer Use on from the menu goes through the same consent dialog as Settings.
  • Edit and resend a sent prompt (#1432, #1343): hovering a sent prompt offers "Edit and resend" — the bubble becomes an inline editor, sending dry-runs the rewind, confirms when later turns or restorable files are at stake, and reruns from there; a failed rewind changes nothing and keeps the draft. When an edit cannot start (a turn running, a background task still going, checkpoints loading) the action stays visible, disabled, with the reason instead of disappearing.
  • In-session trajectory view (#1443): sessions gain a Chat / Trajectory switch. The trajectory is a dense one-line-per-event ledger (system prompt, user, injected context, assistant responses, tool calls) with a three-lane minimap, turn folding, search and a per-row detail panel, plus subagent drill-in. The Settings trace list, trace tabs and standalone window are removed; saved trace tabs migrate to session tabs.
  • Safe data directory migration (#1433, #1473): changing the data directory in Settings → General now stages, verifies, migrates credentials and restarts instead of moving files directly, with a journal for recovery after an interruption, and IM sidecars are quiesced first. On Windows a file briefly held by a system scanner is retried (up to six attempts with about 3 seconds of backoff) and still rolls back unchanged if it keeps failing.
  • Voice dictation (#1457, #1427): while recording, the toolbar row becomes a recording bar — cancel, a scrolling trace of what the microphone heard, a countdown clock (last 15 s), stop and send; sending writes the text and then submits through the normal path, and text held back because the draft changed is never sent. Voice input is on by default (a saved false is kept), and the compiled recognizer worker now starts on Windows.

Agent Teams

  • Long-running teams recoverable (#1426): a member turn whose stream was truncated resends it; the server supervises members, restarting a stopped member from its own transcript when messaged and continuing transient failures on a 15s/45s/2m/5m/10m backoff, with only exhausted retries reaching the lead. Stop now pauses the whole team, and the lead's next user message lists the stopped members and their open tasks; lead restarts (model switch, crash) keep members and a server restart re-owns the team. The mailbox gets atomic writes, identity-based read marking and the official CLI 2.1.284 between-turn delivery semantics.
  • A stopped team stays stopped (#1446): after Stop the lead stops polling its mailbox, reports sent before the Stop no longer wake the team, and only the user's next message resumes it. Members stopped by a usage limit, billing, network or crash failure are listed with their failure and open tasks on the user's next message, whether or not Stop was pressed.
  • Task dependencies enforced (#1459): a member whose tasks all wait on others gets its instructions only once a dependency is ready, with earlier mail waiting in its inbox; TaskUpdate refuses a teammate that starts or completes a task while something it is blocked by is unfinished (the lead is not held to it); each member is told who waits on its results and sends them before completing.
  • Member task state (#1446): a member that stopped or failed no longer leaves its task reading "In progress" with an animated bar; the member drawer groups tasks into now, up next and done, names the missing dependencies of blocked work, and no longer prints +0:00 for a duration it could not measure.

Background tasks and runtime

  • Background tasks converge on Stop and runtime loss (#1441): Stop now reaps the session's background shell tasks (run_in_background, Dream, workflow) instead of only interrupting the foreground turn; a session kept alive by background tasks alone with no client gets a 31-minute ceiling that stops the runtime and publishes terminal state; and when the runtime is gone but task records remain, terminal bookends are published instead of a ghost "Running" reappearing on reconnect.
  • Sessions the desktop never ran converge too (#1471): a background shell task in a session finished by another CLI no longer stays "running" forever — all four terminal shapes in the transcript are read, and stopping a history-only task with no CLI process converges to stopped instead of failing.

Models and providers

  • OpenAI Chat proxy sends images until rejected (#1458): image support is no longer guessed from host and model names — images are offered to every model, and only when the upstream refuses with a recognizable image-input rejection is the request resent without them; only if that succeeds is the endpoint and model remembered as text-only for 30 minutes. Every new vision model on OpenCode Go now works out of the box, and vLLM and OpenAI wording is recognized too.
  • New sessions default to low reasoning effort (#1439): the global default moves from max to low on both the server and the desktop store, keeping any saved preference; ChatGPT Official and Grok Official, which are not in the saved provider list, now resolve effort against the model catalog instead of showing the global value while running the model default.

Fixes

  • CJK file names truncated (#1429, #1431, #1423): names in prose and code spans are read as a whole token, so 测试文档1.docx is no longer cut to 1.docx; names the text cannot bound (报告v2.docx, names glued without a space, full-width brackets, CJK-only names) are settled against the disk, longest existing name first.
  • Missing images showing red tiles (#1450): a 400/403/404/413 from the file routes means the picture is not there to show — the inline tile disappears and a Markdown image falls back to its alt text; only a server fault, a dropped connection, a refused credential or undecodable bytes show the retryable error.
  • Hardcoded text skipping translation (#1450): text typed into components now goes through t() (the image header in a reply, Mermaid's error and loading copy, "Untitled", Computer Use's status check, /context counts, trajectory labels and screen-reader labels), added to all five locales; untranslatedText.test.ts scans every component to keep it that way.
  • Interrupted provider streams (#1449): when an upstream closes a 200 stream before message_stop and every retry fails, the error names the upstream provider, states it is not a context-limit error, and records the evidence (event count, last event, stop_reason, missing message_stop, open blocks, elapsed time, retries) with a localized explanation in all five locales.
  • Spurious file cards and links (#1444): a path the reply only mentions is no longer treated as a produced file — output cards need the turn to have produced the file (or a change record), and links render only once the disk confirms the file exists and was modified after the turn began; unverified names stay plain code.
  • Full transcript parses on every lookup (#1430): a single matching file no longer triggers a content parse, and a multi-file check stops at the first conversation record, so reopening a long session no longer grows quadratically.
  • Workspace browser compositing (#1437): pages are now <webview> guests inside the session panel instead of a native WebContentsView that always painted above the DOM, so menus and dialogs draw over them and the element-picking screenshot no longer captures the closed bubble or flashes white.
  • Virtual spacers at fractional zoom (#1428): spacer heights stay stable at non-integer zoom.
  • Skills market home seam (#1434): the title, disclaimer, categories and search sit on the same page surface as the card grid, with no flash when switching between home and detail.
  • Agent Teams header in narrow panes (#1472): controls wrap onto their own row and labels and timings never stack vertically.
  • Side chat in a blank session (#1455): the side chat entry no longer shows before a session has a conversation.
  • Custom provider preset locale (#1472): the custom preset reads in the active language instead of a bare English "Custom", consistently in the chip and the prefilled name.
  • Also: the token usage page is ordered usage, activity, then models.

Other

  • The README is now Chinese by default with English in README.en.md, and carries the promo film cover.
  • The site gains a click-to-play film section on the home page.

Installation

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

Windows applications and installers in this release are unsigned because SignPath Foundation onboarding is not yet complete. macOS builds are signed and notarized.

  • macOS: Claude-Code-Haha-0.7.0-mac-arm64.dmg / Claude-Code-Haha-0.7.0-mac-x64.dmg
  • Windows: Claude-Code-Haha-0.7.0-win-x64.exe / Claude-Code-Haha-0.7.0-win-arm64.exe
  • Linux x64: Claude-Code-Haha-0.7.0-linux-x86_64.AppImage, Claude-Code-Haha-0.7.0-linux-amd64.deb or Claude-Code-Haha-0.7.0-linux-x86_64.rpm
  • Linux ARM64: Claude-Code-Haha-0.7.0-linux-arm64.AppImage, Claude-Code-Haha-0.7.0-linux-arm64.deb or Claude-Code-Haha-0.7.0-linux-aarch64.rpm

Full changelog: v0.6.8...v0.7.0