pub.leaflet.pages.canvas

leaflet.pub

Schema Diff

+26 -1

From

CID
bafyreid6wacxtx2...
Indexed At
2026-09-21 16:21 UTC
View this version

To

CID
bafyreifgilfuk7y...
Indexed At
2026-09-26 03:40 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

14 breaking changes, 34 non-breaking changes.

Breaking Changes (14)
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant17", kind: "variant", name: Some("pub.leaflet.blocks.poll") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant18", kind: "variant", name: Some("pub.leaflet.blocks.button") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant19", kind: "variant", name: Some("pub.leaflet.blocks.postsList") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant20", kind: "variant", name: Some("pub.leaflet.blocks.signup") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant21", kind: "variant", name: Some("pub.leaflet.blocks.recommendedPubs") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant22", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant17", tgt: "pub.leaflet.blocks.poll", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant18", tgt: "pub.leaflet.blocks.button", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant19", tgt: "pub.leaflet.blocks.postsList", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant20", tgt: "pub.leaflet.blocks.signup", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant21", tgt: "pub.leaflet.blocks.recommendedPubs", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant22", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
Non-Breaking Changes (34)
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.blocks.drawing" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.blocks.embeddedCanvas" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant24" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant25" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant26" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.height" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.lockViewerZoom" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.mobileView" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas.width" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.height", kind: "prop", name: Some("height") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.lockViewerZoom", kind: "prop", name: Some("lockViewerZoom") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.mobileView", kind: "prop", name: Some("mobileView") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.width", kind: "prop", name: Some("width") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant17", kind: "variant", name: Some("pub.leaflet.blocks.embeddedCanvas") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant18", kind: "variant", name: Some("pub.leaflet.blocks.poll") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant19", kind: "variant", name: Some("pub.leaflet.blocks.button") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant20", kind: "variant", name: Some("pub.leaflet.blocks.postsList") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant21", kind: "variant", name: Some("pub.leaflet.blocks.signup") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant22", kind: "variant", name: Some("pub.leaflet.blocks.recommendedPubs") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant17", tgt: "pub.leaflet.blocks.embeddedCanvas", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant18", tgt: "pub.leaflet.blocks.poll", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant19", tgt: "pub.leaflet.blocks.button", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant20", tgt: "pub.leaflet.blocks.postsList", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant21", tgt: "pub.leaflet.blocks.signup", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant22", tgt: "pub.leaflet.blocks.recommendedPubs", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "pub.leaflet.blocks.drawing" }
  • AddedVertex { vertex_id: "pub.leaflet.blocks.embeddedCanvas" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant24" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant25" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant26" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.height" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.lockViewerZoom" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.mobileView" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas.width" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }

Additional Notes

  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant17", kind: "variant", name: Some("pub.leaflet.blocks.poll") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant18", kind: "variant", name: Some("pub.leaflet.blocks.button") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant19", kind: "variant", name: Some("pub.leaflet.blocks.postsList") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant20", kind: "variant", name: Some("pub.leaflet.blocks.signup") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant21", kind: "variant", name: Some("pub.leaflet.blocks.recommendedPubs") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant22", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant17", tgt: "pub.leaflet.blocks.poll", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant18", tgt: "pub.leaflet.blocks.button", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant19", tgt: "pub.leaflet.blocks.postsList", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant20", tgt: "pub.leaflet.blocks.signup", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant21", tgt: "pub.leaflet.blocks.recommendedPubs", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant22", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.height", kind: "prop", name: Some("height") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.lockViewerZoom", kind: "prop", name: Some("lockViewerZoom") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.mobileView", kind: "prop", name: Some("mobileView") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas", tgt: "pub.leaflet.pages.canvas.width", kind: "prop", name: Some("width") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant17", kind: "variant", name: Some("pub.leaflet.blocks.embeddedCanvas") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant18", kind: "variant", name: Some("pub.leaflet.blocks.poll") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant19", kind: "variant", name: Some("pub.leaflet.blocks.button") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant20", kind: "variant", name: Some("pub.leaflet.blocks.postsList") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant21", kind: "variant", name: Some("pub.leaflet.blocks.signup") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant22", kind: "variant", name: Some("pub.leaflet.blocks.recommendedPubs") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant17", tgt: "pub.leaflet.blocks.embeddedCanvas", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant18", tgt: "pub.leaflet.blocks.poll", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant19", tgt: "pub.leaflet.blocks.button", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant20", tgt: "pub.leaflet.blocks.postsList", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant21", tgt: "pub.leaflet.blocks.signup", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant22", tgt: "pub.leaflet.blocks.recommendedPubs", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "block": {
5 5
      "properties": {
6 6
        "block": {
7 +
          "description": "A single block, or a linear document: blocks grouped in reading order that are positioned, sized and rotated on the canvas as one.",
7 8
          "refs": [
8 9
            "pub.leaflet.blocks.iframe",
9 10
            "pub.leaflet.blocks.html",
10 11
            "pub.leaflet.blocks.text",
11 12
            "pub.leaflet.blocks.blockquote",
12 13
            "pub.leaflet.blocks.header",
13 14
            "pub.leaflet.blocks.image",
14 15
            "pub.leaflet.blocks.imageGallery",
15 16
            "pub.leaflet.blocks.unorderedList",
16 17
            "pub.leaflet.blocks.orderedList",
17 18
            "pub.leaflet.blocks.website",
18 19
            "pub.leaflet.blocks.math",
19 20
            "pub.leaflet.blocks.code",
20 21
            "pub.leaflet.blocks.horizontalRule",
21 22
            "pub.leaflet.blocks.bskyPost",
22 23
            "pub.leaflet.blocks.standardSitePost",
23 24
            "pub.leaflet.blocks.standardSitePublication",
24 25
            "pub.leaflet.blocks.page",
26 +
            "pub.leaflet.blocks.embeddedCanvas",
25 27
            "pub.leaflet.blocks.poll",
26 28
            "pub.leaflet.blocks.button",
27 29
            "pub.leaflet.blocks.postsList",
28 30
            "pub.leaflet.blocks.signup",
29 31
            "pub.leaflet.blocks.recommendedPubs",
30 32
            "pub.leaflet.blocks.membersOnlyDelimiter",
31 -
            "pub.leaflet.blocks.postHeader"
33 +
            "pub.leaflet.blocks.postHeader",
34 +
            "pub.leaflet.blocks.drawing",
35 +
            "pub.leaflet.pages.linearDocument"
32 36
          ],
33 37
          "type": "union"
34 38
        },
35 39
        "height": {
36 40
          "type": "integer"
37 41
        },
38 42
        "rotation": {
39 43
          "description": "The rotation of the block in degrees",
40 44
          "type": "integer"
41 45
        },
42 46
        "stackOrder": {
43 47
          "description": "Fractional index ordering this block against its siblings on the z axis. Blocks without one stack below every block with one, ordered by position.",
44 48
          "type": "string"
45 49
        },
46 50
        "width": {
47 51
          "type": "integer"
48 52
        },
49 53
        "x": {
50 54
          "type": "integer"
51 55
        },
52 56
        "y": {
53 57
          "type": "integer"
54 58
        }
55 59
      },
56 60
      "required": [
57 61
        "block",
58 62
        "x",
59 63
        "y",
60 64
        "width"
61 65
      ],
62 66
      "type": "object"
63 67
    },
64 68
    "main": {
65 69
      "properties": {
66 70
        "blocks": {
67 71
          "items": {
68 72
            "ref": "#block",
69 73
            "type": "ref"
70 74
          },
71 75
          "type": "array"
72 76
        },
77 +
        "height": {
78 +
          "description": "Fixed canvas height in canvas px; see width.",
79 +
          "type": "integer"
80 +
        },
73 81
        "id": {
74 82
          "type": "string"
83 +
        },
84 +
        "lockViewerZoom": {
85 +
          "description": "Viewers cannot zoom the canvas: no wheel, pinch, double-tap or zoom controls.",
86 +
          "type": "boolean"
87 +
        },
88 +
        "mobileView": {
89 +
          "description": "How a narrow viewport frames the canvas: the whole canvas scaled to fit the width (unconstrained, the default), or a phone-width area anchored to the canvas's left edge or centered on it, shown at up to 1:1.",
90 +
          "knownValues": [
91 +
            "unconstrained",
92 +
            "left",
93 +
            "center"
94 +
          ],
95 +
          "type": "string"
96 +
        },
97 +
        "width": {
98 +
          "description": "Fixed canvas width in canvas px. With height, bounds the canvas: blocks are clipped to the area. Absent, the canvas is 1272px wide and grows with its content.",
99 +
          "type": "integer"
75 100
        }
76 101
      },
77 102
      "required": [
78 103
        "blocks"
79 104
      ],
80 105
      "type": "object"
81 106
    },
82 107
    "position": {
83 108
      "properties": {
84 109
        "block": {
85 110
          "items": {
86 111
            "type": "integer"
87 112
          },
88 113
          "type": "array"
89 114
        },
90 115
        "offset": {
91 116
          "type": "integer"
92 117
        }
93 118
      },
94 119
      "required": [
95 120
        "block",
96 121
        "offset"
97 122
      ],
98 123
      "type": "object"
99 124
    },
100 125
    "quote": {
101 126
      "properties": {
102 127
        "end": {
103 128
          "ref": "#position",
104 129
          "type": "ref"
105 130
        },
106 131
        "start": {
107 132
          "ref": "#position",
108 133
          "type": "ref"
109 134
        }
110 135
      },
111 136
      "required": [
112 137
        "start",
113 138
        "end"
114 139
      ],
115 140
      "type": "object"
116 141
    },
117 142
    "textAlignCenter": {
118 143
      "type": "token"
119 144
    },
120 145
    "textAlignLeft": {
121 146
      "type": "token"
122 147
    },
123 148
    "textAlignRight": {
124 149
      "type": "token"
125 150
    }
126 151
  },
127 152
  "id": "pub.leaflet.pages.canvas",
128 153
  "lexicon": 1
129 154
}

Compare Other Versions

Lexicon Garden

@