Repository navigation
Arkitect 2.0.0
Every change is to generated output, which is what makes this a major: four to Excalidraw's, and two to both engines' - a node with an icon and no kind, and a node named only in generic words, which no longer draws a cloud vendor's mark. Saved scenes and diagrams are untouched and still open and validate; rebuild a spec to get the new output. A scene built before 2.0.0 can draw a validator warning for a frame ahead of its children or a zero-length connector, and a rebuild clears both.
Changed
- Excalidraw boundaries are sized from everything their nodes draw, in both axes. Only a caption's height was counted, so a caption or sublabel wider than its icon, box or cylinder hung out of its own scope or frame while validation passed. A scope is also at least as wide as its own inside label. Arrows still leave the artwork. Both committed examples moved: eight texts in
aws-data-platformand the "Analytics warehouse" caption instarter-architecturesat across their scope's edge. Saved scenes are untouched; rebuild a spec to pick it up (#191). - Excalidraw text is measured as wide as the app draws it. The estimate ran narrow in every font family (Virgil: 18% at the median, 46% at worst), and the app clips free text to the width in the file, so captions, legend entries, scope labels and titles opened with letters missing, and note text wrapped past its box. Widths now come from a table of per-character advances measured with the app's own fonts; our PNG renders never showed the clipping. Both committed examples are rebuilt (#222).
- An Excalidraw edge from a node to itself is drawn as a loop over one of the node's corners, bound at both ends, instead of two points at its centre that drew a bare arrowhead over its label. A loop is always an elbow arrow, the one kind the app re-routes whole when the node moves. Loops take the top-right, top-left, bottom-right and bottom-left corners in turn; a fifth on one node is refused, and a bottom loop that crosses a caption is listed under
notes. The validator warns about a zero-length connector, which every loop built before this has (#159). - An Excalidraw frame comes straight after its own members in the scene, as the app expects and its renderer relies on to clip them. The builder wrote every frame first. Scopes outside any frame stay at the back, and an edge between frames stays on top. The validator warns about a frame ahead of its children, which every frame scene built before this has (#192).
- In both builders, a node with an
iconand nokinddraws as an icon, as
the Excalidraw skill already said it would. It drew as a plain box and nothing reported it: in the 2.0.0 eval batch an agent followed the skill, got three boxes, and reported three icons. A node that names another kind as well draws that kind, and the report'snotesnames the icon it left out; the Draw.io report gainsnotesfor it (#228). Neither icon search draws a cloud vendor's own mark for a query made only of generic words.servicedrew AWS's Service glyph,storageGoogle Cloud Storage andfunctionGCP's Cloud Functions, so an internal service came out labelled as running on that vendor, twice in the 2.0.0 eval batch. Such a query now comes back flagged with the reason, and a node named that way gets a placeholder or labelled box; a vendor-neutral mark still draws, and so does the vendor's own when a Draw.io spec'scontextnames it or the node gives the exact ref. Azure's App Service, Function App and Log Analytics are named in generic words only, so they now need one or the other. The compact answer for such a query offers the placeholder node and only vendor-neutral choices: while it listed the vendor's mark first, agents took it two runs in three (#231).