fix(desktop): max height on message diffs, session stats

This commit is contained in:
Adam
2025-11-05 16:00:17 -06:00
parent 05ae99a09b
commit c59ec71918
4 changed files with 17 additions and 17 deletions

View File

@@ -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>

View File

@@ -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!,

View File

@@ -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))

View File

@@ -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>