github terrastruct/d2 v0.2.0

latest releases: v0.6.6, v0.6.5, v0.6.4...
19 months ago

Here's what a D2 diagram looks like in 0.1 (left) vs 0.2 (right):

before-after

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:

aws icons

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

icons

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 with fixuid.
  • d2 fmt accepts multiple files to be formatted #718
  • font-size works for sql_table and class 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. #761
  • d2 themes subcommand to list themes. #760
  • sql_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 and obj.double-border are now illegal. The correct usages have always been obj.shape and obj.style.double-border; it just wasn't enforced until now.

Don't miss a new d2 release

NewReleases is sending notifications on new releases.