diff --git a/src/lib/components/chat/Messages/Citations/CitationModal.svelte b/src/lib/components/chat/Messages/Citations/CitationModal.svelte index a90abd2590..9ec0fe03b3 100644 --- a/src/lib/components/chat/Messages/Citations/CitationModal.svelte +++ b/src/lib/components/chat/Messages/Citations/CitationModal.svelte @@ -7,6 +7,7 @@ import XMark from '$lib/components/icons/XMark.svelte'; import Textarea from '$lib/components/common/Textarea.svelte'; + import Markdown from '$lib/components/chat/Messages/Markdown.svelte'; const i18n = getContext('i18n'); @@ -87,6 +88,24 @@ return fragment ? `${baseUrl}#:~:text=${fragment}` : baseUrl; }; + + const hasMarkdownSyntax = (text: string): boolean => { + if (!text) return false; + // Check for common markdown patterns + const markdownPatterns = [ + /^#{1,6}\s/m, // Headers + /\|.+\|/, // Tables + /^[-*+]\s/m, // Unordered lists + /^\d+\.\s/m, // Ordered lists + /^>\s/m, // Blockquotes + /\*\*.+\*\*/, // Bold + /__.+__/, // Bold (underscore) + /\*.+\*/, // Italic + /\[.+\]\(.+\)/, // Links + /`{1,3}.+`{1,3}/ // Code + ]; + return markdownPatterns.some(pattern => pattern.test(text)); + }; @@ -215,6 +234,15 @@ srcdoc={document.document} title={$i18n.t('Content')} > + {:else if hasMarkdownSyntax(document.document)} +
+ +
{:else}
{document.document
 										.trim()
diff --git a/src/lib/components/chat/Messages/Markdown.svelte b/src/lib/components/chat/Messages/Markdown.svelte
index 459b4b6b52..84bc38e3c5 100644
--- a/src/lib/components/chat/Messages/Markdown.svelte
+++ b/src/lib/components/chat/Messages/Markdown.svelte
@@ -37,7 +37,9 @@
 
 	const options = {
 		throwOnError: false,
-		breaks: true
+		breaks: true,
+		gfm: true,
+		tables: true
 	};
 
 	marked.use(markedKatexExtension(options));