Documentation

What accent-draw converts, what it infers, and how to run it - from the command line, from a browser, or as a Rust library.

accent-draw takes an SVG and returns a .drawio file whose shapes, text and arrows are native, editable cells. A box is a box with its label inside it; an arrow is an edge glued to the two shapes it joins, so moving a box in draw.io drags its label and its arrows along with it.

It is one Rust library with three hosts: a command for the shell, a WebAssembly binding for a browser, and a second command for converting Miro boards in bulk. The library itself touches no filesystem, clock, randomness or threads, which is what lets the same code produce the same bytes in all of them.

Start here

PageWhat it covers
How it worksThe five stages, what the layout infers from geometry, and what is reported instead of drawn
ProfilesThe eight sources read by the names they give their own parts, and what each one hands over
Command lineaccent-draw, its output and its exit codes, and the Miro command
JavaScriptThe WebAssembly binding: convert, the result, the errors, and what it costs to load
ArchitectureThe crates, the no-I/O boundary, deterministic output, and the roundtrip through draw.io

Or skip the reading and convert something - nine samples are loaded and ready, and nothing is uploaded.

What it is not

It is not a renderer. accent-draw writes draw.io files; drawing them is draw.io's job, and porting that is not recommended.

It is not pixel-exact. A filter, a mask, a pattern or text along a path cannot become a native cell, so it becomes an image of that fragment and a note saying so. The first conversion of any drawing is an approximation, and the documentation says where.

It does not guess in silence. Every element that draws something ends as a cell, as part of one, or as a note. An SVG with nothing recognisable in it is an error - never an empty diagram that looks like a success.