diff --git a/webui/src/components/FileReferenceChip.tsx b/webui/src/components/FileReferenceChip.tsx index 5526fec7..6298c42a 100644 --- a/webui/src/components/FileReferenceChip.tsx +++ b/webui/src/components/FileReferenceChip.tsx @@ -87,7 +87,7 @@ export function FileReferenceChip({ )} - + {label} @@ -417,7 +417,7 @@ export default function MarkdownTextRenderer({ return ( ); }, + table({ children, ...props }) { + // Wrap wide markdown tables in a horizontal-scroll container (the + // pattern used by DeepSeek/others) so a 6+ column table scrolls inside + // the conversation column instead of forcing the page wider than 100vw. + // min-w-max keeps natural column widths; w-full stretches narrow tables. + return ( +
+ + {children} +
+
+ ); + }, li({ children: markdownChildren, className: itemClassName }) { const link = inlineLinkPreviewFromChildren(markdownChildren); if (link) { diff --git a/webui/src/components/MessageBubble.tsx b/webui/src/components/MessageBubble.tsx index 7cb9cf97..51e8fb0b 100644 --- a/webui/src/components/MessageBubble.tsx +++ b/webui/src/components/MessageBubble.tsx @@ -147,8 +147,8 @@ export function MessageBubble({ {hasText ? (

by the markdown renderer's + custom `table` component (see MarkdownTextRenderer); min-w-max on the + keeps natural column widths so it scrolls instead of shrinking. */ /* Clip any residual horizontal bleed at the thread column edge. Vertical scrolling and internal code-block scroll are unaffected. */