Repository navigation
fix(gantt): warn when an after/until reference or a duration cannot be resolved - #8254
Conversation
Also warns when a task end value is neither a valid date nor a valid duration, which is what makes a milestone declared without a duration fail silently. Refs mermaid-js#4121
🦋 Changeset detectedLatest commit: 351d7d2 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
✅ Deploy Preview for mermaid-js ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughGantt parsing now warns about unknown ChangesGantt validation warnings
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~12 minutes Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to The warning behavior is covered without changing the established Gantt scheduling fallbacks, so no merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Linked Issues checkExplanation The change does not implement the behavior required by issue
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
@mermaid-js/examples
mermaid
@mermaid-js/layout-elk
@mermaid-js/layout-tidy-tree
@mermaid-js/mermaid-zenuml
@mermaid-js/parser
@mermaid-js/tiny
commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #8254 +/- ##
===========================================
- Coverage 80.71% 78.49% -2.23%
===========================================
Files 619 619
Lines 84920 84956 +36
Branches 16074 18512 +2438
===========================================
- Hits 68547 66687 -1860
- Misses 15354 17377 +2023
+ Partials 1019 892 -127
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
The latest updates on your projects. Learn more about Argos notifications ↗︎
|
knsv-bot
left a comment
There was a problem hiding this comment.
[sisyphus-bot]
Thanks for picking this one up, @galshir! Issue #4121 has been sitting open for a long time, and the write-up in the PR description is the clearest diagnosis of it so far. The decision to keep the fallback behaviour and only make the failures visible is exactly the right call for a diagram type that is rendered on millions of existing pages.
I checked out the branch, ran the gantt unit tests (52 pass, 1 pre-existing skip), ESLint and Prettier on the changed files (clean), and ran a few extra probes against the docs' milestone examples, timestamp date formats (x/X), and the exact diagram from the issue. No false-positive warnings on valid input, and the issue's diagram now produces a warning for each root cause.
What's working well
- 🎉 [praise] The duration warning fires on the actual root cause of #4121 (
m1being parsed as a duration), not just on the downstreamafter m1symptom. That is the message a user needs to see, and pointing both messages at the correct milestone syntax is a nice touch. - 🎉 [praise] Filtering empty ids out of
ids.split(' ')is a small, correct hardening of theafter/untilparsing (after a bno longer looks up an empty id). Rendering output and control flow are otherwise unchanged, so there is no visual regression risk. - 🎉 [praise] Tests cover the positive case, the negative case, and the "no warning when everything resolves" case, and follow the existing
vi.spyOn(log, 'warn')pattern. The changeset is a correctly scopedpatchwith afix:prefix.
Security
Reviewed for XSS/injection. The warning strings interpolate user-controlled diagram text, but they only reach log.warn (a console.warn.bind(...) with the user text as a trailing argument, so %c/%s are not interpreted), never a DOM sink. No DOMPurify or SVG changes. No issues identified.
Things to consider
- 💡 [suggestion] (pre-existing, optional in this PR)
taskDbatganttDb.js:595is a module-levelconstthat is never reset inclear(). On a page with more than one gantt chart, an id from an earlier diagram still resolves in a later one, sofindTaskByIdreturns whatever task happens to sit at that index in the newrawTasksarray and the new "unknown task id" warning stays silent. It also makes the new tests order-dependent within the spec file (they rely on no earlier test having registeredm1). Switching it tolet taskDb = {}and resetting it inclear()would be a two-line change that makes the warning trustworthy. Happy to see this as a follow-up PR instead if you would rather keep this one focused. - 🟢 [nit]
getTasks()re-runscompileTasks()up to ten times when a task's start cannot be resolved on the first pass, and each pass re-emits every warning. In practice the renderer callsgetTasks()once and most diagrams resolve in a single pass, so this is cosmetic. If you want to dedupe, collecting warnings into aSetand flushing them once at the end ofgetTasks()would do it.
Verdict: approving. Let's get this across the finish line.
|
@galshir, Thank you for the contribution! |
…nresolved-task-references fix(gantt): warn when an after/until reference or a duration cannot be resolved
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
📑 Summary
Refs #4121 (this PR makes the two silent failures behind that report visible; the scheduling fallback itself is unchanged, so the issue should stay open)
A gantt milestone written without a duration (
M1, :milestone, 2023-01-01, m1) is parsed as a two-field task, som1is consumed as the "duration" and the milestone never gets that id. A laterafter m1then finds nothing and silently falls back to today's date. Both failures are silent, which is what made the original report hard to diagnose.This PR keeps the existing fallback behaviour - there are tests that rely on it - and only makes the failures visible:
afteranduntilnow warn about task ids they could not resolve.Both warnings point at the correct milestone syntax (
Milestone :milestone, m1, 2023-01-01, 0d).📏 Design Decisions
Warnings rather than errors, so no existing diagram changes the way it renders. The unit tests use
vi.spyOn(log, 'warn'), following the existing pattern inflow-style.spec.jsandgitGraph.spec.ts. No documentation change is needed: the docs already state that invalid duration tokens are ignored and that the task defaults to zero duration.📋 Tasks
Make sure you
MERMAID_RELEASE_VERSIONis used for all new features.pnpm changesetand following the prompts. Changesets that add features should beminorand those that fix bugs should bepatch. Please prefix changeset messages withfeat:,fix:, orchore:.