fix(desktop): 自动续跑后收掉过期的侧边栏错误红点 - #3579
Conversation
|
| Filename | Overview |
|---|---|
| apps/desktop/src/renderer/hooks/usePendingAlertAttention.ts | 新增 user 消息与 turn 启动触发的错误尾行重算,并沿用已有的请求合并及 generation 防陈旧结果机制。 |
| apps/desktop/src/renderer/hooks/useSessionRunningStatus.ts | 在检测到会话开始新一轮时通知派生告警账本重新收敛。 |
| apps/desktop/src/renderer/hooks/tests/usePendingAlertAttention.test.ts | 覆盖已认领/未认领会话、user/assistant 消息及 turn 启动后的重算行为。 |
| apps/desktop/src/renderer/tests/useSessionRunningStatusSilence.test.ts | 补充 orphan 与真实 terminal error 场景均触发派生告警重算的断言。 |
Sequence Diagram
sequenceDiagram
participant T as Turn
participant DB as Local DB
participant H as Pending Alert Hook
participant A as Attention Store
T->>DB: 插入新 user 消息
DB-->>H: messages:created
H->>DB: 查询 errorTailPending
DB-->>H: 返回当前错误尾行集合
H->>A: 差分清除已过期 error 红点
Reviews (1): Last reviewed commit: "fix(desktop): 自动续跑后收掉过期的侧边栏错误红点" | Re-trigger Greptile
|
命中 UI 路径(apps/desktop/src/renderer/hooks/usePendingAlertAttention.ts / apps/desktop/src/renderer/hooks/useSessionRunningStatus.ts)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范 |
|
这次没有界面视觉 / 交互 / 文案变化:只改侧边栏错误红点何时熄灭的收敛时机,不改红点样式、布局或文案。
|
新一轮的 user 行会让错误不再是尾行,但红点只在 error 行上重算, 自动续跑成功后横幅已灭、红点仍挂着。认领了错误尾行时订 user 行, 并在新一轮启动时补一次重算。 Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
6f663a5 to
f91a6b6
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
MagicLizi
left a comment
There was a problem hiding this comment.
代码重审通过:当前 head 未发现 P0/P1。自动续跑后错误尾行不再命中时收掉侧边栏红点,IPC 仅在仍认领的会话上触发。
|
自动续跑把错误从尾行顶掉之后,红点跟着横幅一起灭掉,这个收口很干净。谢谢。 |
这次改了什么
摘要
任务报错后如果自动续跑成功,输入框上方的红色横幅会消失,但侧边栏任务列表上的红色角标还可能一直亮着。用户点开任务也清不掉,因为错误红点按产品规则只能跟着「还有没处理的报错」走,不能靠点开会话消掉。
根因是红点靠「最后一条可见消息是不是未处理报错」来投影。自动续跑会插入一条隐藏的 user 行,报错不再是尾行、横幅也不再显示,但红点那条路径以前只在新的 error 行落库时才重算,所以投影过期。
这次让已亮红点的任务在插入新 user 行、以及新一轮启动时重新查询;查询结果里已经没有这条告警,就把红点收掉。真正还在的报错横幅不受影响。
变更类型
fix缺陷修复feat新功能refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
#3534 Grok malformed tool call 保护与 wire 诊断侧边栏红点消不掉触发。skipTurnReset旁路任务上升沿仍不能误清还在的横幅)。UI 变化
怎么验证的
自动验证
相关单测:
apps/desktop/src/renderer/hooks/__tests__/usePendingAlertAttention.test.ts(含 user 行 / turn 启动触发重算)apps/desktop/src/renderer/__tests__/useSessionRunningStatusSilence.test.ts(旁路任务仍真实的错误红点不清;orphan 清理时补一次重算)手工验证
未在本 worktree 启动 Desktop。未实机复现「Codex 不可达 → 自动续跑成功 → 横幅已灭但红点仍亮」。
未执行的验证
pnpm test:unit(提交前按仓库规则跑了test:unit:related与 desktop typecheck)。风险
风险分类
影响与回滚
messages:created,本 PR 未新增 channel。messages:created推送,会一起触发重算。手机版无独立侧边栏红点实现,不另开入口。提交前检查
git commit -s,见 DCO)