diff --git a/src/components/markdown.tsx b/src/components/markdown.tsx index 4e54db99..742e49c6 100644 --- a/src/components/markdown.tsx +++ b/src/components/markdown.tsx @@ -6,6 +6,7 @@ interface MarkdownProps { part: TextPart isDark?: boolean size?: "base" | "sm" | "tight" + disableHighlight?: boolean } export function Markdown(props: MarkdownProps) { @@ -19,11 +20,30 @@ export function Markdown(props: MarkdownProps) { const text = decodeHtmlEntities(rawText) const dark = Boolean(props.isDark) const themeKey = dark ? "dark" : "light" + const highlightEnabled = !props.disableHighlight latestRequestedText = text await initMarkdown(dark) + if (!highlightEnabled) { + part.renderCache = undefined + + try { + const rendered = await renderMarkdown(text, { suppressHighlight: true }) + + if (latestRequestedText === text) { + setHtml(rendered) + } + } catch (error) { + console.error("Failed to render markdown:", error) + if (latestRequestedText === text) { + setHtml(text) + } + } + return + } + const cache = part.renderCache if (cache && cache.text === text && cache.theme === themeKey) { setHtml(cache.html) @@ -72,6 +92,10 @@ export function Markdown(props: MarkdownProps) { // Register listener for language loading completion const cleanupLanguageListener = onLanguagesLoaded(async () => { + if (props.disableHighlight) { + return + } + const part = props.part const rawText = typeof part.text === "string" ? part.text : "" const text = decodeHtmlEntities(rawText) diff --git a/src/components/tool-call.tsx b/src/components/tool-call.tsx index 48454110..05b9be7f 100644 --- a/src/components/tool-call.tsx +++ b/src/components/tool-call.tsx @@ -290,10 +290,15 @@ export default function ToolCall(props: ToolCallProps) { const isLarge = toolName === "edit" || toolName === "write" || toolName === "patch" const messageClass = `message-text tool-call-markdown${isLarge ? " tool-call-markdown-large" : ""}` + const disableHighlight = state?.status === "running" return (
) } diff --git a/src/lib/markdown.ts b/src/lib/markdown.ts index 8f1a48f8..ac31d5fc 100644 --- a/src/lib/markdown.ts +++ b/src/lib/markdown.ts @@ -5,6 +5,7 @@ let highlighter: Highlighter | null = null let highlighterPromise: Promise${escapeHtml(decodedCode)}${escapeHtml(decodedCode)}