0,
+ "px-6 max-w-2xl": diffs().length === 0,
+ }}
+ >
+
+
v{info().version}
@@ -140,17 +147,17 @@ export default function () {
-
-
-
+ >
+
+
+
+
-
+
-
+
diff --git a/packages/ui/src/components/session-timeline.css b/packages/ui/src/components/session-timeline.css
index ff964b1c9..6384808c6 100644
--- a/packages/ui/src/components/session-timeline.css
+++ b/packages/ui/src/components/session-timeline.css
@@ -95,13 +95,6 @@
}
}
- .spinner {
- color: var(--text-base);
- flex-shrink: 0;
- width: 18px;
- aspect-ratio: 1;
- }
-
[data-slot="session-timeline-message-title-preview"] {
font-size: 14px; /* text-14-regular */
color: var(--text-weak);
@@ -177,6 +170,13 @@
font-weight: inherit;
}
+ [data-slot="session-timeline-typewriter"] {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ min-width: 0;
+ white-space: nowrap;
+ }
+
[data-slot="session-timeline-summary-section"] {
width: 100%;
display: flex;
diff --git a/packages/ui/src/components/session-timeline.tsx b/packages/ui/src/components/session-timeline.tsx
index 188bdb299..5d451b39d 100644
--- a/packages/ui/src/components/session-timeline.tsx
+++ b/packages/ui/src/components/session-timeline.tsx
@@ -2,7 +2,7 @@ import { AssistantMessage } from "@opencode-ai/sdk"
import { useData } from "../context"
import { Binary } from "@opencode-ai/util/binary"
import { getDirectory, getFilename } from "@opencode-ai/util/path"
-import { createEffect, createMemo, createSignal, For, Match, Show, Switch } from "solid-js"
+import { createEffect, createMemo, createSignal, For, Match, ParentProps, Show, Switch } from "solid-js"
import { createStore } from "solid-js/store"
import { DiffChanges } from "./diff-changes"
import { Spinner } from "./spinner"
@@ -18,12 +18,17 @@ import { Card } from "./card"
import { MessageProgress } from "./message-progress"
import { Collapsible } from "./collapsible"
-export function SessionTimeline(props: {
- sessionID: string
- class?: string
- containerClass?: string
- expanded?: boolean
-}) {
+export function SessionTimeline(
+ props: ParentProps<{
+ sessionID: string
+ classes?: {
+ root?: string
+ content?: string
+ container?: string
+ }
+ expanded?: boolean
+ }>,
+) {
const data = useData()
const [store, setStore] = createStore({
messageId: undefined as string | undefined,
@@ -54,7 +59,7 @@ export function SessionTimeline(props: {
const working = createMemo(() => status()?.type !== "idle")
return (
-
+
1}>
@@ -79,7 +84,7 @@ export function SessionTimeline(props: {
>
-
+
@@ -100,7 +105,7 @@ export function SessionTimeline(props: {
-
+
{(message) => {
const isActive = createMemo(() => activeMessage()?.id === message.id)
@@ -144,7 +149,7 @@ export function SessionTimeline(props: {
{/* Title */}
@@ -152,11 +157,7 @@ export function SessionTimeline(props: {
+
}
>
{message.summary?.title}
@@ -281,6 +282,7 @@ export function SessionTimeline(props: {
)
}}
+ {props.children}
)
diff --git a/packages/ui/src/components/spinner.css b/packages/ui/src/components/spinner.css
index aed077e4e..6b432d045 100644
--- a/packages/ui/src/components/spinner.css
+++ b/packages/ui/src/components/spinner.css
@@ -1,4 +1,6 @@
[data-component="spinner"] {
- width: 1rem;
- height: 1rem;
+ color: var(--text-base);
+ flex-shrink: 0;
+ width: 18px;
+ aspect-ratio: 1;
}