{
  "product": "Specification (reference)",
  "title": "Diagram Tool",
  "summary": "Boxes, arrows and layout that survives being edited.",
  "category": "editors",
  "entries": [
    {
      "path": [
        "AI",
        "Model",
        "Nodes and edges as first-class objects"
      ],
      "value": "",
      "status": "yes",
      "note": "not just drawings"
    },
    {
      "path": [
        "AI",
        "Model",
        "Edges stay attached when nodes move"
      ],
      "value": "",
      "status": "yes",
      "note": "the thing that separates diagrams from drawings"
    },
    {
      "path": [
        "AI",
        "Model",
        "Grouping and containers"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Model",
        "Z-order and layers"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Layout",
        "Snap to grid and to other objects"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Layout",
        "Automatic layout for a graph"
      ],
      "value": "hierarchical, force",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Layout",
        "Edge routing that avoids overlapping nodes"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Text",
        "Labels on nodes and edges with wrapping"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Text",
        "Text-to-diagram source format"
      ],
      "value": "mermaid-like",
      "status": "yes",
      "note": "round-trips"
    },
    {
      "path": [
        "AI",
        "Persistence",
        "Open format that survives version control"
      ],
      "value": "",
      "status": "yes",
      "note": "diffable"
    },
    {
      "path": [
        "AI",
        "Export",
        "PNG, SVG and PDF at chosen scale"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Canvas",
        "Infinite pan and zoom with fit-to-content"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Canvas",
        "Multi-select, align and distribute"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Canvas",
        "Copy/paste and duplicate with offset"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Canvas",
        "Undo/redo across every operation"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Shapes",
        "Shape library with search"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Shapes",
        "Styling: fill, stroke, arrowheads, dashes"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "UI",
        "Collaboration",
        "Multiple cursors and live updates"
      ],
      "value": "",
      "status": "yes",
      "note": "or a documented single-user stance"
    }
  ]
}
