work.sequential.defs

sequential.work

Schema Diff

+21 -2

From

CID
bafyreiacgcsw76p...
Indexed At
2026-10-01 00:32 UTC
View this version

To

CID
bafyreifprrt6nkx...
Indexed At
2026-10-08 04:36 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 3 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "work.sequential.defs#localizedText", src: "work.sequential.defs#localizedText", tgt: "work.sequential.defs#localizedText.lang", kind: "prop", name: Some("lang") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "work.sequential.defs#localizedText", src: "work.sequential.defs#localizedText", tgt: "work.sequential.defs#localizedText.text", kind: "prop", name: Some("text") }
Non-Breaking Changes (3)
  • AddedVertex AddedVertex { vertex_id: "work.sequential.defs#localizedText" }
  • AddedVertex AddedVertex { vertex_id: "work.sequential.defs#localizedText.lang" }
  • AddedVertex AddedVertex { vertex_id: "work.sequential.defs#localizedText.text" }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "work.sequential.defs#localizedText" }
  • AddedVertex { vertex_id: "work.sequential.defs#localizedText.lang" }
  • AddedVertex { vertex_id: "work.sequential.defs#localizedText.text" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "work.sequential.defs#localizedText", src: "work.sequential.defs#localizedText", tgt: "work.sequential.defs#localizedText.lang", kind: "prop", name: Some("lang") }
  • Breaking: RequiredEdgeAdded { vertex_id: "work.sequential.defs#localizedText", src: "work.sequential.defs#localizedText", tgt: "work.sequential.defs#localizedText.text", kind: "prop", name: Some("text") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "aspectRatio": {
5 5
      "properties": {
6 6
        "height": {
7 7
          "minimum": 1,
8 8
          "type": "integer"
9 9
        },
10 10
        "width": {
11 11
          "minimum": 1,
12 12
          "type": "integer"
13 13
        }
14 14
      },
15 15
      "required": [
16 16
        "width",
17 17
        "height"
18 18
      ],
19 19
      "type": "object"
20 20
    },
21 21
    "bounds": {
22 22
      "description": "A rectangle relative to an image, in ten-thousandths of the image's width and height (0-10000), with the origin at the top left.",
23 23
      "properties": {
24 24
        "height": {
25 25
          "maximum": 10000,
26 26
          "minimum": 1,
27 27
          "type": "integer"
28 28
        },
29 29
        "width": {
30 30
          "maximum": 10000,
31 31
          "minimum": 1,
32 32
          "type": "integer"
33 33
        },
34 34
        "x": {
35 35
          "maximum": 10000,
36 36
          "minimum": 0,
37 37
          "type": "integer"
38 38
        },
39 39
        "y": {
40 40
          "maximum": 10000,
41 41
          "minimum": 0,
42 42
          "type": "integer"
43 43
        }
44 44
      },
45 45
      "required": [
46 46
        "x",
47 47
        "y",
48 48
        "width",
49 49
        "height"
50 50
      ],
51 51
      "type": "object"
52 52
    },
53 53
    "category": {
54 54
      "description": "A category for a series. AppViews may define their own categories.",
55 55
      "maxGraphemes": 64,
56 56
      "maxLength": 640,
57 57
      "type": "string"
58 58
    },
59 59
    "credit": {
60 60
      "properties": {
61 61
        "did": {
62 62
          "format": "did",
63 63
          "type": "string"
64 64
        },
65 65
        "displayName": {
66 66
          "maxGraphemes": 100,
67 67
          "maxLength": 1000,
68 68
          "type": "string"
69 69
        },
70 70
        "role": {
71 71
          "description": "The role of the credit. AppViews may define their own roles.",
72 72
          "knownValues": [
73 73
            "writer",
74 74
            "penciler",
75 75
            "inker",
76 76
            "colorist",
77 77
            "flats",
78 78
            "letterer",
79 79
            "cover",
80 80
            "creator",
81 81
            "editor",
82 82
            "editorInChief",
83 83
            "associateEditor",
84 84
            "assistantEditor",
85 85
            "designer",
86 86
            "artist",
87 87
            "translator",
88 88
            "painter",
89 89
            "backgrounds"
90 90
          ],
91 91
          "maxGraphemes": 64,
92 92
          "maxLength": 640,
93 93
          "type": "string"
94 94
        }
95 95
      },
96 96
      "required": [
97 97
        "displayName",
98 98
        "role"
99 99
      ],
100 100
      "type": "object"
101 101
    },
102 102
    "localizedAlt": {
103 103
      "description": "Localized alt text. Describes the art and transcribes the dialogue, captions and sound effects.",
104 104
      "properties": {
105 105
        "lang": {
106 106
          "description": "BCP-47 language tag for this text.",
107 107
          "format": "language",
108 108
          "type": "string"
109 109
        },
110 110
        "text": {
111 111
          "maxGraphemes": 10000,
112 112
          "maxLength": 100000,
113 113
          "type": "string"
114 114
        }
115 115
      },
116 116
      "required": [
117 117
        "lang",
118 118
        "text"
119 119
      ],
120 120
      "type": "object"
121 121
    },
122 122
    "localizedDescription": {
123 123
      "properties": {
124 124
        "lang": {
125 125
          "description": "BCP-47 language tag for this description.",
126 126
          "format": "language",
127 127
          "type": "string"
128 128
        },
129 129
        "text": {
130 130
          "maxGraphemes": 3000,
131 131
          "maxLength": 30000,
132 132
          "type": "string"
133 133
        }
134 134
      },
135 135
      "required": [
136 136
        "lang",
137 137
        "text"
138 138
      ],
139 139
      "type": "object"
140 140
    },
141 141
    "localizedImage": {
142 142
      "properties": {
143 143
        "image": {
144 144
          "accept": [
145 145
            "image/jpeg",
146 146
            "image/png",
147 147
            "image/webp",
148 148
            "image/avif"
149 149
          ],
150 150
          "description": "The localized image.",
151 151
          "maxSize": 4194304,
152 152
          "type": "blob"
153 153
        },
154 154
        "lang": {
155 155
          "description": "BCP-47 language tag for this image (e.g. 'en', 'pt-BR').",
156 156
          "format": "language",
157 157
          "type": "string"
158 158
        }
159 159
      },
160 160
      "required": [
161 161
        "image",
162 162
        "lang"
163 163
      ],
164 164
      "type": "object"
165 165
    },
166 +
    "localizedText": {
167 +
      "properties": {
168 +
        "lang": {
169 +
          "description": "BCP-47 language tag for this text.",
170 +
          "format": "language",
171 +
          "type": "string"
172 +
        },
173 +
        "text": {
174 +
          "maxGraphemes": 1000,
175 +
          "maxLength": 10000,
176 +
          "type": "string"
177 +
        }
178 +
      },
179 +
      "required": [
180 +
        "lang",
181 +
        "text"
182 +
      ],
183 +
      "type": "object"
184 +
    },
166 185
    "localizedTitle": {
167 186
      "properties": {
168 187
        "lang": {
169 188
          "description": "BCP-47 language tag for this title.",
170 189
          "format": "language",
171 190
          "type": "string"
172 191
        },
173 192
        "text": {
174 193
          "maxGraphemes": 100,
175 194
          "maxLength": 1000,
176 195
          "type": "string"
177 196
        }
178 197
      },
179 198
      "required": [
180 199
        "lang",
181 200
        "text"
182 201
      ],
183 202
      "type": "object"
184 203
    },
185 204
    "panel": {
186 205
      "description": "A panel on a page or strip. Carries the image's alt text, one description per panel, and optionally its position for panel-by-panel reading. A splash page or single-panel strip is a single panel.",
187 206
      "properties": {
188 207
        "alt": {
189 208
          "description": "Localized alt text for this panel: describes the art and transcribes the dialogue, captions and sound effects.",
190 209
          "items": {
191 210
            "ref": "work.sequential.defs#localizedAlt",
192 211
            "type": "ref"
193 212
          },
194 213
          "maxLength": 100,
195 214
          "type": "array"
196 215
        },
197 216
        "background": {
198 -
          "description": "When reading panel by panel, fills the viewport around the panel if the panel's aspect ratio differs from the viewport's. The alpha is the opacity: 0 shows the panel with the surrounding page still visible, 100 hides the page behind a solid color so the panel stands on its own. Treated as fully transparent when omitted.",
217 +
          "description": "When reading panel-by-panel, fills the viewport around the panel if the panel's aspect ratio differs from the viewport's. The alpha is the opacity: 0 shows the panel with the surrounding page still visible, 100 hides the page behind a solid color so the panel stands on its own. Treated as fully transparent when omitted.",
199 218
          "ref": "#rgba",
200 219
          "type": "ref"
201 220
        },
202 221
        "bounds": {
203 222
          "description": "Where the panel sits on the image. Optional, so alt text can be added without mapping panel positions.",
204 223
          "ref": "#bounds",
205 224
          "type": "ref"
206 225
        },
207 226
        "mask": {
208 227
          "accept": [
209 228
            "image/png"
210 229
          ],
211 230
          "description": "Black and white mask of the panel's exact shape, for panels that aren't rectangles or whose art bleeds past the panel border. Covers the panel's bounds, at the same size or aspect ratio, so the bounds must enclose everything the mask shows. Ignored when bounds are omitted. White shows the art, black hides it, and grays blend for soft edges.",
212 231
          "maxSize": 4194304,
213 232
          "type": "blob"
214 233
        },
215 234
        "transition": {
216 235
          "default": "none",
217 -
          "description": "When reading panel by panel, how the app moves to this panel from the previous one. Played in reverse when reading backward. 'none' switches instantly, 'pan' moves the view across the image to the panel, 'fade' crossfades from the previous panel, and 'zoom' pulls back to show the whole image then pushes in to the panel. Duration is up to the AppView. AppViews treat unknown values as 'none'.",
236 +
          "description": "When reading panel-by-panel, how the app moves to this panel from the previous one. Played in reverse when reading backward. 'none' switches instantly, 'pan' moves the view across the image to the panel, 'fade' crossfades from the previous panel, and 'zoom' pulls back to show the whole image then pushes in to the panel. Duration is up to the AppView. AppViews treat unknown values as 'none'.",
218 237
          "knownValues": [
219 238
            "none",
220 239
            "pan",
221 240
            "fade",
222 241
            "zoom"
223 242
          ],
224 243
          "type": "string"
225 244
        }
226 245
      },
227 246
      "type": "object"
228 247
    },
229 248
    "rgba": {
230 249
      "description": "A color with opacity.",
231 250
      "properties": {
232 251
        "a": {
233 252
          "description": "Opacity, from 0 (fully transparent) to 100 (fully opaque).",
234 253
          "maximum": 100,
235 254
          "minimum": 0,
236 255
          "type": "integer"
237 256
        },
238 257
        "b": {
239 258
          "maximum": 255,
240 259
          "minimum": 0,
241 260
          "type": "integer"
242 261
        },
243 262
        "g": {
244 263
          "maximum": 255,
245 264
          "minimum": 0,
246 265
          "type": "integer"
247 266
        },
248 267
        "r": {
249 268
          "maximum": 255,
250 269
          "minimum": 0,
251 270
          "type": "integer"
252 271
        }
253 272
      },
254 273
      "required": [
255 274
        "r",
256 275
        "g",
257 276
        "b",
258 277
        "a"
259 278
      ],
260 279
      "type": "object"
261 280
    },
262 281
    "tag": {
263 282
      "description": "A free-form tag, without a leading '#'.",
264 283
      "maxGraphemes": 64,
265 284
      "maxLength": 640,
266 285
      "type": "string"
267 286
    },
268 287
    "version": {
269 288
      "description": "Another version of the same artwork, such as a production stage (pencils, inks) or an alternate treatment (virgin, black and white).",
270 289
      "properties": {
271 290
        "image": {
272 291
          "accept": [
273 292
            "image/jpeg",
274 293
            "image/png",
275 294
            "image/webp",
276 295
            "image/avif"
277 296
          ],
278 297
          "description": "The version image.",
279 298
          "maxSize": 4194304,
280 299
          "type": "blob"
281 300
        },
282 301
        "kind": {
283 302
          "description": "What this version shows. AppViews may define their own kinds.",
284 303
          "knownValues": [
285 304
            "thumbnails",
286 305
            "layout",
287 306
            "roughs",
288 307
            "pencils",
289 308
            "lineart",
290 309
            "inks",
291 310
            "flats",
292 311
            "colors",
293 312
            "letters"
294 313
          ],
295 314
          "maxGraphemes": 64,
296 315
          "maxLength": 640,
297 316
          "type": "string"
298 317
        }
299 318
      },
300 319
      "required": [
301 320
        "image",
302 321
        "kind"
303 322
      ],
304 323
      "type": "object"
305 324
    }
306 325
  },
307 326
  "id": "work.sequential.defs",
308 327
  "lexicon": 1
309 328
}

Compare Other Versions

Lexicon Garden

@