Skip to content

fix(sequence): allow Link as a participant ID - #8282

Merged
knsv merged 1 commit into
mermaid-js:developfrom
belomaxorka:bug/8280_sequence-link-participant
Sep 28, 2026
Merged

knsv merged 1 commit into
mermaid-js:developfrom
belomaxorka:bug/8280_sequence-link-participant

Conversation

@belomaxorka

@belomaxorka belomaxorka commented Sep 20, 2026 •

Copy link
Copy Markdown

📑 Summary

participant Link as Channel parses, but A->>Link: message fails with got 'link'. Allow Link, link, and LINK as message endpoints and actor-menu targets, preserving their spelling and display aliases.

Resolves #8280

📏 Design Decisions

Accept the existing link token in the actor production. The lexer and the link/links command productions stay intact, so ordinary actor menus still work. Jison reports no grammar conflicts.

Nine regression cases fail with the original grammar and pass with the fix. Local validation: 6521 unit tests with coverage, all 231 sequence tests, pnpm lint, and pnpm build. All 44 existing sequence Chromium scenarios passed, including four rerun after dev-server startup failures/timeouts; 12 additional checks rendered the affected IDs in classic and neo looks.

The out-of-tree tarball/TypeScript check also passed. Windows validation used four Vitest workers, LF shebangs, and an external CLI adapter that runs the original parser prepack once through Node. No unrelated source changes are included.

📋 Tasks

  • 📖 Read the contribution guidelines.
  • 💻 Added necessary regression tests.
  • 📓 Documentation reviewed; no new syntax to document.
  • 🦋 Added a fix: patch changeset for mermaid.

Summary

Fixes sequence diagrams so participant IDs named Link, link, or LINK can be used as message endpoints and actor-menu targets.

Changes

  • Updated the sequence parser to accept the existing link token in the actor production.
  • Preserved participant spelling and display aliases.
  • Kept existing link and links actor-menu commands unchanged.
  • Added regression tests for case variants, aliases, message endpoints, and actor-menu syntax.
  • Added a patch changeset for mermaid.

Validation

The PR reports successful unit, sequence, lint, build, Chromium, TypeScript, and Windows validation.

No documentation changes were added.

@changeset-bot

changeset-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b6d952d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
mermaid Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@netlify

netlify Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for mermaid-js ready!

Name Link
🔨 Latest commit b6d952d
🔍 Latest deploy log https://app.netlify.com/projects/mermaid-js/deploys/6ab05970b8d37800087cff58
😎 Deploy Preview https://deploy-preview-8282--mermaid-js.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the Type: Bug / Error Something isn't working or is incorrect label Sep 20, 2026
@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 793da7b9-943b-493c-b0de-2d4d9f478d89

📥 Commits

Reviewing files that changed from the base of the PR and between 386bbca and b6d952d.

📒 Files selected for processing (3)
  • .changeset/sequence-link-participant.md
  • packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison
  • packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The sequence parser now accepts Link, link, and LINK as participant identifiers in message endpoints and actor menus. Tests cover aliases, implicit participants, message mappings, and both actor-menu commands. A patch changeset records the fix.

Changes

Sequence participant identifiers

Layer / File(s) Summary
Participant grammar support
packages/mermaid/src/diagrams/sequence/parser/sequenceDiagram.jison
The actor production now accepts the link token as well as ACTOR.
Behavior validation and release metadata
packages/mermaid/src/diagrams/sequence/sequenceDiagram.spec.js, .changeset/sequence-link-participant.md
Parameterized tests cover case variants, aliases, message endpoints, and link/links actor-menu syntax. The changeset declares a patch release.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: mir-ashiq

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the main fix: allowing Link as a sequence participant ID.
Description check ✅ Passed The description includes the required summary, issue reference, design decisions, validation details, and completed task checklist. It accurately covers the parser fix, regression tests, documentation…
Linked Issues check ✅ Passed The change satisfies #8280. The sequence grammar accepts the existing case-insensitive link token in the actor production. The semantic value preserves the token spelling, so declared Link, `lin…
Out of Scope Changes check ✅ Passed The changed files stay within #8280. The parser change implements the keyword collision fix. The regression tests verify the required behavior. The patch changeset records the Mermaid package fix. No …
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

