From d74013c64200125e2f61d49e9acf4517bcef9328 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 13:05:44 +0530 Subject: [PATCH 1/8] fix: Remove data loss when unsupported markdown is encountered --- .../mermaid/src/rendering-util/handle-markdown-text.spec.ts | 6 +++++- packages/mermaid/src/rendering-util/handle-markdown-text.ts | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts index 3ab4167a2..2000d58b8 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.spec.ts @@ -285,7 +285,11 @@ test('markdownToHTML - Unsupported formatting', () => { - l1 - l2 - l3`) - ).toMatchInlineSnapshot('"

Hello

Unsupported markdown: list"'); + ).toMatchInlineSnapshot(` + "

Hello

- l1 + - l2 + - l3" + `); }); test('markdownToHTML - no auto wrapping', () => { diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts index f898875cf..82e94c2c2 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -3,6 +3,7 @@ import { marked } from 'marked'; import { dedent } from 'ts-dedent'; import type { MarkdownLine, MarkdownWordType } from './types.js'; import type { MermaidConfig } from '../config.type.js'; +import { log } from '../logger.js'; /** * @param markdown - markdown to process @@ -89,7 +90,8 @@ export function markdownToHTML(markdown: string, { markdownAutoWrap }: MermaidCo } else if (node.type === 'escape') { return node.text; } - return `Unsupported markdown: ${node.type}`; + log.warn(`Unsupported markdown: ${node.type}`); + return node.raw; } return nodes.map(output).join(''); From da90f6760b6efb0da998bcb63b75eecc29e06c08 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 02:16:38 -0700 Subject: [PATCH 2/8] Create strong-laws-confess.md --- .changeset/strong-laws-confess.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strong-laws-confess.md diff --git a/.changeset/strong-laws-confess.md b/.changeset/strong-laws-confess.md new file mode 100644 index 000000000..79230b10c --- /dev/null +++ b/.changeset/strong-laws-confess.md @@ -0,0 +1,5 @@ +--- +"mermaid": patch +--- + +fix: Remove data loss when unsupported markdown is encountered From 7af6723ac0234105907cb3aecfef5ef95ff5617f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 14:48:37 +0530 Subject: [PATCH 3/8] test: Add E2E test for unsupported markdown --- .../integration/rendering/flowchart-v2.spec.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index 69ff10b00..bafe40610 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -1164,4 +1164,20 @@ end ` ); }); + + it('should render raw strings for unsuported markdown', () => { + imgSnapshotTest( + `flowchart TB + mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"\`<**1**1\`"--> fine["No bug"] + mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"] + subgraph subgraph1["\`How to fix **fix**\`"] + broken --> B["B"] + end + githost["Github, Gitlab, BitBucket, etc."] + githost2["\`Github, Gitlab, BitBucket, etc.\`"] + a["1."] + b["- x"] + ` + ); + }); }); From 60feec465beb92f2e8d396b49b640f9e40ac7567 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 09:26:22 +0000 Subject: [PATCH 4/8] [autofix.ci] apply automated fixes --- .changeset/strong-laws-confess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/strong-laws-confess.md b/.changeset/strong-laws-confess.md index 79230b10c..45ce775f2 100644 --- a/.changeset/strong-laws-confess.md +++ b/.changeset/strong-laws-confess.md @@ -1,5 +1,5 @@ --- -"mermaid": patch +'mermaid': patch --- fix: Remove data loss when unsupported markdown is encountered From 9c071a90645042431e131d92c9beb10d1cdbee4b Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 15:47:29 +0530 Subject: [PATCH 5/8] chore: Modify changeset Co-authored-by: Alois Klink --- .changeset/strong-laws-confess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/strong-laws-confess.md b/.changeset/strong-laws-confess.md index 45ce775f2..341fad46d 100644 --- a/.changeset/strong-laws-confess.md +++ b/.changeset/strong-laws-confess.md @@ -2,4 +2,4 @@ 'mermaid': patch --- -fix: Remove data loss when unsupported markdown is encountered +fix: fallback to raw text instead of rendering _Unsupported markdown_ From 52be254ad3b8cd2372b63180702ffce9a141eaa9 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 16:17:04 +0530 Subject: [PATCH 6/8] fix: fallback to raw text instead of rendering empty boxes when `htmlLabels: false` --- .../integration/rendering/flowchart-v2.spec.js | 16 +++++++++++----- .../src/rendering-util/handle-markdown-text.ts | 2 ++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cypress/integration/rendering/flowchart-v2.spec.js b/cypress/integration/rendering/flowchart-v2.spec.js index bafe40610..6756c433d 100644 --- a/cypress/integration/rendering/flowchart-v2.spec.js +++ b/cypress/integration/rendering/flowchart-v2.spec.js @@ -1165,9 +1165,8 @@ end ); }); - it('should render raw strings for unsuported markdown', () => { - imgSnapshotTest( - `flowchart TB + describe('when rendering unsuported markdown', () => { + const graph = `flowchart TB mermaid{"What is\nyourmermaid version?"} --> v10["<11"] --"\`<**1**1\`"--> fine["No bug"] mermaid --> v11[">= v11"] -- ">= v11" --> broken["Affected by https://github.com/mermaid-js/mermaid/issues/5824"] subgraph subgraph1["\`How to fix **fix**\`"] @@ -1177,7 +1176,14 @@ end githost2["\`Github, Gitlab, BitBucket, etc.\`"] a["1."] b["- x"] - ` - ); + `; + + it('should render raw strings', () => { + imgSnapshotTest(graph); + }); + + it('should render raw strings with htmlLabels: false', () => { + imgSnapshotTest(graph, { htmlLabels: false }); + }); }); }); diff --git a/packages/mermaid/src/rendering-util/handle-markdown-text.ts b/packages/mermaid/src/rendering-util/handle-markdown-text.ts index 82e94c2c2..b20b334f4 100644 --- a/packages/mermaid/src/rendering-util/handle-markdown-text.ts +++ b/packages/mermaid/src/rendering-util/handle-markdown-text.ts @@ -62,6 +62,8 @@ export function markdownToLines(markdown: string, config: MermaidConfig = {}): M }); } else if (treeNode.type === 'html') { lines[currentLine].push({ content: treeNode.text, type: 'normal' }); + } else { + lines[currentLine].push({ content: treeNode.raw, type: 'normal' }); } }); From accb4c6369c77b5423e1f037a1d7504871615bc7 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 03:47:30 -0700 Subject: [PATCH 7/8] Update .changeset/strong-laws-confess.md Co-authored-by: Alois Klink --- .changeset/strong-laws-confess.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.changeset/strong-laws-confess.md b/.changeset/strong-laws-confess.md index 341fad46d..49a242d59 100644 --- a/.changeset/strong-laws-confess.md +++ b/.changeset/strong-laws-confess.md @@ -3,3 +3,7 @@ --- fix: fallback to raw text instead of rendering _Unsupported markdown_ + +Instead of printing **Unsupported markdown: XXX** when using a markdown feature +that Mermaid does not yet support when `htmlLabels: true` (default), +fallback to the raw markdown text. From 6a6289f2aa81ef3661538e36941222d0738697ed Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 14 Aug 2025 16:18:45 +0530 Subject: [PATCH 8/8] chore: Modify changeset --- .changeset/strong-laws-confess.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/strong-laws-confess.md b/.changeset/strong-laws-confess.md index 49a242d59..be0621d10 100644 --- a/.changeset/strong-laws-confess.md +++ b/.changeset/strong-laws-confess.md @@ -2,8 +2,8 @@ 'mermaid': patch --- -fix: fallback to raw text instead of rendering _Unsupported markdown_ +fix: fallback to raw text instead of rendering _Unsupported markdown_ or empty blocks -Instead of printing **Unsupported markdown: XXX** when using a markdown feature -that Mermaid does not yet support when `htmlLabels: true` (default), +Instead of printing **Unsupported markdown: XXX**, or empty blocks when using a markdown feature +that Mermaid does not yet support when `htmlLabels: true`(default) or `htmlLabels: false`, fallback to the raw markdown text.