- {timelineEntries.map((timelineEntry) =>
- timelineEntry.kind === "work" ? (
-
-
- {timelineEntry.entry.detail ? (
- <>
- {timelineEntry.entry.label}
-
- {timelineEntry.entry.detail}
+ {timelineEntries.map((timelineEntry, index) => (
+
+ {timelineEntry.kind === "message" &&
+ timelineEntry.message.role === "assistant" &&
+ (completionDividerBeforeEntryId === timelineEntry.id ||
+ timelineEntries[index - 1]?.kind === "work") && (
+
+
+
+ {completionSummary
+ ? `Response • ${completionSummary}`
+ : "Response"}
+
+
+
+ )}
+ {timelineEntry.kind === "work" ? (
+
+
+
+ {timelineEntry.entry.detail ? (
+ <>
+ {timelineEntry.entry.label}
+
+ {timelineEntry.entry.detail}
+
+ >
+ ) : (
+ timelineEntry.entry.label
+ )}
+
+
+ ) : timelineEntry.message.role === "user" ? (
+
+
+
+ {timelineEntry.message.text}
+
+
+ {formatTimestamp(timelineEntry.message.createdAt)}
+
+
+
+ ) : (
+
+
+ {timelineEntry.message.streaming && (
+
+
+
+
+
+
+
+ Thinking
- >
- ) : (
- timelineEntry.entry.label
- )}
-
-
- ) : (
-
- {timelineEntry.message.role === "user" ? (
-
-
-
- {timelineEntry.message.text}
-
-
- {formatTimestamp(timelineEntry.message.createdAt)}
-
-
- ) : (
-
-
- {timelineEntry.message.streaming && (
-
-
-
-
-
-
-
- Thinking
-
-
- )}
-
- {formatMessageMeta(
- timelineEntry.message.createdAt,
- timelineEntry.message.streaming
- ? formatElapsed(
- timelineEntry.message.createdAt,
- nowIso,
- )
- : formatElapsed(
- timelineEntry.message.createdAt,
- assistantCompletionByItemId.get(
- timelineEntry.message.id,
- ),
+ )}
+
+ {formatMessageMeta(
+ timelineEntry.message.createdAt,
+ timelineEntry.message.streaming
+ ? formatElapsed(
+ timelineEntry.message.createdAt,
+ nowIso,
+ )
+ : formatElapsed(
+ timelineEntry.message.createdAt,
+ assistantCompletionByItemId.get(
+ timelineEntry.message.id,
),
- )}
-
-
- )}
-
- ),
- )}
+ ),
+ )}
+
+
+ )}
+
+ ))}
{isWorking && (
-
+
@@ -428,101 +757,271 @@ export default function ChatView() {
{/* Input bar */}
diff --git a/apps/renderer/src/components/DiffPanel.tsx b/apps/renderer/src/components/DiffPanel.tsx
index ba4274e914c7641643fd16f1cedbc8e3b6e3dd44..80d44b14f95f8a59e48f52143c47ce542394db97 100644
--- a/apps/renderer/src/components/DiffPanel.tsx
+++ b/apps/renderer/src/components/DiffPanel.tsx
@@ -4,15 +4,13 @@ export default function DiffPanel() {
const { dispatch } = useStore();
return (
-