Skip to content

v0.7.0

2026-05-17 · GitHub release · Diff

A big one: 228 commits since 0.6.1. Existing .mmd files render with no changes - everything new is additive.

nf-metro render mypipeline.mmd --format html produces a self-contained, interactive HTML file that can be dropped into a docs page or blog post without any extra assets.

off_track: node_id lifts file inputs above the line tracks so they sit clear of the metro lines instead of breaking them. Useful for FASTA/GTF inputs hanging off a workflow.

Off-track file inputs

center_ports: true (or --center-ports) centres inter-section ports on the shorter section, tidying up many fan-in/fan-out cases.

legend_min_height: N reserves a minimum legend height so a tall map’s legend doesn’t look stranded.

Lines can be dashed or dotted to indicate optional or conditional routes. Add a fourth field to %%metro line::

%%metro line: qc | Quality Control | #2196F3 | dashed
%%metro line: optional | Optional path | #ff8800 | dotted

Both the route ink and the legend swatch reflect the style:

Simple pipeline with dashed QC line

Two new icon types join the existing single file:

  • files - stacked pages, for paired-end or multi-file outputs
  • dir - folder icon, for directory outputs

All three accept an optional caption to label exactly what’s flowing in:

node[Label]:::files:Read 1, Read 2

Files (stacked) icon

Directory icon

Section titled “New gallery example: nf-core/differentialabundance”

nf-core/differentialabundance

Sections are now numbered in visual reading order (left-to-right, top-to-bottom), so “1, 2, 3…” matches how you scan the map.

A phase-boundary guard system (compute_layout(validate=True)) catches layout engine bugs at the offending phase rather than several phases later. Combined with full-corpus parametrised tests and the C13 row-gap runtime guard, the engine is substantially more robust to new topology patterns.

The layout pipeline is organised into six named stages with flat Stage X.Y naming.

  • Fan-in merge junctions route cleanly onto the trunk
  • Per-line path grouping gives consistent line z-order where lines cross
  • Animated balls no longer fly off-piste at merge junctions
  • Cached station_lines() across ~40 call sites (O(1) amortised)
  • New CONTRIBUTING.md