From af8480b2e29afebe7b861641e24333d25e81d020 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Mon, 13 Jul 2026 15:45:27 -0400 Subject: [PATCH] fix(tui): pin queued compaction below output (#36738) --- packages/tui/src/routes/session/rows.ts | 4 +++- packages/tui/test/cli/tui/data.test.tsx | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/tui/src/routes/session/rows.ts b/packages/tui/src/routes/session/rows.ts index 1df58d3539..c7afea1252 100644 --- a/packages/tui/src/routes/session/rows.ts +++ b/packages/tui/src/routes/session/rows.ts @@ -177,7 +177,9 @@ export function createSessionRows(sessionID: Accessor) { } const queuedStart = (rows: SessionRow[]) => { - const index = rows.findIndex((row) => row.type === "message" && isPending(row.messageID)) + const index = rows.findIndex( + (row) => row.type === "compaction-queued" || (row.type === "message" && isPending(row.messageID)), + ) return index === -1 ? rows.length : index } diff --git a/packages/tui/test/cli/tui/data.test.tsx b/packages/tui/test/cli/tui/data.test.tsx index 416085bdb4..0e4102d30c 100644 --- a/packages/tui/test/cli/tui/data.test.tsx +++ b/packages/tui/test/cli/tui/data.test.tsx @@ -1202,6 +1202,21 @@ test("restores queued compaction from durable pending input", async () => { { type: "compaction-queued", inputID: "message-compaction-later" }, ]) + emitEvent(events, { + id: "evt_text_ended", + created: 2, + type: "session.text.ended", + durable: durable(sessionID, 5), + data: { + sessionID, + assistantMessageID: "message-assistant", + ordinal: 0, + text: "Active output", + }, + }) + await wait(() => rows.some((row) => row.type === "part")) + expect(rows.map((row) => row.type)).toEqual(["part", "compaction-queued", "compaction-queued"]) + emitEvent(events, { id: "evt_compaction_started", created: 2,