@mermaid-js/examples

npm i https://pkg.pr.new/@mermaid-js/examples@8282

mermaid

npm i https://pkg.pr.new/mermaid@8282

@mermaid-js/layout-elk

npm i https://pkg.pr.new/@mermaid-js/layout-elk@8282

@mermaid-js/layout-tidy-tree

npm i https://pkg.pr.new/@mermaid-js/layout-tidy-tree@8282

@mermaid-js/mermaid-zenuml

npm i https://pkg.pr.new/@mermaid-js/mermaid-zenuml@8282

@mermaid-js/parser

npm i https://pkg.pr.new/@mermaid-js/parser@8282

@mermaid-js/tiny

npm i https://pkg.pr.new/@mermaid-js/tiny@8282

commit: b6d952d

@codecov

codecov Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.60%. Comparing base (386bbca) to head (b6d952d).
⚠️ Report is 26 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #8282      +/-   ##
===========================================
- Coverage    80.73%   78.60%   -2.14%     
===========================================
  Files          619      619              
  Lines        84970    84970              
  Branches     18596    16011    -2585     
===========================================
- Hits         68601    66787    -1814     
- Misses       15350    17285    +1935     
+ Partials      1019      898     -121     
Flag Coverage Δ
e2e 66.51% <100.00%> (-7.12%) ⬇️
unit 78.80% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...src/diagrams/sequence/parser/sequenceDiagram.jison 60.51% <100.00%> (ø)

... and 115 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@argos-ci

argos-ci Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
default (Inspect) ✅ No changes detected 1 ignored Sep 20, 2026, 10:35 PM

@knsv knsv added the v12.0.1 label Sep 28, 2026

@knsv-bot knsv-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[sisyphus-bot]

Thanks for this fix, @belomaxorka — and for the unusually thorough PR description and the linked issue's reproduction table. This is a small, surgical change and it is exactly the right shape: the link token is accepted in the actor production, the lexer and the link/links command productions are untouched, and Jison confirms zero grammar conflicts.

I applied the diff locally and verified: all 157 sequence unit tests pass, pnpm lint:jison is clean, and Link now works in every position that goes through actor — messages, the +/- activation shorthand, Note over A,Link, activate/deactivate/destroy, and link/links menu targets. Regular actor menus on other participants still work.

What's working well

  • 🎉 [praise] Minimal blast radius. Adding one alternative to actor (sequenceDiagram.jison:380-383) fixes every downstream production at once without touching the lexer, so there is no risk to existing link A: Label @ url diagrams.
  • 🎉 [praise] The tests are well chosen: it.each over Link/link/LINK covers the case-insensitive lexer, the alias case asserts the description survives, the implicit-endpoint case covers Link at the start of a line, and the actor-menu case proves the keyword and the actor id coexist on the same line (link Link: ...).
  • 🎉 [praise] Changeset is present, correctly scoped as patch, and clearly worded.

Things to consider (none blocking)

  • 💡 [suggestion] The sibling keywords have the identical problem. participant Links / A->>Links: m fails with Expecting 'link', '+', '-', '()', 'ACTOR', got 'links', and the same holds for Properties and Details. I tried adding 'links', 'properties' and 'details' as further alternatives to actor locally: Jison still reports zero conflicts and the full sequence spec passes. If you are up for it, extending the fix in this PR (with the same it.each pattern) would close the whole family; if you would rather keep this PR scoped to #8280 as filed, that is completely fine and a follow-up issue would be welcome instead.
  • 🟢 [nit] Now that link is reachable as an actor id from the initial lexer state, a single negative test asserting that link link: X @ javascript:alert(1) still ends up neutralised by sanitizeUrl would pin that guarantee. Optional — the sanitization path is unchanged by this PR (see below).

Security

No XSS or injection issues identified. The new alternative passes the token's yytext, which for the "link" lexer rule can only be link/Link/LINK — strictly narrower than what ACTOR already accepts, so no new characters reach addParticipant. Actor-menu labels and URLs still go through sanitizeText in sequenceDb.ts and sanitizeUrl before being set as xlink:href in svgDraw.js; actor labels are rendered via .text(), not .html(). No DOMPurify configuration is touched.

