From 6bc21fae4ec31a560919809abaac931a8e5759a6 Mon Sep 17 00:00:00 2001 From: Cyrus Goh Date: Sun, 25 Jan 2026 21:40:51 -0800 Subject: [PATCH] format fix --- ui/src/ui/app-render.ts | 147 +++++++++++++++-------------- ui/src/ui/chat/grouped-render.ts | 24 ++--- ui/src/ui/controllers/chat.test.ts | 6 +- ui/src/ui/controllers/chat.ts | 6 +- ui/src/ui/views/chat.ts | 20 ++-- 5 files changed, 96 insertions(+), 107 deletions(-) diff --git a/ui/src/ui/app-render.ts b/ui/src/ui/app-render.ts index 2f1578723..9c4ed2f4a 100644 --- a/ui/src/ui/app-render.ts +++ b/ui/src/ui/app-render.ts @@ -413,79 +413,80 @@ export function renderApp(state: AppViewState) { : nothing } -${state.tab === "chat" - ? renderChat({ - sessionKey: state.sessionKey, - onSessionKeyChange: (next) => { - state.sessionKey = next; - state.chatMessage = ""; - state.chatAttachments = []; - state.chatStream = null; - state.chatStreamStartedAt = null; - state.chatRunId = null; - state.chatQueue = []; - state.resetToolStream(); - state.resetChatScroll(); - state.applySettings({ - ...state.settings, - sessionKey: next, - lastActiveSessionKey: next, - }); - void state.loadAssistantIdentity(); - void loadChatHistory(state); - void refreshChatAvatar(state); - }, - thinkingLevel: state.chatThinkingLevel, - showThinking, - loading: state.chatLoading, - sending: state.chatSending, - compactionStatus: state.compactionStatus, - assistantAvatarUrl: chatAvatarUrl, - messages: state.chatMessages, - toolMessages: state.chatToolMessages, - stream: state.chatStream, - streamStartedAt: state.chatStreamStartedAt, - draft: state.chatMessage, - queue: state.chatQueue, - connected: state.connected, - canSend: state.connected, - disabledReason: chatDisabledReason, - error: state.lastError, - sessions: state.sessionsResult, - focusMode: chatFocus, - onRefresh: () => { - state.resetToolStream(); - return Promise.all([loadChatHistory(state), refreshChatAvatar(state)]); - }, - onToggleFocusMode: () => { - if (state.onboarding) return; - state.applySettings({ - ...state.settings, - chatFocusMode: !state.settings.chatFocusMode, - }); - }, - onChatScroll: (event) => state.handleChatScroll(event), - onDraftChange: (next) => (state.chatMessage = next), - attachments: state.chatAttachments, - onAttachmentsChange: (next) => (state.chatAttachments = next), - onSend: () => state.handleSendChat(), - canAbort: Boolean(state.chatRunId), - onAbort: () => void state.handleAbortChat(), - onQueueRemove: (id) => state.removeQueuedMessage(id), - onNewSession: () => - state.handleSendChat("/new", { restoreDraft: true }), - // Sidebar props for tool output viewing - sidebarOpen: state.sidebarOpen, - sidebarContent: state.sidebarContent, - sidebarError: state.sidebarError, - splitRatio: state.splitRatio, - onOpenSidebar: (content: string) => state.handleOpenSidebar(content), - onCloseSidebar: () => state.handleCloseSidebar(), - onSplitRatioChange: (ratio: number) => state.handleSplitRatioChange(ratio), - assistantName: state.assistantName, - assistantAvatar: state.assistantAvatar, - }) - : nothing} + ${ + state.tab === "chat" + ? renderChat({ + sessionKey: state.sessionKey, + onSessionKeyChange: (next) => { + state.sessionKey = next; + state.chatMessage = ""; + state.chatAttachments = []; + state.chatStream = null; + state.chatStreamStartedAt = null; + state.chatRunId = null; + state.chatQueue = []; + state.resetToolStream(); + state.resetChatScroll(); + state.applySettings({ + ...state.settings, + sessionKey: next, + lastActiveSessionKey: next, + }); + void state.loadAssistantIdentity(); + void loadChatHistory(state); + void refreshChatAvatar(state); + }, + thinkingLevel: state.chatThinkingLevel, + showThinking, + loading: state.chatLoading, + sending: state.chatSending, + compactionStatus: state.compactionStatus, + assistantAvatarUrl: chatAvatarUrl, + messages: state.chatMessages, + toolMessages: state.chatToolMessages, + stream: state.chatStream, + streamStartedAt: state.chatStreamStartedAt, + draft: state.chatMessage, + queue: state.chatQueue, + connected: state.connected, + canSend: state.connected, + disabledReason: chatDisabledReason, + error: state.lastError, + sessions: state.sessionsResult, + focusMode: chatFocus, + onRefresh: () => { + state.resetToolStream(); + return Promise.all([loadChatHistory(state), refreshChatAvatar(state)]); + }, + onToggleFocusMode: () => { + if (state.onboarding) return; + state.applySettings({ + ...state.settings, + chatFocusMode: !state.settings.chatFocusMode, + }); + }, + onChatScroll: (event) => state.handleChatScroll(event), + onDraftChange: (next) => (state.chatMessage = next), + attachments: state.chatAttachments, + onAttachmentsChange: (next) => (state.chatAttachments = next), + onSend: () => state.handleSendChat(), + canAbort: Boolean(state.chatRunId), + onAbort: () => void state.handleAbortChat(), + onQueueRemove: (id) => state.removeQueuedMessage(id), + onNewSession: () => state.handleSendChat("/new", { restoreDraft: true }), + // Sidebar props for tool output viewing + sidebarOpen: state.sidebarOpen, + sidebarContent: state.sidebarContent, + sidebarError: state.sidebarError, + splitRatio: state.splitRatio, + onOpenSidebar: (content: string) => state.handleOpenSidebar(content), + onCloseSidebar: () => state.handleCloseSidebar(), + onSplitRatioChange: (ratio: number) => state.handleSplitRatioChange(ratio), + assistantName: state.assistantName, + assistantAvatar: state.assistantAvatar, + }) + : nothing + } ${ state.tab === "config" diff --git a/ui/src/ui/chat/grouped-render.ts b/ui/src/ui/chat/grouped-render.ts index 45a9b2155..e8baf2784 100644 --- a/ui/src/ui/chat/grouped-render.ts +++ b/ui/src/ui/chat/grouped-render.ts @@ -35,9 +35,7 @@ function extractImages(message: unknown): ImageBlock[] { const data = source.data as string; const mediaType = (source.media_type as string) || "image/png"; // If data is already a data URL, use it directly - const url = data.startsWith("data:") - ? data - : `data:${mediaType};base64,${data}`; + const url = data.startsWith("data:") ? data : `data:${mediaType};base64,${data}`; images.push({ url }); } else if (typeof b.url === "string") { images.push({ url: b.url }); @@ -260,14 +258,18 @@ function renderGroupedMessage(
${canCopyMarkdown ? renderCopyAsMarkdownButton(markdown!) : nothing} ${renderMessageImages(images)} - ${reasoningMarkdown - ? html`
${unsafeHTML( - toSanitizedMarkdownHtml(reasoningMarkdown), - )}
` - : nothing} - ${markdown - ? html`
${unsafeHTML(toSanitizedMarkdownHtml(markdown))}
` - : nothing} + ${ + reasoningMarkdown + ? html`
${unsafeHTML( + toSanitizedMarkdownHtml(reasoningMarkdown), + )}
` + : nothing + } + ${ + markdown + ? html`
${unsafeHTML(toSanitizedMarkdownHtml(markdown))}
` + : nothing + } ${toolCards.map((card) => renderToolCardSidebar(card, onOpenSidebar))}
`; diff --git a/ui/src/ui/controllers/chat.test.ts b/ui/src/ui/controllers/chat.test.ts index c75ceefc4..b4f16435f 100644 --- a/ui/src/ui/controllers/chat.test.ts +++ b/ui/src/ui/controllers/chat.test.ts @@ -1,10 +1,6 @@ import { describe, expect, it } from "vitest"; -import { - handleChatEvent, - type ChatEventPayload, - type ChatState, -} from "./chat"; +import { handleChatEvent, type ChatEventPayload, type ChatState } from "./chat"; function createState(overrides: Partial = {}): ChatState { return { diff --git a/ui/src/ui/controllers/chat.ts b/ui/src/ui/controllers/chat.ts index bc9cff6d5..372a246e6 100644 --- a/ui/src/ui/controllers/chat.ts +++ b/ui/src/ui/controllers/chat.ts @@ -159,11 +159,7 @@ export function handleChatEvent(state: ChatState, payload?: ChatEventPayload) { // Final from another run (e.g. sub-agent announce): refresh history to show new message. // See https://github.com/clawdbot/clawdbot/issues/1909 - if ( - payload.runId && - state.chatRunId && - payload.runId !== state.chatRunId - ) { + if (payload.runId && state.chatRunId && payload.runId !== state.chatRunId) { if (payload.state === "final") return "final"; return null; } diff --git a/ui/src/ui/views/chat.ts b/ui/src/ui/views/chat.ts index 571a9d4df..9f996b98f 100644 --- a/ui/src/ui/views/chat.ts +++ b/ui/src/ui/views/chat.ts @@ -99,10 +99,7 @@ function generateAttachmentId(): string { return `att-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`; } -function handlePaste( - e: ClipboardEvent, - props: ChatProps, -) { +function handlePaste(e: ClipboardEvent, props: ChatProps) { const items = e.clipboardData?.items; if (!items || !props.onAttachmentsChange) return; @@ -156,9 +153,7 @@ function renderAttachmentPreview(props: ChatProps) { type="button" aria-label="Remove attachment" @click=${() => { - const next = (props.attachments ?? []).filter( - (a) => a.id !== att.id, - ); + const next = (props.attachments ?? []).filter((a) => a.id !== att.id); props.onAttachmentsChange?.(next); }} > @@ -305,10 +300,10 @@ export function renderChat(props: ChatProps) { (item) => html`
- ${item.text || - (item.attachments?.length - ? `Image (${item.attachments.length})` - : "")} + ${ + item.text || + (item.attachments?.length ? `Image (${item.attachments.length})` : "") + }