Skip to content

fix(qqbot): honor durable media roots for cron TTS#92831

Closed
arkyu2077 wants to merge 1 commit into
openclaw:mainfrom
arkyu2077:pr-92816-tts-cron
Closed

fix(qqbot): honor durable media roots for cron TTS#92831
arkyu2077 wants to merge 1 commit into
openclaw:mainfrom
arkyu2077:pr-92816-tts-cron

Conversation

@arkyu2077

Copy link
Copy Markdown
Contributor

Summary

  • pass durable mediaLocalRoots through QQBot outbound media sends
  • allow QQBot voice sends to re-validate trusted temp/local TTS files against those roots
  • throw channel-adapter send errors so durable cron delivery is not marked sent on failure
  • add regression coverage for adapter error surfacing and trusted local voice sends

Testing

  • pnpm exec vitest run extensions/qqbot/src/engine/utils/platform.test.ts extensions/qqbot/src/channel.message-adapter.test.ts extensions/qqbot/src/engine/messaging/outbound-media-send.test.ts

Closes #92816

@openclaw-barnacle openclaw-barnacle Bot added channel: qqbot size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 14, 2026
@clawsweeper

clawsweeper Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.

Close in favor of the newer QQBot cron auto-TTS PR: it targets the same linked bug, is cleanly mergeable with sufficient live QQBot proof, and covers the sibling media gates this branch leaves incomplete.

Canonical path: Use #92947 as the canonical landing path for the QQBot cron auto-TTS delivery fix, while keeping the already-merged QQBot error-surfacing behavior from #92823.

So I’m closing this here and keeping the remaining discussion on #92947 and #92823.

Review details

Best possible solution:

Use #92947 as the canonical landing path for the QQBot cron auto-TTS delivery fix, while keeping the already-merged QQBot error-surfacing behavior from #92823.

Do we have a high-confidence way to reproduce the issue?

Yes, at source level: current main passes durable media roots into channel send contexts while QQBot's local media gates do not accept the cron TTS temp-root file path. I did not run a live QQBot repro for this branch; the replacement PR supplies live after-fix proof.

Is this the best way to solve the issue?

No. This branch is a plausible partial fix, but the newer replacement PR is the better solution because it fixes the QQBot trust boundary consistently across all gates and includes live QQBot proof.

Security review:

Security review cleared: No concrete security or supply-chain concern was found in this branch; the blocker is functional completeness and proof, not malicious or dependency-sensitive change.

AGENTS.md: found and applied where relevant.

What I checked:

Likely related people:

  • cxyhhhhh: GitHub path history shows the unified QQBot media send architecture came through the large QQBot group/media PR. (role: original QQBot media architecture contributor; confidence: high; commits: 5ccf179a34a9; files: extensions/qqbot/src/engine/messaging/outbound-media-send.ts, extensions/qqbot/src/channel.ts)
  • sliverp: The same QQBot architecture commit credits sliverp as a co-author on the original plugin/media work, and recent QQBot fixes also route through this area. (role: QQBot feature-history contributor; confidence: medium; commits: 5ccf179a34a9, e7ee1c55b433; files: extensions/qqbot/src/engine/messaging/outbound-media-send.ts, extensions/qqbot/src/channel.ts)
  • steipete: Recent history includes fs-safe/media-root work and current local blame in the affected QQBot media resolver path. (role: recent media/local-root area contributor; confidence: medium; commits: 538605ff44d2, f1bdc91b64d4; files: extensions/qqbot/src/engine/messaging/outbound-media-send.ts, src/media/local-roots.ts)
  • zhangguiping-xydt: Authored the merged QQBot media-send failure surfacing PR that overlaps this branch's adapter error-handling part. (role: recent adjacent QQBot error-propagation contributor; confidence: medium; commits: 650c5cac3326; files: extensions/qqbot/src/channel.ts, extensions/qqbot/src/channel.message-adapter.test.ts)
  • ZengWen-DT: Opened the proof-positive replacement PR that now owns the same linked cron auto-TTS delivery bug. (role: replacement PR author; confidence: high; commits: 56567160ed1d; files: extensions/qqbot/src/engine/messaging/trusted-media-path.ts, extensions/qqbot/src/engine/messaging/outbound-media-send.ts)

Codex review notes: model internal, reasoning high; reviewed against a0b16f37e835.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. and removed merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 14, 2026
@clawsweeper

clawsweeper Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper applied the proposed close for this PR.

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

Labels

channel: qqbot merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: S status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: 当tts设置为always时,cron会投递失败,但是结果会显示已投递

1 participant