Skip to content

Pulse 21.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 08:56
d0a7040

21.0.0 — Clarity(清晰)

这一版不加新能力,只做六件事:修 bug、界面现代和一致、细节、看得见、好用、简洁。依据是三路
源码审计(bug / 界面 / 可观测与易用),发现的问题逐条修掉,每一条都有测试或截图夹具。

修复(审计出的 21 项)

  • 红灯不再自己回来或自己消失。 忽略一条 claude agents 报告的等待后,下一轮扫描又把它点亮;
    「清除等待」对它不起作用 —— 都修了。Claude 在权限请求后立刻写出 Stop 的乱序情况,宽限期现在用
    两条事件各自的时间比较,不再用 Pulse 读文件的时间,所以请求没答时红灯不会在 20 秒后熄灭。
    claude agents 超时或失败一次,不再清空全部等待(也不再在恢复时重复弹通知)。
  • 行上的内容对了。 Claude 子代理的记录不再并进主会话、抢走它的任务和最后一句话;Pi 只读当前
    分支(/tree 回退后不再显示已放弃分支的话);同一会话多个文件合并时,模型、工具、token、计划
    都取最新的那个文件;Pi 不再把事件数显示成「完成 0/523」。
  • 「轮到你」清得掉了。 只有进程、还没读到会话文件的行接手了「轮到你」后,聚焦也清不掉,要等
    30 分钟 —— 现在行带上会话 id,「已看过」和「忽略」都写在 hook 自己的会话名下。
  • 文件里的陈旧等待会熄灭。 Cline 的未答提问、Goose 的 elicitation、Kimi 的审批请求、
    OpenHands 的待确认:Agent 进程已经不在、记录又超过 30 分钟时,不再一直亮红。
  • 聚焦终端不再替 iTerm 用户打开 Terminal.app,只对正在运行的终端发脚本,并有超时,不会把
    菜单栏卡死在自动化授权弹窗上。
  • 更新检查会重跑。 长期不关机的 Mac 以前永远看不到新版本;失败后一小时重试,而不是等一天。
    更新失败的原因用你的语言说。原地安装后的重启不再卡在子进程上(该路径仅用于已公证版本)。
  • 汇总通知的「稍后」推迟里面的每一个会话;热键优先跳到正在亮灯的等待,而不是已推迟的;按会话 id
    聚焦时只在同一个 Agent 里找;hook 事件在节流窗口里的最后一次不再丢;ledger 只在真的变化时写盘;
    attention 文件追加遇到坏字节不再清空整份文件;Goose 与 OpenHands 的读取不再吃光扫描预算。

一套视觉

  • PulseTheme 是唯一的视觉来源:4 点网格的间距、三档圆角、几档填充、语义字号(跟随系统),
    每个状态一种颜色 —— 红(需要你)、绿(在跑)、橙(停滞 / 失败 / 只有进程)、灰,全部用系统动态色,
    暗色模式和「增强对比度」都会跟着变。审计时产品里有 7 种圆角、约 12 个字号、3 种红和 3 种绿。
    surface_check.py 之外,视图里散落的写死数值已经收回令牌。
  • 一行只有一处红。 等待行原来有左侧色条、红点、红色标签、红色问题文字、红框卡片五处红和六个
    按钮;现在是整行一层淡红底 + 红点与标签,问题用正文色,下面至多两个按钮(回答或聚焦、忽略),
    其余动作都在「⋯」和 VoiceOver 动作里,只出现一次。
  • 不再抖。 展开箭头和「⋯」参与布局,不再盖住时间;悬停不再改变行高;面板只在高度真的变化时
    调整、且带过渡;菜单栏标题用等宽数字;新等待只让灯暗一下(规格一直写的是「闪一次」,实际闪了
    三次),开了「减少动态效果」就不闪。
  • 头部是按状态计数的胶囊,分组标题不再重复同一个数;刷新按钮自己转圈,不再把计数换成「刷新中」。
  • macOS 26 上托盘用 Liquid Glass,边缘有一条细线;更早的系统保持原来的菜单材质。

