pub.leaflet.pages.canvas

leaflet.pub

Schema Diff

+2 -0

From

CID
bafyreiapayfh7wa...
Indexed At
2026-10-03 18:44 UTC
View this version

To

CID
bafyreihkazfrkgp...
Indexed At
2026-10-07 19:26 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 16 non-breaking changes.

Breaking Changes (8)
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
Non-Breaking Changes (16)
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.blocks.questions" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.blocks.reply" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant27" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant28" }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.reply") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.questions") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant27", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant28", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.reply", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.questions", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant27", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant28", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "pub.leaflet.blocks.questions" }
  • AddedVertex { vertex_id: "pub.leaflet.blocks.reply" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant27" }
  • AddedVertex { vertex_id: "pub.leaflet.pages.canvas#block.block:variant28" }

Additional Notes

  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant23", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
  • 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.reply") }
  • 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.questions") }
  • 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.membersOnlyDelimiter") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", 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:variant27", 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:variant28", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant23", tgt: "pub.leaflet.blocks.reply", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.questions", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant27", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "pub.leaflet.pages.canvas#block.block:variant28", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "background": {
5 5
      "description": "An image tiled across the canvas, under its guide pattern and blocks.",
6 6
      "properties": {
7 7
        "image": {
8 8
          "accept": [
9 9
            "image/*"
10 10
          ],
11 11
          "maxSize": 1000000,
12 12
          "type": "blob"
13 13
        },
14 14
        "opacity": {
15 15
          "description": "Opacity of the image as a percentage. Defaults to 100.",
16 16
          "maximum": 100,
17 17
          "minimum": 0,
18 18
          "type": "integer"
19 19
        },
20 20
        "width": {
21 21
          "description": "Width of each tile in canvas px. Defaults to 500.",
22 22
          "type": "integer"
23 23
        }
24 24
      },
25 25
      "required": [
26 26
        "image"
27 27
      ],
28 28
      "type": "object"
29 29
    },
30 30
    "block": {
31 31
      "properties": {
32 32
        "alignment": {
33 33
          "description": "Alignment of a single block's content. A linear document's blocks carry their own.",
34 34
          "knownValues": [
35 35
            "lex:pub.leaflet.pages.linearDocument#textAlignLeft",
36 36
            "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
37 37
            "lex:pub.leaflet.pages.linearDocument#textAlignRight",
38 38
            "lex:pub.leaflet.pages.linearDocument#textAlignJustify"
39 39
          ],
40 40
          "type": "string"
41 41
        },
42 42
        "block": {
43 43
          "description": "A single block, or a linear document: blocks grouped in reading order that are positioned, sized and rotated on the canvas as one.",
44 44
          "refs": [
45 45
            "pub.leaflet.blocks.iframe",
46 46
            "pub.leaflet.blocks.html",
47 47
            "pub.leaflet.blocks.text",
48 48
            "pub.leaflet.blocks.blockquote",
49 49
            "pub.leaflet.blocks.header",
50 50
            "pub.leaflet.blocks.image",
51 51
            "pub.leaflet.blocks.imageGallery",
52 52
            "pub.leaflet.blocks.unorderedList",
53 53
            "pub.leaflet.blocks.orderedList",
54 54
            "pub.leaflet.blocks.website",
55 55
            "pub.leaflet.blocks.math",
56 56
            "pub.leaflet.blocks.code",
57 57
            "pub.leaflet.blocks.horizontalRule",
58 58
            "pub.leaflet.blocks.bskyPost",
59 59
            "pub.leaflet.blocks.standardSitePost",
60 60
            "pub.leaflet.blocks.standardSitePublication",
61 61
            "pub.leaflet.blocks.page",
62 62
            "pub.leaflet.blocks.embeddedCanvas",
63 63
            "pub.leaflet.blocks.poll",
64 64
            "pub.leaflet.blocks.button",
65 65
            "pub.leaflet.blocks.postsList",
66 66
            "pub.leaflet.blocks.signup",
67 67
            "pub.leaflet.blocks.recommendedPubs",
68 +
            "pub.leaflet.blocks.reply",
69 +
            "pub.leaflet.blocks.questions",
68 70
            "pub.leaflet.blocks.membersOnlyDelimiter",
69 71
            "pub.leaflet.blocks.postHeader",
70 72
            "pub.leaflet.blocks.drawing",
71 73
            "pub.leaflet.pages.linearDocument"
72 74
          ],
73 75
          "type": "union"
74 76
        },
75 77
        "height": {
76 78
          "type": "integer"
77 79
        },
78 80
        "rotation": {
79 81
          "description": "The rotation of the block in degrees",
80 82
          "type": "integer"
81 83
        },
82 84
        "stackOrder": {
83 85
          "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.",
84 86
          "type": "string"
85 87
        },
86 88
        "width": {
87 89
          "type": "integer"
88 90
        },
89 91
        "x": {
90 92
          "type": "integer"
91 93
        },
92 94
        "y": {
93 95
          "type": "integer"
94 96
        }
95 97
      },
96 98
      "required": [
97 99
        "block",
98 100
        "x",
99 101
        "y",
100 102
        "width"
101 103
      ],
102 104
      "type": "object"
103 105
    },
