diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx
index 5411368e8e..bd2a90ece5 100644
--- a/packages/tui/src/routes/session/index.tsx
+++ b/packages/tui/src/routes/session/index.tsx
@@ -21,7 +21,7 @@ import { useProject } from "../../context/project"
import { useData } from "../../context/data"
import { SplitBorder } from "../../ui/border"
import { useTuiPaths, useTuiTerminalEnvironment } from "../../context/runtime"
-import { Spinner } from "../../component/spinner"
+import { Spinner, SPINNER_FRAMES } from "../../component/spinner"
import { createSyntaxStyleMemo, generateSubtleSyntax, selectedForeground, useTheme } from "../../context/theme"
import { BoxRenderable, ScrollBoxRenderable, addDefaultParsers, TextAttributes, RGBA } from "@opentui/core"
import { Prompt, type PromptRef } from "../../component/prompt"
@@ -1281,45 +1281,52 @@ function CompactionMessage(props: {
text?: string
}) {
const ctx = use()
+ const kv = useKV()
const { theme, syntax } = useTheme()
const status = () => props.message?.status ?? props.status
const text = () => props.message?.summary ?? props.text ?? ""
+ const color = () => (status() === "failed" ? theme.error : status() === "completed" ? theme.success : theme.textMuted)
+ const border = () => (status() === "queued" ? theme.border : color())
return (
-
-
- ◇ Compaction queued
-
-
-
-
-
-
-
- Compacting conversation...
-
-
-
-
-
-
+
+
+
+
+
+
+ ⋯}>
+
+
+
+
+ ✓
+
+
+ ✗
+
+
+ ◇
+
+
+ {status() === "queued" ? "Compaction queued" : "Compaction"}
-
-
+
+
+
+
+
+
+
+
)
}