Skip to content

fix(desktop): 自动续跑后收掉过期的侧边栏错误红点 - #3579

Merged
MagicLizi merged 1 commit into
mainfrom
dash/sticky-sidebar-error-dot
Aug 29, 2026
Merged

fix(desktop): 自动续跑后收掉过期的侧边栏错误红点#3579
MagicLizi merged 1 commit into
mainfrom
dash/sticky-sidebar-error-dot

Conversation

@dashhuang

@dashhuang dashhuang commented Aug 28, 2026

Copy link
Copy Markdown
Member

这次改了什么

摘要

任务报错后如果自动续跑成功,输入框上方的红色横幅会消失,但侧边栏任务列表上的红色角标还可能一直亮着。用户点开任务也清不掉,因为错误红点按产品规则只能跟着「还有没处理的报错」走,不能靠点开会话消掉。

根因是红点靠「最后一条可见消息是不是未处理报错」来投影。自动续跑会插入一条隐藏的 user 行,报错不再是尾行、横幅也不再显示,但红点那条路径以前只在新的 error 行落库时才重算,所以投影过期。

这次让已亮红点的任务在插入新 user 行、以及新一轮启动时重新查询;查询结果里已经没有这条告警,就把红点收掉。真正还在的报错横幅不受影响。

变更类型

  • fix 缺陷修复
  • feat 新功能
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

  • 关联 Issue / 需求:无独立 issue;由任务 #3534 Grok malformed tool call 保护与 wire 诊断 侧边栏红点消不掉触发。
  • 本 PR 包含:错误红点在自动续跑 / 新一轮启动后按 DB 查询结果重新收敛;补单测。
  • 明确不包含:不改红点产品语义(仍是未处理告警的投影,点开会话不清红点);不改中断横幅的 ack 路径;不改 live error 的 orphan 清理守卫(skipTurnReset 旁路任务上升沿仍不能误清还在的横幅)。
  • 用户可见变化:自动续跑成功且报错横幅已灭时,侧边栏错误红点应熄灭。
  • 是否存在 breaking change:无

UI 变化

  • 不涉及:只修正错误红点收敛时机,无视觉/交互/文案改动
  • 引用的设计规范:不涉及:只修正错误红点收敛时机,无视觉/交互/文案变化

怎么验证的

自动验证

pnpm test:unit:related
结果:PASS  desktop  14.20s

pnpm --filter desktop run --if-present typecheck
结果:通过(exit 0)

相关单测:

  • apps/desktop/src/renderer/hooks/__tests__/usePendingAlertAttention.test.ts(含 user 行 / turn 启动触发重算)
  • apps/desktop/src/renderer/__tests__/useSessionRunningStatusSilence.test.ts(旁路任务仍真实的错误红点不清;orphan 清理时补一次重算)

手工验证

未在本 worktree 启动 Desktop。未实机复现「Codex 不可达 → 自动续跑成功 → 横幅已灭但红点仍亮」。

未执行的验证

  • 未启动 Desktop 做手工回归。
  • 未跑全量 pnpm test:unit(提交前按仓库规则跑了 test:unit:related 与 desktop typecheck)。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:Desktop renderer 侧边栏错误红点收敛时机。不改 schema、IPC、协议或 mobile 原生层。device-link 对端已能收到 messages:created,本 PR 未新增 channel。
  • 回滚 / 降级方式:回退本 PR。
  • 远程工作区 / SSH:不涉及 workdir 文件或远端 agent 进程,红点数据来自本机会话 DB。
  • 设备互联 / 手机版:未新增或修改 IPC;对端若走同一 messages:created 推送,会一起触发重算。手机版无独立侧边栏红点实现,不另开入口。
  • 故障半径:不触及 device-link 重试 / 超时 / 断链恢复。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

@dashhuang
dashhuang requested a review from a team as a code owner August 28, 2026 13:26
@greptile-apps

greptile-apps Bot commented Aug 28, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 修复 Desktop 自动续跑后侧边栏错误红点未随数据库中的待处理错误状态收敛的问题。

  • 已认领错误尾行的会话收到新 user 消息时重新查询待处理告警。
  • 新一轮开始时补充触发告警重算,并保留现有 live error 与中断告警保护。
  • 增加 user/assistant 消息触发、turn 启动及 side-task 场景的单元测试。

Confidence Score: 5/5

未发现需要阻止合并的具体问题,该修复看起来可以安全合并。

新增触发点均受错误尾行所有权约束,消息广播发生在数据库提交之后,重算流程也会合并并发请求及拒绝陈旧结果;调查到的边界情况没有形成可确认的新增故障路径。

Important Files Changed

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 红点
Loading

Reviews (1): Last reviewed commit: "fix(desktop): 自动续跑后收掉过期的侧边栏错误红点" | Re-trigger Greptile

@MagicLizi MagicLizi added status:ci-failed CI 失败(review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) labels Aug 28, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(apps/desktop/src/renderer/hooks/usePendingAlertAttention.ts / apps/desktop/src/renderer/hooks/useSessionRunningStatus.ts)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范

@dashhuang

Copy link
Copy Markdown
Member Author

这次没有界面视觉 / 交互 / 文案变化:只改侧边栏错误红点何时熄灭的收敛时机,不改红点样式、布局或文案。

check:pr-design-basis 已按「不涉及:只修正错误红点收敛时机,无视觉/交互/文案变化」通过。不另附截图。

新一轮的 user 行会让错误不再是尾行,但红点只在 error 行上重算,
自动续跑成功后横幅已灭、红点仍挂着。认领了错误尾行时订 user 行,
并在新一轮启动时补一次重算。

Signed-off-by: Dash <125997726+dashhuang@users.noreply.github.com>
@dashhuang
dashhuang force-pushed the dash/sticky-sidebar-error-dot branch from 6f663a5 to f91a6b6 Compare August 29, 2026 07:03
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-29T07:06:47.737242Z f91a6b6 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@MagicLizi MagicLizi removed the status:ci-failed CI 失败(review-pr 自动维护,仅展示) label Aug 29, 2026

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

代码重审通过:当前 head 未发现 P0/P1。自动续跑后错误尾行不再命中时收掉侧边栏红点,IPC 仅在仍认领的会话上触发。

@MagicLizi
MagicLizi merged commit a43b75a into main Aug 29, 2026
24 of 26 checks passed
@MagicLizi
MagicLizi deleted the dash/sticky-sidebar-error-dot branch August 29, 2026 08:49
@MagicLizi

Copy link
Copy Markdown
Contributor

自动续跑把错误从尾行顶掉之后,红点跟着横幅一起灭掉,这个收口很干净。谢谢。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants