summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-11-05 16:00:17 -0600
committerAdam <[email protected]>2025-11-05 16:00:20 -0600
commitc59ec71918ecf2796a12e2eefdf09176f536c0a2 (patch)
tree7ca7c9660dd548ea6afc437a6134087d4f2c4201 /packages
parent05ae99a09bf90ea641e70b3f3539fd978d0eef3c (diff)
downloadopencode-c59ec71918ecf2796a12e2eefdf09176f536c0a2.tar.gz
opencode-c59ec71918ecf2796a12e2eefdf09176f536c0a2.zip
fix(desktop): max height on message diffs, session stats
Diffstat (limited to 'packages')
-rw-r--r--packages/desktop/src/pages/layout.tsx8
-rw-r--r--packages/desktop/src/pages/session.tsx6
-rw-r--r--packages/ui/src/components/diff-changes.tsx18
-rw-r--r--packages/ui/src/components/message-part.tsx2
4 files changed, 17 insertions, 17 deletions
diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx
index afec9ee3c..22f0a50de 100644
--- a/packages/desktop/src/pages/layout.tsx
+++ b/packages/desktop/src/pages/layout.tsx
@@ -1,5 +1,5 @@
import { Button, Tooltip, DiffChanges } from "@opencode-ai/ui"
-import { createMemo, ParentProps } from "solid-js"
+import { createMemo, ParentProps, Show } from "solid-js"
import { getFilename } from "@/utils"
import { DateTime } from "luxon"
import { useSync } from "@/context/sync"
@@ -25,8 +25,6 @@ export default function Layout(props: ParentProps) {
</A>
<VList data={sync.data.session} class="no-scrollbar">
{(session) => {
- const diffs = createMemo(() => session.summary?.diffs ?? [])
- const filesChanged = createMemo(() => diffs().length)
const updated = createMemo(() => DateTime.fromMillis(session.time.updated))
return (
<A
@@ -57,8 +55,8 @@ export default function Layout(props: ParentProps) {
</span>
</div>
<div class="flex justify-between items-center self-stretch">
- <span class="text-12-regular text-text-weak">{`${filesChanged() || "No"} file${filesChanged() !== 1 ? "s" : ""} changed`}</span>
- <DiffChanges diff={diffs()} />
+ <span class="text-12-regular text-text-weak">{`${session.summary?.files || "No"} file${session.summary?.files !== 1 ? "s" : ""} changed`}</span>
+ <Show when={session.summary}>{(summary) => <DiffChanges changes={summary()} />}</Show>
</div>
</div>
</Tooltip>
diff --git a/packages/desktop/src/pages/session.tsx b/packages/desktop/src/pages/session.tsx
index 9c633f4f7..36eed718a 100644
--- a/packages/desktop/src/pages/session.tsx
+++ b/packages/desktop/src/pages/session.tsx
@@ -362,7 +362,7 @@ export default function Page() {
<Spinner class="text-text-base shrink-0 w-[18px] aspect-square" />
</Match>
<Match when={true}>
- <DiffChanges diff={message.summary?.diffs ?? []} variant="bars" />
+ <DiffChanges changes={message.summary?.diffs ?? []} variant="bars" />
</Match>
</Switch>
<div
@@ -490,13 +490,13 @@ export default function Page() {
</div>
</div>
<div class="shrink-0 flex gap-4 items-center justify-end">
- <DiffChanges diff={diff} />
+ <DiffChanges changes={diff} />
<Icon name="chevron-grabber-vertical" size="small" />
</div>
</div>
</Accordion.Trigger>
</Accordion.Header>
- <Accordion.Content>
+ <Accordion.Content class="max-h-[300px] overflow-y-auto no-scrollbar">
<Diff
before={{
name: diff.file!,
diff --git a/packages/ui/src/components/diff-changes.tsx b/packages/ui/src/components/diff-changes.tsx
index e6c04f519..5b2b7362e 100644
--- a/packages/ui/src/components/diff-changes.tsx
+++ b/packages/ui/src/components/diff-changes.tsx
@@ -1,18 +1,20 @@
-import type { FileDiff } from "@opencode-ai/sdk"
import { createMemo, For, Match, Show, Switch } from "solid-js"
-export function DiffChanges(props: { diff: FileDiff | FileDiff[]; variant?: "default" | "bars" }) {
+export function DiffChanges(props: {
+ changes: { additions: number; deletions: number } | { additions: number; deletions: number }[]
+ variant?: "default" | "bars"
+}) {
const variant = () => props.variant ?? "default"
const additions = createMemo(() =>
- Array.isArray(props.diff)
- ? props.diff.reduce((acc, diff) => acc + (diff.additions ?? 0), 0)
- : props.diff.additions,
+ Array.isArray(props.changes)
+ ? props.changes.reduce((acc, diff) => acc + (diff.additions ?? 0), 0)
+ : props.changes.additions,
)
const deletions = createMemo(() =>
- Array.isArray(props.diff)
- ? props.diff.reduce((acc, diff) => acc + (diff.deletions ?? 0), 0)
- : props.diff.deletions,
+ Array.isArray(props.changes)
+ ? props.changes.reduce((acc, diff) => acc + (diff.deletions ?? 0), 0)
+ : props.changes.deletions,
)
const total = createMemo(() => (additions() ?? 0) + (deletions() ?? 0))
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx
index 01a58025a..38870b5a3 100644
--- a/packages/ui/src/components/message-part.tsx
+++ b/packages/ui/src/components/message-part.tsx
@@ -364,7 +364,7 @@ ToolRegistry.register({
</div>
<div data-slot="actions">
<Show when={props.metadata.filediff}>
- <DiffChanges diff={props.metadata.filediff} />
+ <DiffChanges changes={props.metadata.filediff} />
</Show>
</div>
</div>