104 106
    "main": {
105 107
      "properties": {
106 108
        "background": {
107 109
          "ref": "#background",
108 110
          "type": "ref"
109 111
        },
110 112
        "blocks": {
111 113
          "items": {
112 114
            "ref": "#block",
113 115
            "type": "ref"
114 116
          },
115 117
          "type": "array"
116 118
        },
117 119
        "height": {
118 120
          "description": "Fixed canvas height in canvas px; see width.",
119 121
          "type": "integer"
120 122
        },
121 123
        "id": {
122 124
          "type": "string"
123 125
        },
124 126
        "lockViewerZoom": {
125 127
          "description": "Viewers cannot zoom the canvas or scroll it sideways: no wheel, pinch, double-tap or zoom controls, and the initial framing (see mobileView) stays. Vertical scrolling is unaffected.",
126 128
          "type": "boolean"
127 129
        },
128 130
        "mobileView": {
129 131
          "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.",
130 132
          "knownValues": [
131 133
            "unconstrained",
132 134
            "left",
133 135
            "center"
134 136
          ],
135 137
          "type": "string"
136 138
        },
137 139
        "pattern": {
138 140
          "description": "The guide pattern drawn over the canvas's background, under its blocks. Absent, a canvas that grows with its content shows the grid and a fixed-size canvas is plain.",
139 141
          "knownValues": [
140 142
            "grid",
141 143
            "dot",
142 144
            "plain"
143 145
          ],
144 146
          "type": "string"
145 147
        },
146 148
        "theme": {
147 149
          "ref": "pub.leaflet.theme.page",
148 150
          "type": "ref"
149 151
        },
150 152
        "width": {
151 153
          "description": "Fixed canvas width in canvas px. With height, bounds the canvas: blocks are clipped to the area. Absent, the canvas grows with its content and is 1272px wide, or as wide as the inside of the publication's page (its theme's pageWidth) when it is one of a publication's pages.",
152 154
          "type": "integer"
153 155
        }
154 156
      },
155 157
      "required": [
156 158
        "blocks"
157 159
      ],
158 160
      "type": "object"
159 161
    },
160 162
    "position": {
161 163
      "properties": {
162 164
        "block": {
163 165
          "items": {
164 166
            "type": "integer"
165 167
          },
166 168
          "type": "array"
167 169
        },
168 170
        "offset": {
169 171
          "type": "integer"
170 172
        }
171 173
      },
172 174
      "required": [
173 175
        "block",
174 176
        "offset"
175 177
      ],
176 178
      "type": "object"
177 179
    },
178 180
    "quote": {
179 181
      "properties": {
180 182
        "end": {
181 183
          "ref": "#position",
182 184
          "type": "ref"
183 185
        },
184 186
        "start": {
185 187
          "ref": "#position",
186 188
          "type": "ref"
187 189
        }
188 190
      },
189 191
      "required": [
190 192
        "start",
191 193
        "end"
192 194
      ],
193 195
      "type": "object"
194 196
    },
195 197
    "textAlignCenter": {
196 198
      "type": "token"
197 199
    },
198 200
    "textAlignLeft": {
199 201
      "type": "token"
200 202
    },
201 203
    "textAlignRight": {
202 204
      "type": "token"
203 205
    }
204 206
  },
205 207
  "id": "pub.leaflet.pages.canvas",
206 208
  "lexicon": 1
207 209
}

Compare Other Versions

Lexicon Garden

@