Releases: mermaid-js/mermaid
Release list
@mermaid-js/mermaid-zenuml@1.0.1
Patch Changes
- #8248
3e9f40bThanks @sidharthv96! - Support Mermaid 12 in the ZenUML plugin while retaining Mermaid 10 and 11 compatibility.
@mermaid-js/layout-tidy-tree@1.0.1
Patch Changes
- #8248
3e9f40bThanks @sidharthv96! - Support Mermaid 12 in the tidy-tree layout package while retaining Mermaid 11 compatibility.
mermaid@12.0.0
Mermaid 12.0.0 ships ELK as the bundled default layout engine, a new redux-color / neo default appearance, and two new diagram types: UML use case diagrams.
This is a breaking release (ES2024, Safari 17.4+, Node 22.12+). Existing flowcharts, state and class diagrams will re-lay out and recolour; add layout: dagre, theme: default and look: classic to your config to keep the old look. Full changelog below.
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install. -
#8155
810893cThanks @ashishjain0512! - feat!: ELK is now bundled with mermaid and is the default layout algorithm.ELK previously shipped as a separate
@mermaid-js/layout-elkpackage that sites had to install and register. It is now part of mermaid itself and registered automatically, solayout: elk— and theelk.stress,elk.force,elk.mrtree,elk.sporeOverlap,elk.boxandelk.rectpackingvariants — work with no setup.This changes how existing diagrams look. Flowchart, state, class, entity-relationship, requirement, use-case diagrams that do not specify a
layoutare now laid out by ELK instead of dagre. To keep the previous layout, set dagre explicitly:--- config: layout: dagre ---
or globally,
mermaid.initialize({ layout: 'dagre' }).Mindmap is unchanged: it keeps laying out with cose-bilkent unless a layout is explicitly requested (in the tiny build, which ships neither ELK nor cose-bilkent, it falls back to dagre).
Other notes:
- ELK is loaded as a separate chunk in the ESM builds, so it is only fetched when a diagram actually uses it. The single-file IIFE build (
mermaid.min.js) inlines it and grows by roughly 500 kB gzipped. - The tiny build deliberately omits ELK to stay small, and falls back to dagre for diagrams that ask for an ELK layout. Its size is unchanged.
@mermaid-js/layout-elkis no longer needed on normal builds — existingmermaid.registerLayoutLoaders(elkLayouts)calls keep working and can be removed. It is still published, and remains the way to add ELK to the tiny build.dist/mermaid.esm.min.mjsnow contains syntax thates-module-lexer(used by Vite) rejects withcontent contains invalid JS syntax. Bundler users are unaffected as long as they import themermaidpackage specifier, which resolves to the core build; only builds that point Vite directly at that dist file need to switch to the package specifier or the core build.- State diagrams now resolve their layout through the same registration check as every other diagram, so an unavailable layout falls back instead of failing to render.
An unrecognised
themename now resolves to the default theme in name as well as in variables; previously the invalid name stayed in place while the default's variables were loaded, and every palette-aware stylesheet gates on the name.theme: 'null', the documented way to disable the pre-defined themes, is unaffected. Note thatneopaints node strokes with a gradient when the theme setsuseGradient, whichbasedoes; setting a customnodeBorderonbaseturns the gradient off. - ELK is loaded as a separate chunk in the ESM builds, so it is only fetched when a diagram actually uses it. The single-file IIFE build (
-
#8211
a19bd08Thanks @ashishjain0512! - Removed: thedefaultRendereroption of theflowchart,classandstateconfig sections.Use the top-level
layoutoption instead:--- config: layout: dagre # or elk ---
Why
defaultRenderernamed a rendering engine back when there was more than one. There is not.
All of its accepted values —dagre,dagre-wrapper,dagre-d3— had come to select the
same unified renderer, and itselkvalue did nothing but setlayout: elkon your behalf.
The option's documented purpose no longer existed.What it still did was stranger than doing nothing. The detectors branched on whether the
value was recognised, so a valid value routed a diagram to the modern renderer and an
invalid one silently routed it to the legacy renderer. Since the default was always a
valid value, the legacyclassandstaterenderers were unreachable except by
misconfiguring the option.What changes for you
layoutselects the layout algorithm, as it already did. Nothing else does.graph,classDiagramandstateDiagramalways render with the unified diagram. This
was already true for every valid configuration.- The legacy
flowchart,classandstatediagram ids are gone.flowchart-v2,
classDiagramandstateDiagramare whatdetectTypenow returns for that syntax. flowchart-elkas an explicit diagram keyword still works.
Configuration that still sets
defaultRendereris ignored rather than rejected, so nothing
throws — but it no longer has any effect, and diagrams that relied on
flowchart: { defaultRenderer: 'elk' }to get an ELK layout should setlayout: elk. -
#8223
6df1149Thanks @aloisklink! - refactor!: remove layout internal exportsRemove the
clearLayoutRenderState,createCommonLayoutRenderer,defaultMeasureLayout,paintLayoutDatafunctions,
and theCommonLayout*types from Mermaid's public API.These functions were only used by the
@mermaid-js/layout-elkpackage,
which now bundles them. Removing them makes it easier to avoid major versions
of mermaid.
Minor Changes
-
#8048
7a3c1a8Thanks @knsv-bot! - feat: add UML use case diagrams with actors, use cases, system boundaries, relationships, stereotypes, notes, JSON tables, class and style support, accessibility metadata, and business variants. -
#8073
cd48a64Thanks @knsv-bot! - feat:defaultMeasureLayoutaccepts aunwrapGroupLabelsoption so a layout engine can ask for cluster labels to be measured at their natural width instead of theflowchart.wrappingWidthfallback.insertClusterpaints a plain cluster label with an infinite width while the measurement pass wrapped it at 200px, so a layout that sizes compound nodes from the measured label sized them too narrow. Layouts now opt in explicitly; core no longer inspects the layout's name. Markdown cluster labels stay wrapped, since those are painted wrapped.The bundled ELK layout opts in, which changes the size of labelled subgraphs in ELK-laid-out diagrams. Diagrams laid out with dagre are unaffected.
-
#8073
0cf3797Thanks @knsv-bot! - feat: let a container pick its own ELK algorithm with@{ algorithm: … }, and addelk.boxandelk.rectpackingto the selectablelayoutvalues.A subgraph carrying
@{ algorithm: elk.box }is laid out with that algorithm in its own coordinate system instead of inheriting the diagram's. Supported values areelk.layered,elk.box,elk.rectpacking,elk.stress,elk.force,elk.mrtree,elk.radial, andelk.sporeOverlap; anything else is ignored with a warning rather than handed to ELK, where an unknown id would abort the layout. Containers with edges crossing their boundary fall back to the inherited algorithm, since isolated layout and cross-boundary edges are incompatible.Also in this release:
- ELK cluster labels are measured unwrapped, so a compound node is sized to fit its label instead of to a 200px wrapping width. This changes the size — and therefore the layout — of existing ELK diagrams that have labelled subgraphs.
elk.boxandelk.rectpackingplace nodes but never route edges. Edges they leave unrouted now fall back to a straight line between the two node centres instead of failing the render.keepEntryNodeOnToppins a cycle's true entry rather than the first-declared node when a back-edge feeds the entry, so recursive flows read from where they actually start.
@mermaid-js/tiny@12.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install. -
#8155
810893cThanks @ashishjain0512! - feat!: ELK is now bundled with mermaid and is the default layout algorithm.ELK previously shipped as a separate
@mermaid-js/layout-elkpackage that sites had to install and register. It is now part of mermaid itself and registered automatically, solayout: elk— and theelk.stress,elk.force,elk.mrtree,elk.sporeOverlap,elk.boxandelk.rectpackingvariants — work with no setup.This changes how existing diagrams look. Flowchart, state, class, entity-relationship, requirement, use-case and agentflow diagrams that do not specify a
layoutare now laid out by ELK instead of dagre. To keep the previous layout, set dagre explicitly:--- config: layout: dagre ---
or globally,
mermaid.initialize({ layout: 'dagre' }).Mindmap is unchanged: it keeps laying out with cose-bilkent unless a layout is explicitly requested (in the tiny build, which ships neither ELK nor cose-bilkent, it falls back to dagre).
Other notes:
- ELK is loaded as a separate chunk in the ESM builds, so it is only fetched when a diagram actually uses it. The single-file IIFE build (
mermaid.min.js) inlines it and grows by roughly 500 kB gzipped. - The tiny build deliberately omits ELK to stay small, and falls back to dagre for diagrams that ask for an ELK layout. Its size is unchanged.
@mermaid-js/layout-elkis no longer needed on normal builds — existingmermaid.registerLayoutLoaders(elkLayouts)calls keep working and can be removed. It is still published, and remains the way to add ELK to the tiny build.dist/mermaid.esm.min.mjsnow contains syntax thates-module-lexer(used by Vite) rejects withcontent contains invalid JS syntax. Bundler users are unaffected as long as they import themermaidpackage specifier, which resolves to the core build; only builds that point Vite directly at that dist file need to switch to the package specifier or the core build.- State diagrams now resolve their layout through the same registration check as every other diagram, so an unavailable layout falls back instead of failing to render.
- ELK is loaded as a separate chunk in the ESM builds, so it is only fetched when a diagram actually uses it. The single-file IIFE build (
-
#8148
8603bddThanks @ashishjain0512! -redux-coloris now the default theme andneothe default look for ten diagram types — flowchart, swimlane, class, ER, requirement, sequence, state, use case, Venn and agentflow. Those rendered without an explicitthemeandlookchange appearance; every other diagram type keepsdefaultandclassic. To keep the previous appearance, set both explicitly —mermaid.initialize({ theme: 'default', look: 'classic' }), or the same two keys underconfigin front matter.An unrecognised
themename now resolves to the default theme in name as well as in variables; previously the invalid name stayed in place while the default's variables were loaded, and every palette-aware stylesheet gates on the name.theme: 'null', the documented way to disable the pre-defined themes, is unaffected. Note thatneopaints node strokes with a gradient when the theme setsuseGradient, whichbasedoes; setting a customnodeBorderonbaseturns the gradient off. -
#8211
a19bd08Thanks @ashishjain0512! - Removed: thedefaultRendereroption of theflowchart,classandstateconfig sections.Use the top-level
layoutoption instead:--- config: layout: dagre # or elk ---
Why
defaultRenderernamed a rendering engine back when there was more than one. There is not.
All of its accepted values —dagre,dagre-wrapper,dagre-d3— had come to select the
same unified renderer, and itselkvalue did nothing but setlayout: elkon your behalf.
The option's documented purpose no longer existed.What it still did was stranger than doing nothing. The detectors branched on whether the
value was recognised, so a valid value routed a diagram to the modern renderer and an
invalid one silently routed it to the legacy renderer. Since the default was always a
valid value, the legacyclassandstaterenderers were unreachable except by
misconfiguring the option.What changes for you
layoutselects the layout algorithm, as it already did. Nothing else does.graph,classDiagramandstateDiagramalways render with the unified diagram. This
was already true for every valid configuration.- The legacy
flowchart,classandstatediagram ids are gone.flowchart-v2,
classDiagramandstateDiagramare whatdetectTypenow returns for that syntax. flowchart-elkas an explicit diagram keyword still works.
Configuration that still sets
defaultRendereris ignored rather than rejected, so nothing
throws — but it no longer has any effect, and diagrams that relied on
flowchart: { defaultRenderer: 'elk' }to get an ELK layout should setlayout: elk. -
#8223
6df1149Thanks @aloisklink! - refactor!: remove layout internal exportsRemove the
clearLayoutRenderState,createCommonLayoutRenderer,defaultMeasureLayout,paintLayoutDatafunctions,
and theCommonLayout*types from Mermaid's public API.These functions were only used by the
@mermaid-js/layout-elkpackage,
which now bundles them. Removing them makes it easier to avoid major versions
of mermaid.
Minor Changes
-
#8048
7a3c1a8Thanks @knsv-bot! - feat: add UML use case diagrams with actors, use cases, system boundaries, relationships, stereotypes, notes, JSON tables, class and style support, accessibility metadata, and business variants. -
#8073
0cf3797Thanks @knsv-bot! - feat: add theagentflow-betadiagram type for describing agentic workflows — agents, the flows they run, the tasks and tools inside them, and how control and data move between them.agentflow-beta TB flow reviewer["Review Agent"] changes["Gather changes"]@{ shape: input } analyse["Analyse"]@{ shape: task } lint["run_linter"]@{ shape: tool } changes --> analyse --> lint endflow … endcontainers, aglobal … endscope block for nodes that must stay outside their referencing flow, andconnectordeclarations for external systems.- Node shapes addressed by domain-facing aliases (
task,tool,input,decision,refdoc,action) via inline@{ … }metadata, and@{ view: collapsed }to fold a container down to a summary node. - Edge operators carry semantics:
-->sequence,-.-reference,--xfailure, plus the labelled-branch form. getSemanticModel()projects the parsed diagram into a presentation-free semantic view for downstream consumers, andgetDiagnostics()reports structured warnings with source positions.- A
flowContainerStroketheme variable across all built-in themes, and anagentflowconfig namespace for spacing, padding, and title margin.
The diagram is beta: the syntax may still change before it is declared stable.
-
#8197
846fd65Thanks @knsv-bot! - feat(agentflow): take the redux colour palette. Underredux-colorandredux-dark-color, every agentflow node kind — tool, task, decision, input, refdoc, connector, action — gets its own colour from a fixed palette slot, so colour says what an element is and stays put when the diagram is edited around it. Containers cycle a counter in declaration order, the way flowchart subgraphs do, from the slots above the kind range so a container frame never matches a node inside it. A collapsed container keeps its slot.redux-dark-colorcarries borders but no fills, so nodes there take palette strokes over the theme's own background. Agentflow also takesredux-colorandneoas its own per-diagram de...
@mermaid-js/parser@2.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install.
@mermaid-js/mermaid-zenuml@1.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install.
Patch Changes
- Updated dependencies [
7a3c1a8,0cf3797,846fd65,33442fd,dc2e453,ce0302d,ad98070,e2aab3f,6b79518,30325d4,cd48a64,c3ee3c7,1ee934d,a7831c5,0cf3797,0320406,810893c,e36b883,b993915,4e00c5c,3f05015,d57ed55,1fc5bb3,b979eb4,7ee4c3f,a6ec7ff,1246a55,813c766,8603bdd,43d9fbc,2878cf3,16b9a7d,def4c81,3802472,a19bd08,f5af413,a3a92ba,e691042,ba0deed,b05824a,0ec29e9,0d77926,93edd72,75e6c30,6df1149,a31ecb7]:- mermaid@12.0.0
@mermaid-js/layout-tidy-tree@1.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install.
Patch Changes
- Updated dependencies [
7a3c1a8,0cf3797,846fd65,33442fd,dc2e453,ce0302d,ad98070,e2aab3f,6b79518,30325d4,cd48a64,c3ee3c7,1ee934d,a7831c5,0cf3797,0320406,810893c,e36b883,b993915,4e00c5c,3f05015,d57ed55,1fc5bb3,b979eb4,7ee4c3f,a6ec7ff,1246a55,813c766,8603bdd,43d9fbc,2878cf3,16b9a7d,def4c81,3802472,a19bd08,f5af413,a3a92ba,e691042,ba0deed,b05824a,0ec29e9,0d77926,93edd72,75e6c30,6df1149,a31ecb7]:- mermaid@12.0.0
@mermaid-js/layout-elk@1.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install.
Minor Changes
-
#8152
d4bea0dThanks @knsv-bot! - feat:elk.presetpicks a named combination of the options that decide where nodes end up.Three options settle node positions, and they sit in different phases of the layout: which layer a node lands in, where it goes within that layer, and which edges get reversed to make the graph acyclic. Choosing them well means knowing all three interact;
presetnames the combinations worth using.default— network simplex layering, balanced Brandes-Koepf placement at the top level and inside subgraphs, and depth-first cycle breaking. Balanced placement centres branches and composite-state entries; depth-first breaking gives shorter back edges on graphs that loop.legacy— reproduces what earlier versions actually rendered: Brandes-Koepf placement with ELK's own greedy cycle breaking.modelOrder— asdepthFirst, but breaks cycles by greedy model order, which disturbs declaration order least at the cost of longer back edges.depthFirst— the previous default: network simplex layering and top-level placement, Brandes-Koepf placement inside subgraphs,NONEalignment, and depth-first cycle breaking.
--- config: layout: elk elk: preset: legacy ---
Setting
layeringStrategy,nodePlacementStrategy,nodePlacementAlignmentorcycleBreakingStrategyexplicitly overrides the preset for that one option and leaves the rest in place, so a preset is a starting point rather than a lock.Node placement keeps
BRANDES_KOEPF, but its alignment changes fromNONEtoBALANCEDand cycle breaking fromGREEDYtoDEPTH_FIRST, so existing ELK diagrams will lay out differently.preset: legacyrestores the previous behaviour, and is the single switch for it — this is the net change against the last release, measured from what shipped rather than from any intermediate state.Subgraph contents use
BRANDES_KOEPFunder every preset. FormodelOrderanddepthFirstthat is deliberately not the root's strategy: network simplex inside a frame produced routes that left the subgraph on its bounding-box corner. The two sides are tuned independently, sonodePlacementStrategyset explicitly still applies to both.Note that
legacyusesGREEDYcycle breaking rather than theGREEDY_MODEL_ORDERthe schema previously advertised. That default was declared in the schema but never listed in the shipped defaults, so it reached ELK as undefined and ELK's own default applied —legacyreproduces what was rendered, not what was documented. -
#8152
1246a55Thanks @knsv-bot! - feat: draw line hops where ELK edges cross, controlled byelk.lineHops.Where two edges cross, the one that gives way is drawn with a small arc (or a visible gap) so it is clear which line passes over which. On by default; set
elk.lineHops: falseto draw plain crossings, or'gap'to use gaps instead of arcs.--- config: layout: elk elk: lineHops: gap ---
The crossing detection and both styles already existed and were used by swimlanes — this registers the
afterPainthook that lets ELK use them. An edge that takes a hop loses its corner rounding on that segment, which is the trade for a readable crossing; curved edges are skipped rather than rewritten, to avoid corrupting their geometry.Existing ELK diagrams with crossing edges will render differently.
-
#8155
810893cThanks @ashishjain0512! - feat: this package is now built from mermaid's own ELK implementation instead of carrying its own copy, and is only needed for Mermaid builds that ship without ELK.mermaidbundles ELK and registers it automatically, so most projects can drop the dependency and theregisterLayoutLoaderscall. The package remains published and fully functional for the tiny build (mermaid.tiny.js), which omits ELK to stay small and where registering this is the only way to get an ELK layout.Because it is compiled from mermaid's ELK source rather than importing the whole
mermaidentry point, the published bundle no longer drags in every diagram type, parser and KaTeX: the minified ESM payload drops from roughly 1.58 MB to 728 kB gzipped. It stays self-contained, so it still loads from a CDN next to any Mermaid build with no import map.The rendering utilities the ELK source reaches (
dompurify,katex,dayjs,dagre-d3-es) are now declared in the package'sdependencies, so the npm build (.core.mjs) resolves them through your package manager — they dedupe against the host's copies and show up in audits — instead of carrying invisible inlined copies.Maintainers:
peerDependencies.mermaidstill reads^11.0.2. It should be raised to the major that bundles ELK as part of the release.
Patch Changes
-
#8152
785ca77Thanks @knsv-bot! - fix: draw ELK subgraph frames an even distance from their contents.A subgraph could sit 76px from its nodes on one side and 24px on the other, with nothing visible in the gap. ELK sizes a container around everything it put inside, edges included, and an edge that runs against the flow of the layout is routed back around the outside — so a group holding one grew on whichever side that edge left by, and a group without one did not.
The lane is real and the edge still needs it, so the space is not reclaimed. What changes is that the frame is no longer drawn around it: the frame is pulled in to an even distance from the group's own children, and the edge keeps its lane just outside, which is what an edge routed around a group should look like anyway.
The top is left as ELK set it, since it carries the subgraph's title strip and there is no way to tell how much of that padding is the title and how much is spare.
A frame still holds the lanes that genuinely belong to it. An edge with both endpoints inside a group never leaves it, so its lane is part of that group's interior and the frame stays drawn around it — which matters for nested groups, where a lane routed around an inner group sits inside the outer one.
Subgraphs render tighter, and groups that used to be visibly lopsided are now even.
-
#8228
e36b883Thanks @knsv-bot! - Reserve subgraph title padding before ELK routes edges so attachments stay on the painted frame. Clip stale interior endpoints along the incoming segment, avoiding edges that run along the subgraph border. -
#8152
1befa91Thanks @knsv-bot! - fix: edges leave diamonds, stadiums and other non-rectangular shapes without kinking.ELK routes to ports on a node's bounding box and always leaves one perpendicular to the side it sits on. For a rectangle that port is the attachment point; for anything else the outline is inside the box, so the attachment has to move inwards — and the direction it moves in decides whether the edge stays orthogonal.
It used to move along the ray from the node's centre, which lands on the outline at a different offset along the side than the port ELK chose, so the opening segment came out diagonal. The attachment now walks the outline along the edge's own departure axis, staying collinear with ELK's stub: the edge leaves the outline, crosses the box, and carries on in one straight line. Rectangular nodes are unaffected.
-
#8152
1348b4fThanks @knsv-bot! - fix: an edge no longer leaves a subgraph from the frame's corner.elk.spacing.portsSurroundingwas left at ELK's default of0, which permits a
port to sit exactly on a node's corner. A corner is the one boundary point with
no side to leave from, so the edge came out of the vertex and then ran ALONG the
frame's own edge before turning away from it. Subgraphs showed it first, because
an edge that crosses a subgraph boundary attaches to the frame rather than t...
@mermaid-js/examples@2.0.0
Major Changes
-
#8213
33442fdThanks @aloisklink! - chore!: require ES2024, Safari 17.4+, Node.JS v22.12+Mermaid is now built to target Safari 17.4+ and ES2024. If you need to support
older browsers, you may need to polyfill or transpile mermaid.Safari 17.4+ has been chosen as the floor, as unlike Firefox/Chrome,
older iOS devices don't get major Safari updates.Node.JS v22.12+ is also declared as requirement in our
package.jsonfiles,
but as mermaid requires a browser, this is mainly so we can use dependencies that
also declare a Node.JS v22.12+ requirement, without causing issues for users when
runningnpm install.