pub.leaflet.pages.canvas

leaflet.pub

Schema Diff

+1 -0

From

CID
bafyreibqsa4cxjw...
Indexed At
2026-10-06 18:51 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, 12 non-breaking changes.

Breaking Changes (8)
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant27", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant27", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
Non-Breaking Changes (12)
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.blocks.questions" }
  • 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: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: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.pages.canvas#block.block:variant28" }

Additional Notes

  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant24", kind: "variant", name: Some("pub.leaflet.blocks.membersOnlyDelimiter") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant25", kind: "variant", name: Some("pub.leaflet.blocks.postHeader") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant26", kind: "variant", name: Some("pub.leaflet.blocks.drawing") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block", tgt: "pub.leaflet.pages.canvas#block.block:variant27", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant24", tgt: "pub.leaflet.blocks.membersOnlyDelimiter", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant25", tgt: "pub.leaflet.blocks.postHeader", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant26", tgt: "pub.leaflet.blocks.drawing", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "pub.leaflet.pages.canvas#block.block:variant27", 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: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: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 68
            "pub.leaflet.blocks.reply",
69 +
            "pub.leaflet.blocks.questions",
69 70
            "pub.leaflet.blocks.membersOnlyDelimiter",
70 71
            "pub.leaflet.blocks.postHeader",
71 72
            "pub.leaflet.blocks.drawing",
72 73
            "pub.leaflet.pages.linearDocument"
73 74
          ],
74 75
          "type": "union"
75 76
        },
76 77
        "height": {
77 78
          "type": "integer"
78 79
        },
79 80
        "rotation": {
80 81
          "description": "The rotation of the block in degrees",
81 82
          "type": "integer"
82 83
        },
83 84
        "stackOrder": {
84 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.",
85 86
          "type": "string"
86 87
        },
87 88
        "width": {
88 89
          "type": "integer"
89 90
        },
90 91
        "x": {
91 92
          "type": "integer"
92 93
        },
93 94
        "y": {
94 95
          "type": "integer"
95 96
        }
96 97
      },
97 98
      "required": [
98 99
        "block",
99 100
        "x",
100 101
        "y",
101 102
        "width"
102 103
      ],
103 104
      "type": "object"
104 105
    },
105 106
    "main": {
106 107
      "properties": {
107 108
        "background": {
108 109
          "ref": "#background",
109 110
          "type": "ref"
110 111
        },
111 112
        "blocks": {
112 113
          "items": {
113 114
            "ref": "#block",
114 115
            "type": "ref"
115 116
          },
116 117
          "type": "array"
117 118
        },
118 119
        "height": {
119 120
          "description": "Fixed canvas height in canvas px; see width.",
120 121
          "type": "integer"
121 122
        },
122 123
        "id": {
123 124
          "type": "string"
124 125
        },
125 126
        "lockViewerZoom": {
126 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.",
127 128
          "type": "boolean"
128 129
        },
129 130
        "mobileView": {
130 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.",
131 132
          "knownValues": [
132 133
            "unconstrained",
133 134
            "left",
134 135
            "center"
135 136
          ],
136 137
          "type": "string"
137 138
        },
138 139
        "pattern": {
139 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.",
140 141
          "knownValues": [
141 142
            "grid",
142 143
            "dot",
143 144
            "plain"
144 145
          ],
145 146
          "type": "string"
146 147
        },
147 148
        "theme": {
148 149
          "ref": "pub.leaflet.theme.page",
149 150
          "type": "ref"
150 151
        },
151 152
        "width": {
152 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.",
153 154
          "type": "integer"
154 155
        }
155 156
      },
156 157
      "required": [
157 158
        "blocks"
158 159
      ],
159 160
      "type": "object"
160 161
    },
161 162
    "position": {
162 163
      "properties": {
163 164
        "block": {
164 165
          "items": {
165 166
            "type": "integer"
166 167
          },
167 168
          "type": "array"
168 169
        },
169 170
        "offset": {
170 171
          "type": "integer"
171 172
        }
172 173
      },
173 174
      "required": [
174 175
        "block",
175 176
        "offset"
176 177
      ],
177 178
      "type": "object"
178 179
    },
179 180
    "quote": {
180 181
      "properties": {
181 182
        "end": {
182 183
          "ref": "#position",
183 184
          "type": "ref"
184 185
        },
185 186
        "start": {
186 187
          "ref": "#position",
187 188
          "type": "ref"
188 189
        }
189 190
      },
190 191
      "required": [
191 192
        "start",
192 193
        "end"
193 194
      ],
194 195
      "type": "object"
195 196
    },
196 197
    "textAlignCenter": {
197 198
      "type": "token"
198 199
    },
199 200
    "textAlignLeft": {
200 201
      "type": "token"
201 202
    },
202 203
    "textAlignRight": {
203 204
      "type": "token"
204 205
    }
205 206
  },
206 207
  "id": "pub.leaflet.pages.canvas",
207 208
  "lexicon": 1
208 209
}

Compare Other Versions

Lexicon Garden

@