看得见

  • 每个非绿色的行都说为什么:停滞「已经 23 分钟没有新动静,超过你设的 20 分钟」、失败的上一次
    运行、只看到进程没有会话文件 —— 折叠状态下就显示,不用点开。
  • 头部下面一行写着多久前更新、多久读一次;关掉实时更新时明确说关了,不再看起来像是最新的。
  • 看不到的会话说出来:「3 个较早的会话未显示(Claude、Codex)」,原来只写进 debug.log。
  • 「无法刷新」有自己的界面和重试按钮,不再同时说「无法刷新」和「未检测到 Agent」。
  • 通知被系统拒收、导出报告失败、写 pulse-hook 失败,都会在界面上留下痕迹。

好用、简洁

  • 第一次打开是一张清单,按这台 Mac 的真实状态打勾:通知、Claude/Codex hooks、受保护的应用
    数据,没做的旁边就是按钮。不再把人带进 Attention 桥的开发者工具。
  • Claude 或 Codex 在跑但没装 hooks 时,托盘有一行提示,一键安装(仍只装 Claude/Codex)。
  • 设置分成五个面板:通用 / 提醒 / 连接 / 权限 / 关于。Attention 桥的工具收进「连接」里的折叠区;
    「快捷键」不再装着五个不相干的授权开关。全局快捷键从「开关 + 选择器」合成一个带「关闭」的选择
    (旧设置自动迁移,未开启的仍是关闭)。
  • 「健康检查」一个窗口:自检在最上面,每条下一步旁边就是按钮;下面是每个 Agent 能读到什么,
    格式漂移提到外面用橙色标出;报告与诊断收在一个菜单里;还写着上次读取的时间、频率和耗时。
  • Details 窗口并入 Workbench:同一行原来有托盘卡片、Details、Workbench 三个检查器和两份
    Respond 实现;现在「在 Workbench 打开」直接选中那一行,「为什么」和读取诊断都在那里。
    Allow 仍只出现在显示完整请求的地方。
  • 用词统一:中文界面不再混着 hooks / pending / Waiting;「判决」→「你的决定」,
    「受管」→「由 Pulse 启动」,Mission / 候选 →「任务对比 / 方案」,验收 / 证据统一叫「检查」。

发布流程的一个修正

version_check.py --fix 会把 CHANGELOG 最新的标题直接改成新版本号。19.0.0 和 20.0.0 因此都把
18.0.0 的说明当成了自己的发布说明,这两节自己的内容也没有留在 CHANGELOG 里。现在 --fix 不再碰 CHANGELOG;下面的
18.0.0、19.0.0、20.0.0 三节已按原内容恢复。GitHub 上 v19.0.0 与 v20.0.0 两个 Release 的正文仍是
18.0 的文字,需要在网页上手动改。

为什么是大版本

删掉了 Details 窗口;设置里的全局快捷键从两个值合成一个(持久设置迁移);托盘的交互(可见动作、
提示、空状态)整体改变。Attention 协议与会话状态格式不变。

这一版不说的话

  • 没有本地编译环境,所有改动靠 CI 的构建、测试和截图夹具验证;截图我看不到,Liquid Glass 与
    新的托盘在真机上的观感需要你看一眼。
  • 「子代理记录并入主会话」是按代码推断的,还没有用真实的子代理文件确认。

Gatekeeper

This build is ad-hoc / unnotarized (no Apple Developer ID in CI).
About stays preview — it is not Gatekeeper-ready and must not be
described as notarized stable. First open: Control-click → Open, or
xattr -dr com.apple.quarantine /Applications/Pulse.app.

Download verification

e74317afd7f9b7340f2308e38939c71c5239071cb814d02c13f8c7d8a7ccbd06  zig-out/package/pulse-21.0.0-macos-PulseBar.dmg