diff --git a/ui/src/components/markdown-parser.ts b/ui/src/components/markdown-parser.ts index 75af77b68a3b..84a7c3b23b4e 100644 --- a/ui/src/components/markdown-parser.ts +++ b/ui/src/components/markdown-parser.ts @@ -73,8 +73,8 @@ function renderRawMarkdownHtml( if (progressBars) { return PROGRESS_HTML_RE.test(content.trim()) ? content : ""; } - if (!block && /^$/iu.test(content)) { - return "
"; + if (/^$/iu.test(content.trim())) { + return block ? "
\n" : "
"; } return escapeMarkdownHtml(content) + (block ? "\n" : ""); } diff --git a/ui/src/components/markdown.test.ts b/ui/src/components/markdown.test.ts index 4d47fd72085b..e9142fcd6b79 100644 --- a/ui/src/components/markdown.test.ts +++ b/ui/src/components/markdown.test.ts @@ -145,6 +145,12 @@ describe("toSanitizedMarkdownHtml", () => { expect(cell?.textContent).toBe("一二"); }); + it("renders an attribute-free line break between Markdown blocks", () => { + const html = toSanitizedMarkdownHtml("before\n\n
\n\nafter"); + + expect(html).toBe("

before

\n
\n

after

\n"); + }); + it.each([ '
', '
',