v0.2.0
Here's what a D2 diagram looks like in 0.1 (left) vs 0.2 (right):
Much more legible, especially in larger diagrams! This upgrade trims a lot of the excess whitespace present before and makes diagrams more compact. We've also combed through each shape to improve their label and icon positions, paddings, and aspect ratios at different sizes. Example of icons and labels avoiding collisions:
We've also put up a hosted icon site for you to conveniently find common software architecture icons to include in your D2 diagrams. https://icons.terrastruct.com
There's also been a major compiler rewrite. It's fixed many minor compiler bugs, but most importantly, it implements multi-board diagrams. Stay tuned for more as we write docs and make this accessible in the next release!
Features 🚀
double-border
keyword implemented. #565- The Dockerfile now supports rendering PNGs #594
- There was a minor breaking change as part of this where the default working directory of the Dockerfile is now
/home/debian/src
instead of/root/src
to allow UID remapping withfixuid
.
- There was a minor breaking change as part of this where the default working directory of the Dockerfile is now
d2 fmt
accepts multiple files to be formatted #718font-size
works forsql_table
andclass
shapes #769- You can now use the reserved keywords
layers
/scenarios
/steps
to define diagrams with multiple levels of abstractions. Coming soon. #714
Improvements 🧹
- Reduces default padding of shapes. #702
- Ensures labels fit inside shapes with shape-specific inner bounding boxes. #702
- dagre container labels changed positions to outside the shape. Many previously obscured container labels are now legible. #788
- Container icons are placed top-left instead of center, to ensure no collisions with children. #806
- Code snippets use bold and italic font styles as determined by highlighter #710, #741
- Improves package shape dimensions with short height. #702
- Sequence diagrams are rendered more compacted, both vertically and horizontally. #796
- Keeps person shape from becoming too distorted. #702
- Keeps oval shape from becoming too thin. #807
- Ensures shapes with icons have enough padding for their labels. #702
--force-appendix
flag adds an appendix to SVG outputs with tooltips or links. #761d2 themes
subcommand to list themes. #760sql_table
header left-aligned with column #769- Sequence diagram edge group labels are clearer #782
Bugfixes ⛑️
- Fixes groups overlapping in sequence diagrams when they end in a self loop. #728
- Fixes dimensions of unlabeled squares or circles with only a set width or height. #702
- Fixes scaling of actor shapes in sequence diagrams. #702
- Sequence diagram note ordering was sometimes wrong. #796
- Images can now be set to sizes smaller than 128x128. #702
- Tooltips with ampersand would result in invalid SVGs. #798
- Fixes class height when there are no rows. #756
- Border radius was not firefox-compatible. #799
Breaking changes
- You can no longer use keywords intended for use under
style
outside and vice versa. e.g.obj.style.shape
andobj.double-border
are now illegal. The correct usages have always beenobj.shape
andobj.style.double-border
; it just wasn't enforced until now.