From e8d7fd4bcfc18e7d226a224e731fb2fd472d3cfc Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2026 13:44:50 +1000
Subject: [PATCH 1/2] test(web): cancel queued animation frames during worker
cleanup
---
.../files/fileEditorLanguageReadiness.test.ts | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts b/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts
index 520c0fa82d0e..268aa0fca5b9 100644
--- a/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts
+++ b/apps/web/src/components/files/fileEditorLanguageReadiness.test.ts
@@ -40,6 +40,7 @@ const source = "export const View = () =>
Ready
;";
let pool: WorkerPoolManager;
let renderer: FileRenderer;
let terminationPromises: Promise[];
+const pendingAnimationFrames = new Set>();
class WorkerTransport {
private readonly worker = new NodeWorkerThreads.Worker(
@@ -96,10 +97,18 @@ function firstEnter(highlighter: DiffsHighlighter, file: FileContents, language:
beforeEach(async () => {
terminationPromises = [];
- vi.stubGlobal("requestAnimationFrame", (callback: FrameRequestCallback) =>
- setImmediate(() => callback(0)),
- );
- vi.stubGlobal("cancelAnimationFrame", clearImmediate);
+ vi.stubGlobal("requestAnimationFrame", (callback: FrameRequestCallback) => {
+ const handle = setImmediate(() => {
+ pendingAnimationFrames.delete(handle);
+ callback(0);
+ });
+ pendingAnimationFrames.add(handle);
+ return handle;
+ });
+ vi.stubGlobal("cancelAnimationFrame", (handle: ReturnType) => {
+ pendingAnimationFrames.delete(handle);
+ clearImmediate(handle);
+ });
vi.stubGlobal("window", { matchMedia: () => ({ matches: true }) });
await disposeHighlighter();
pool = new WorkerPoolManager(
@@ -116,6 +125,8 @@ afterEach(async () => {
pool?.terminate();
await Promise.all(terminationPromises);
await disposeHighlighter();
+ for (const handle of pendingAnimationFrames) clearImmediate(handle);
+ pendingAnimationFrames.clear();
vi.unstubAllGlobals();
});
From 4c80bf57b2d245b7b5a81296ae8eb2ffa7d1bd89 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2026 10:13:41 +1000
Subject: [PATCH 2/2] test(server): match V2 tool output redaction in retention
coverage
---
apps/server/src/orchestration-v2/FoundationPersistence.test.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/server/src/orchestration-v2/FoundationPersistence.test.ts b/apps/server/src/orchestration-v2/FoundationPersistence.test.ts
index 26b314747dd2..23a9a88eb78f 100644
--- a/apps/server/src/orchestration-v2/FoundationPersistence.test.ts
+++ b/apps/server/src/orchestration-v2/FoundationPersistence.test.ts
@@ -422,7 +422,7 @@ it.layer(TestLayer)("orchestration V2 foundation persistence", (it) => {
if (stored.event.type !== "turn-item.updated") return;
assert.equal(stored.event.payload.type, "dynamic_tool");
if (stored.event.payload.type !== "dynamic_tool") return;
- assert.deepInclude(stored.event.payload.output, { truncated: true });
+ assert.notProperty(stored.event.payload, "output");
}
const persisted = yield* store.read({ threadId: thread.id }).pipe(Stream.runCollect);
const fullEvent = persisted.find(