Verdict

Approving. This is ready to merge as-is; the suggestion above is purely optional.

@knsv
knsv added this pull request to the merge queue Sep 28, 2026
Merged via the queue into mermaid-js:develop with commit fb4438e Sep 28, 2026
26 checks passed
@mermaid-bot

mermaid-bot Bot commented Sep 28, 2026

Copy link
Copy Markdown

@belomaxorka, Thank you for the contribution!
You are now eligible for a year of Premium account on MermaidChart.
Sign up with your GitHub account to activate.

@github-actions github-actions Bot mentioned this pull request Oct 2, 2026
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 2, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 3, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 3, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 3, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 3, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 4, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 4, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 4, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 5, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 5, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 6, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 6, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 6, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 7, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 7, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 7, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 8, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 8, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
github-actions Bot added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 8, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
ark-65 added a commit to zhongmiao-org/mermaid-markdown-bridge that referenced this pull request Oct 9, 2026
Upstream release: https://github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.1.0

Release notes:
### Minor Changes

-   [#8303](mermaid-js/mermaid#8303) [`9140716`](mermaid-js/mermaid@9140716) Thanks [@filipsajdak](https://github.com/filipsajdak)! - feat: add the `elk.orientFeedbackEdges` option, enabled by default. With the ELK layout, an edge from a node that a subgraph feeds back into that subgraph is now routed downstream instead of around the subgraph. This changes the layout of existing ELK diagrams that contain such edges; set `elk.orientFeedbackEdges: false` to keep the previous routing.

-   [#8250](mermaid-js/mermaid#8250) [`fd4f5f2`](mermaid-js/mermaid@fd4f5f2) Thanks [@kartben](https://github.com/kartben)! - feat: add a `bitOrder` option to packet diagrams. It defaults to `ascending`, which is the current
    behaviour, and `descending` mirrors every row so it reads from that row's highest bit down to its
    lowest. Fields are still declared lowest bit first and keep their width, so switching a diagram
    between the two conventions only means changing `bitOrder`.

### Patch Changes

-   [#8330](mermaid-js/mermaid#8330) [`50c9e55`](mermaid-js/mermaid@50c9e55) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade chevrotain to 13 so mermaid no longer pulls in vulnerable `lodash-es@4.17.23`

-   [#8259](mermaid-js/mermaid#8259) [`4c90f5c`](mermaid-js/mermaid@4c90f5c) Thanks [@afonsojanu](https://github.com/afonsojanu)! - fix(sequence): allow whitespace between an actor name and its `@{ ... }` config object

    `participant Bob@{ "type" : "database" }` parsed fine, but adding a single space before the
    config object (`participant Bob @{ "type" : "database" }`) failed with a confusing parse error,
    even though the plain form without a config object tolerates trailing whitespace just fine.

-   [#8339](mermaid-js/mermaid#8339) [`c7fa1a5`](mermaid-js/mermaid@c7fa1a5) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: keep ELK class-diagram cardinalities off namespace frames

-   [#8334](mermaid-js/mermaid#8334) [`d67331d`](mermaid-js/mermaid@d67331d) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix(class): place cardinality labels beside their relation ends on dagre's sides with ELK, centre dagre's end labels, and stop clipping their text

-   [#8344](mermaid-js/mermaid#8344) [`99a050b`](mermaid-js/mermaid@99a050b) Thanks [@pbrolin47](https://github.com/pbrolin47)! - fix: with the ELK layout, an edge label could sit up to 16px beside its edge instead of centred on it, when the edge's terminal jog was straightened after the label's position was computed. The label is now re-projected onto the straightened route

-   [#8276](mermaid-js/mermaid#8276) [`3101c7d`](mermaid-js/mermaid@3101c7d) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(error): show the actual error message in the error diagram

    When a diagram fails to parse, the error diagram now draws the real error message below the
    "Syntax error in text" headline, wrapped to at most four lines. Hosts that only show the SVG
    (GitHub, GitLab, Obsidian, exported images) no longer hide what actually went wrong, e.g. that the
    flowchart edge limit was exceeded and `maxEdges` needs raising via `mermaid.initialize`.

-   [#8296](mermaid-js/mermaid#8296) [`aa29345`](mermaid-js/mermaid@aa29345) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: preserve explicit source relations on event modeling reset frames

-   [#8297](mermaid-js/mermaid#8297) [`967bbde`](mermaid-js/mermaid@967bbde) Thanks [@pentaoa](https://github.com/pentaoa)! - fix: reject duplicate event modeling frame IDs before rendering

-   [#8337](mermaid-js/mermaid#8337) [`147f343`](mermaid-js/mermaid@147f343) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: a flowchart that declares the same subgraph id more than once now renders as one merged subgraph with the ELK layout instead of producing NaN geometry. Classes and `view: collapsed` set on a repeated subgraph now apply to it, whichever declaration they follow.

-   [#8203](mermaid-js/mermaid#8203) [`40ef7b4`](mermaid-js/mermaid@40ef7b4) Thanks [@MFA-G](https://github.com/MFA-G)! - perf(frontmatter): replace the quadratic front matter regex on hot paths

    `frontMatterRegex` backtracks polynomially on whitespace-heavy input, so a
    diagram well inside the default `maxTextSize` could stall parsing for over a
    second. `detectType` and `extractFrontMatter` now use a linear scanner that
    matches the regex result exactly, leaving no document stripped differently.

-   [#8254](mermaid-js/mermaid#8254) [`351d7d2`](mermaid-js/mermaid@351d7d2) Thanks [@galshir](https://github.com/galshir)! - fix: warn when a gantt task references an unknown `after`/`until` task id, or when its end value is neither a valid date nor a valid duration

-   [#8249](mermaid-js/mermaid#8249) [`b657a2c`](mermaid-js/mermaid@b657a2c) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow hyphenated actor and participant names when a config object is attached

-   [#8300](mermaid-js/mermaid#8300) [`c38a565`](mermaid-js/mermaid@c38a565) Thanks [@filipsajdak](https://github.com/filipsajdak)! - fix: A partial override of an object-valued theme variable such as `xyChart`, `radar` or `cynefin` keeps the values the theme generates for the keys it leaves out

-   [#8333](mermaid-js/mermaid#8333) [`8afd83c`](mermaid-js/mermaid@8afd83c) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: upgrade the parser to langium 4.4 / chevrotain 13 so bundles no longer include `lodash-es@4.17.23`

-   [#8285](mermaid-js/mermaid#8285) [`859f1f8`](mermaid-js/mermaid@859f1f8) Thanks [@mir-ashiq](https://github.com/mir-ashiq)! - fix(sequence): allow actor-menu keywords as participant ids in messages

    A participant declared as `Link` (or `Links`, `Properties`, `Details`) could not be used as a
    message endpoint: the lexer matched the name as the `link` statement keyword and the parse failed.
    The `link`, `links`, `properties` and `details` keywords are now only recognized when an actor
    follows them on the same line, so participant ids that happen to spell these words work in
    messages, while the statements themselves keep parsing as before.

-   [#8282](mermaid-js/mermaid#8282) [`b6d952d`](mermaid-js/mermaid@b6d952d) Thanks [@belomaxorka](https://github.com/belomaxorka)! - fix(sequence): allow `Link` as a participant ID in messages and actor menus

    Preserve the ID's case and alias while keeping the `link` and `links` menu commands supported.

-   [#8345](mermaid-js/mermaid#8345) [`7917c1a`](mermaid-js/mermaid@7917c1a) Thanks [@knsv-bot](https://github.com/knsv-bot)! - fix: xychart measures text in SVG units so legends no longer clip on wide charts scaled to fit their container, and the chart title is dropped instead of overflowing when the chart is too short for it

-   [#8338](mermaid-js/mermaid#8338) [`4a722fb`](mermaid-js/mermaid@4a722fb) Thanks [@ashishjain0512](https://github.com/ashishjain0512)! - fix: Centre the xychart title over the plot area instead of the whole chart

-   Updated dependencies \[[`8afd83c`](mermaid-js/mermaid@8afd83c)]:
    -   @mermaid-js/parser@2.0.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: give me a 98K <240642031+inhuman-0@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: Bug / Error Something isn't working or is incorrect v12.0.1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sequence diagram: declared participant ID Link is rejected as the link keyword in messages

3 participants