summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-10-24 12:16:28 -0500
committerAdam <[email protected]>2025-10-24 12:16:33 -0500
commit477b6c584d6a5faf11659354b444a67d7f591dd4 (patch)
tree8ad0156abaf632cf9e4d4fba4d19572e6a72660a
parent86447b576490ee4cde0825418015652d8ed26794 (diff)
downloadopencode-477b6c584d6a5faf11659354b444a67d7f591dd4.tar.gz
opencode-477b6c584d6a5faf11659354b444a67d7f591dd4.zip
wip: desktop work
-rw-r--r--packages/desktop/src/pages/index.tsx128
1 files changed, 76 insertions, 52 deletions
diff --git a/packages/desktop/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx
index f61e36549..0d2dc0fd3 100644
--- a/packages/desktop/src/pages/index.tsx
+++ b/packages/desktop/src/pages/index.tsx
@@ -556,7 +556,7 @@ export default function Page() {
"text-text-weak data-[active=true]:text-text-strong group-hover/li:text-text-base": true,
}}
>
- {local.session.getMessageText(message)}
+ {message.summary?.title ?? local.session.getMessageText(message)}
</div>
</li>
)}
@@ -570,66 +570,90 @@ export default function Page() {
<div class="flex flex-col items-start gap-50 pb-[800px]">
<For each={local.session.userMessages()}>
{(message) => {
+ const title = message.summary?.title
+ const prompt = local.session.getMessageText(message)
+ const summary = message.summary?.body
+
return (
<div
data-message={message.id}
- class="flex flex-col items-start self-stretch gap-8 pt-1.5 snap-start"
+ class="flex flex-col items-start self-stretch gap-14 pt-1.5 snap-start"
>
- <div class="flex flex-col items-start gap-4">
- <div class="text-14-medium text-text-strong overflow-hidden text-ellipsis min-w-0">
- {local.session.getMessageText(message)}
- </div>
- <div class="text-14-regular text-text-base">{message.summary?.text}</div>
+ {/* Title */}
+ <div class="flex flex-col items-start gap-2 self-stretch">
+ <h1 class="text-14-medium text-text-strong overflow-hidden text-ellipsis min-w-0">
+ {title ?? prompt}
+ </h1>
+ <Show when={title}>
+ <div class="text-12-regular text-text-base">{prompt}</div>
+ </Show>
</div>
- <Show when={message.summary?.diffs.length}>
- <Accordion class="w-full" multiple>
- <For each={message.summary?.diffs || []}>
- {(diff) => (
- <Accordion.Item value={diff.file}>
- <Accordion.Header>
- <Accordion.Trigger>
- <div class="flex items-center justify-between w-full">
- <div class="flex items-center gap-5">
- <FileIcon
- node={{ path: diff.file, type: "file" }}
- class="shrink-0 size-4"
- />
- <div class="flex">
- <Show when={diff.file.includes("/")}>
- <span class="text-text-base">
- {getDirectory(diff.file)}/
+ {/* Summary */}
+ <div class="w-full flex flex-col gap-6 items-start self-stretch">
+ <Show when={summary}>
+ <div class="flex flex-col items-start gap-1 self-stretch">
+ <h2 class="text-12-medium text-text-weak">Summary</h2>
+ <div class="text-14-regular text-text-base self-stretch">{summary}</div>
+ </div>
+ </Show>
+ <Show when={message.summary?.diffs.length}>
+ <Accordion class="w-full" multiple>
+ <For each={message.summary?.diffs || []}>
+ {(diff) => (
+ <Accordion.Item value={diff.file}>
+ <Accordion.Header>
+ <Accordion.Trigger>
+ <div class="flex items-center justify-between w-full">
+ <div class="flex items-center gap-5">
+ <FileIcon
+ node={{ path: diff.file, type: "file" }}
+ class="shrink-0 size-4"
+ />
+ <div class="flex">
+ <Show when={diff.file.includes("/")}>
+ <span class="text-text-base">
+ {getDirectory(diff.file)}/
+ </span>
+ </Show>
+ <span class="text-text-strong">
+ {getFilename(diff.file)}
</span>
- </Show>
- <span class="text-text-strong">{getFilename(diff.file)}</span>
+ </div>
</div>
- </div>
- <div class="flex gap-4 items-center justify-end">
- <div class="flex gap-2 justify-end items-center">
- <span class="text-12-mono text-right text-text-diff-add-base">{`+${diff.additions}`}</span>
- <span class="text-12-mono text-right text-text-diff-delete-base">{`-${diff.deletions}`}</span>
+ <div class="flex gap-4 items-center justify-end">
+ <div class="flex gap-2 justify-end items-center">
+ <span class="text-12-mono text-right text-text-diff-add-base">{`+${diff.additions}`}</span>
+ <span class="text-12-mono text-right text-text-diff-delete-base">{`-${diff.deletions}`}</span>
+ </div>
+ <Icon name="chevron-grabber-vertical" size="small" />
</div>
- <Icon name="chevron-grabber-vertical" size="small" />
</div>
- </div>
- </Accordion.Trigger>
- </Accordion.Header>
- <Accordion.Content>
- <Diff
- before={{
- name: diff.file!,
- contents: diff.before!,
- }}
- after={{
- name: diff.file!,
- contents: diff.after!,
- }}
- />
- </Accordion.Content>
- </Accordion.Item>
- )}
- </For>
- </Accordion>
- </Show>
+ </Accordion.Trigger>
+ </Accordion.Header>
+ <Accordion.Content>
+ <Diff
+ before={{
+ name: diff.file!,
+ contents: diff.before!,
+ }}
+ after={{
+ name: diff.file!,
+ contents: diff.after!,
+ }}
+ />
+ </Accordion.Content>
+ </Accordion.Item>
+ )}
+ </For>
+ </Accordion>
+ </Show>
+ </div>
+ {/* Response */}
+ <div data-todo="Response (Timeline)">
+ <div class="flex flex-col items-start gap-1 self-stretch">
+ <h2 class="text-12-medium text-text-weak">Response</h2>
+ </div>
+ </div>
</div>
)
}}