diff --git a/packages/desktop/src/pages/session.tsx b/packages/desktop/src/pages/session.tsx index 56ec8dcc2..a889e680e 100644 --- a/packages/desktop/src/pages/session.tsx +++ b/packages/desktop/src/pages/session.tsx @@ -336,8 +336,7 @@ export default function Page() { diff --git a/packages/enterprise/src/routes/share/[sessionID].tsx b/packages/enterprise/src/routes/share/[sessionID].tsx index c534a2ab2..65d894b54 100644 --- a/packages/enterprise/src/routes/share/[sessionID].tsx +++ b/packages/enterprise/src/routes/share/[sessionID].tsx @@ -90,6 +90,7 @@ export default function () { ) const provider = createMemo(() => firstUserMessage()?.model?.providerID) const model = createMemo(() => firstUserMessage()?.model?.modelID) + const diffs = createMemo(() => data.session_diff[params.sessionID!] ?? []) return (
@@ -116,11 +117,17 @@ export default function () { />
-
+
-
-
-
+
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; }