Skip to content

v0.1.0

Compare
Choose a tag to compare
@nhooyr nhooyr released this 06 Dec 17:33
· 3169 commits to master since this release
3f62eed

When we launched D2 to open-source 2 weeks ago, we left the sprint after it a completely blank slate. Because, while we do have long-term goals, we wanted to make the first post-launch update focused 100% on addressing the biggest pain points that came up. Thank you so much to everyone who asked for or complained about something. Every item in this release was something that was posted on the D2 Discord, a GitHub issue/discussion, a comment on social media, or an email.

On top of the listed changes to core D2, we have been building out integrations, starting with Obsidian. Work has also begun on the API and Playground.

If you want a fast way to check out what a change looks like, we put screenshots in the PRs when it's a visual change.

Features 🚀

Screenshot 2022-12-06 at 2 55 27 AM

  • Sequence diagrams are now supported, experimentally. See docs. #99
  • Formatting of d2 scripts is supported on the CLI with the fmt subcommand. See man d2 or d2 --help. #292
  • Latex is now supported. See docs for how to use. #229
  • direction keyword is now supported to specify up, down, right, left layouts. See docs for more.
    #251
  • Self-referencing connections are now valid. E.g. x -> x. Render will vary based on layout engine. #273
  • Arrowhead labels are now supported. #182
  • Support for stroke-dash on shapes. #188
  • Support for font-color on shapes and connections. #215
  • Support for font-size on shapes and connections. #250
  • HTML IDs are now added in the SVG output. You can use this to query shapes and connections by ID post-render. #218
  • -b/--bundle flag to d2 bundles all image assets directly as base64 data urls. #278
  • install.sh now accepts -d as an alias for --dry-run. #266

Improvements 🧹

  • Local images can now be used for values to the icon keyword, e.g. icon: ./my_img.png. #146
  • Connection labels no longer overlap other connections. #332
  • ELK layout engine now defaults to top-down to be consistent with dagre. #251
  • Container default font styling is no longer bold. Everything used to look too bold. #358
  • BROWSER=0 will disable opening a browser on --watch. #311
  • install.sh prints the dry run message more visibly. #266
  • d2 now lives in the root folder of the repository instead of as a subcommand. So you can now run go install oss.terrastruct.com/d2@latest to install from source. #290
  • install.sh defaults to installation to /usr/local as before but now if /usr/local is not accessible to the current user, it will use ~/.local instead of prompting for sudo. You can pass --prefix /usr/local to force installation into /usr/local with a prompt for sudo. #372

Bugfixes ⛑️

  • 3D style was missing border and other styles for its top and right faces. #187
  • System dark mode was incorrectly applying to Markdown in renders. #159
  • Fixes Markdown newlines created with a trailing double space or backslash. #214
  • Fixes images not loading in PNG exports. #224
  • Fixes label and icon overlapping each other in dagre and ELK layouts. #343
  • No longer log benign file-watching errors. #293
  • $BROWSER now works to open a custom browser correctly. For example, to open Firefox on macOS: BROWSER='open -a Firefox' #311
  • Fixes numbered IDs being wrongly positioned in dagre #321.