work.sequential.defs
Schema Diff
+21 -2
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
}