From dce287a42d5b4bb965ee74707bf7b0b0709d61f1 Mon Sep 17 00:00:00 2001
From: Adam <2363879+adamdotdevin@users.noreply.github.com>
Date: Thu, 30 Oct 2025 10:33:45 -0500
Subject: wip: desktop work
---
packages/desktop/src/components/message.tsx | 63 ++++++++++++++++-------------
packages/desktop/src/pages/index.tsx | 2 +-
packages/ui/src/components/diff.tsx | 10 ++---
packages/ui/src/components/message-part.tsx | 6 +--
4 files changed, 39 insertions(+), 42 deletions(-)
(limited to 'packages')
diff --git a/packages/desktop/src/components/message.tsx b/packages/desktop/src/components/message.tsx
index 78be29d75..70d03591a 100644
--- a/packages/desktop/src/components/message.tsx
+++ b/packages/desktop/src/components/message.tsx
@@ -15,7 +15,7 @@ registerPartComponent("text", function TextPartDisplay(props) {
const part = props.part as TextPart
return (
-
+
)
})
@@ -36,36 +36,41 @@ registerPartComponent("tool", function ToolPartDisplay(props) {
const metadata = part.state.status === "pending" ? {} : (part.state.metadata ?? {})
const input = part.state.status === "completed" ? part.state.input : {}
- if (part.state.status === "error") {
- const error = part.state.error.replace("Error: ", "")
- const [title, ...rest] = error.split(": ")
- return (
-
-
-
-
-
+ return (
+
+
+ {(error) => {
+ const cleaned = error().replace("Error: ", "")
+ const [title, ...rest] = cleaned.split(": ")
+ return (
+
-
{title}
-
{rest.join(": ")}
+
+
+
+
+
{title}
+
{rest.join(": ")}
+
+
+ {cleaned}
+
-
- {error}
-
-
-
- )
- }
-
- return (
-
+
+ )
+ }}
+
+
+
+
+
)
})
diff --git a/packages/desktop/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx
index 1ae39a6b3..0ff4423ad 100644
--- a/packages/desktop/src/pages/index.tsx
+++ b/packages/desktop/src/pages/index.tsx
@@ -832,7 +832,7 @@ export default function Page() {
-
+
{(assistantMessage) => {
const parts = createMemo(
diff --git a/packages/ui/src/components/diff.tsx b/packages/ui/src/components/diff.tsx
index 731b1bfe0..36b57c56a 100644
--- a/packages/ui/src/components/diff.tsx
+++ b/packages/ui/src/components/diff.tsx
@@ -3,12 +3,12 @@ import {
FileDiff,
type DiffLineAnnotation,
type HunkData,
- DiffFileRendererOptions,
+ FileDiffOptions,
// registerCustomTheme,
} from "@pierre/precision-diffs"
import { ComponentProps, createEffect, splitProps } from "solid-js"
-export type DiffProps = Omit, "themes"> & {
+export type DiffProps = FileDiffOptions & {
before: FileContents
after: FileContents
annotations?: DiffLineAnnotation[]
@@ -54,13 +54,9 @@ export function Diff(props: DiffProps) {
// When ready to render, simply call .render with old/new file, optional
// annotations and a container element to hold the diff
createEffect(() => {
- // @ts-expect-error
const instance = new FileDiff({
// theme: "pierre-light",
- // theme: "pierre-light",
- // Or can also provide a 'themes' prop, which allows the code to adapt
- // to your OS light or dark theme
- themes: { dark: "pierre-dark", light: "pierre-light" },
+ theme: { dark: "pierre-dark", light: "pierre-light" },
// When using the 'themes' prop, 'themeType' allows you to force 'dark'
// or 'light' theme, or inherit from the OS ('system') theme.
themeType: "system",
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx
index eddd796e7..06f5046dc 100644
--- a/packages/ui/src/components/message-part.tsx
+++ b/packages/ui/src/components/message-part.tsx
@@ -55,11 +55,7 @@ export function AssistantMessageDisplay(props: { message: AssistantMessage; part
return x.type !== "tool" || (x as ToolPart).tool !== "todoread"
})
})
- return (
-
- )
+ return {(part) => }
}
export function UserMessageDisplay(props: { message: UserMessage; parts: PartType[] }) {
--
cgit v1.2.3