diff --git a/src/components/ChatPane.tsx b/src/components/ChatPane.tsx index ce4f202..1ef1b83 100644 --- a/src/components/ChatPane.tsx +++ b/src/components/ChatPane.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from 'preact/hooks' +import { useEffect, useRef, useState, useMemo } from 'preact/hooks' import { marked } from 'marked' import mermaid from 'mermaid' @@ -201,6 +201,15 @@ export function ChatPane({ session, cfg, messages, onSend, onStop, browsePath, b const [renaming, setRenaming] = useState(false) const [renameVal, setRenameVal] = useState('') + // Pre-render message HTML so typing in PromptBar doesn't re-parse everything + const renderedHtml = useMemo(() => + messages.map(msg => + (msg.role === 'user' || msg.role === 'assistant') + ? linkifyPaths((marked.parse(msg.content) as string), session.cwd) + : ''), + [messages, session.cwd] + ) + const startRename = () => { setRenaming(true); setRenameVal(sid) } const commitRename = () => { setRenaming(false) @@ -251,7 +260,7 @@ export function ChatPane({ session, cfg, messages, onSend, onStop, browsePath, b