diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b40a6aa18d..32098aeaa7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,7 @@ Docs: https://docs.openclaw.ai - Google Meet: grant Meet media permissions through the Playwright browser context when CDP grants do not affect the attached Chrome page, and report in-call microphone/speaker permission problems instead of marking realtime speech ready. - QA/Slack: fail the live mention-gating scenario on any unexpected SUT reply, even when the reply does not echo the expected marker. Thanks @vincentkoc. - QA/Matrix: steer the live tool-progress preview check away from `HEARTBEAT.md` and report final preview candidates when the live marker reply misses the exact token. Thanks @vincentkoc. -- QA/Matrix: let the live tool-progress preview check verify progress replacement events without depending on the preview saying `Working` or `tool: read`. Thanks @vincentkoc. +- QA/Matrix: let the live tool-progress preview and error checks verify progress replacement events without depending on the preview saying `Working`, `tool: read`, or unlabelled `read from`. Thanks @vincentkoc. - QA/Matrix: wait for live approval reactions to echo before starting the threaded approval decision timeout. Thanks @vincentkoc. - Tlon: expose `groupInviteAllowlist` in the channel config schema and clarify that group invite auto-accept fails closed without an invite allowlist. Thanks @vincentkoc. - Control UI/WebChat: collapse duplicate in-flight internal text sends onto the active Gateway run so rapid repeat submits do not start fresh `agent:main:main` dispatches. Fixes #75737. Thanks @dsdsddd1 and @BunsDev. diff --git a/extensions/qa-matrix/src/runners/contract/scenario-runtime-room.ts b/extensions/qa-matrix/src/runners/contract/scenario-runtime-room.ts index 9906b4544ea..a40eec8bec8 100644 --- a/extensions/qa-matrix/src/runners/contract/scenario-runtime-room.ts +++ b/extensions/qa-matrix/src/runners/contract/scenario-runtime-room.ts @@ -961,7 +961,7 @@ export async function runToolProgressErrorScenario(context: MatrixQaScenarioCont expectedPreviewKind: "notice", finalText: buildMatrixQaToken("MATRIX_QA_TOOL_PROGRESS_ERROR"), label: "tool progress error", - progressPattern: /read from missing-matrix-tool-progress-target\.txt/i, + progressPattern: /\bread\s*:?\s*from\s+missing-matrix-tool-progress-target\.txt\b/i, triggerBodyBuilder: buildMatrixToolProgressErrorPrompt, }); } diff --git a/extensions/qa-matrix/src/runners/contract/scenarios.test.ts b/extensions/qa-matrix/src/runners/contract/scenarios.test.ts index 851ab1dfd0b..8fc7b64253c 100644 --- a/extensions/qa-matrix/src/runners/contract/scenarios.test.ts +++ b/extensions/qa-matrix/src/runners/contract/scenarios.test.ts @@ -2865,7 +2865,7 @@ describe("matrix live qa scenarios", () => { event: matrixQaMessageEvent({ kind: "notice", eventId: previewEventId, - body: "Working...\n- `read from missing-matrix-tool-progress-target.txt`", + body: "Pearling...\n`📖 Read: from missing-matrix-tool-progress-target.txt`", }), since: "driver-sync-preview", }, @@ -2896,7 +2896,7 @@ describe("matrix live qa scenarios", () => { await expect(runMatrixQaScenario(scenario!, matrixQaScenarioContext())).resolves.toMatchObject({ artifacts: { driverEventId: "$tool-progress-error-trigger", - previewBodyPreview: "Working...\n- `read from missing-matrix-tool-progress-target.txt`", + previewBodyPreview: "Pearling...\n`📖 Read: from missing-matrix-tool-progress-target.txt`", previewEventId: "$tool-progress-error-preview", reply: { eventId: "$tool-progress-error-final",