app.didpic.feed.comment
Schema Diff
+25 -2
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 8 non-breaking changes.
Breaking Changes (2)
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.comment:body.alt", sort: "maxGraphemes", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.comment:body.alt", sort: "maxLength", value: "10000" }
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.comment:body.alt" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.comment:body.aspectRatio" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.comment:body.image" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.comment:body.labels" }
- AddedEdge AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.alt", kind: "prop", name: Some("alt") }
- AddedEdge AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- AddedEdge AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.image", kind: "prop", name: Some("image") }
- AddedEdge AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.labels", kind: "prop", name: Some("labels") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.feed.comment:body.alt" }AddedVertex { vertex_id: "app.didpic.feed.comment:body.aspectRatio" }AddedVertex { vertex_id: "app.didpic.feed.comment:body.image" }AddedVertex { vertex_id: "app.didpic.feed.comment:body.labels" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.comment:body.alt", sort: "maxLength", value: "10000" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.comment:body.alt", sort: "maxGraphemes", value: "1000" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.alt", kind: "prop", name: Some("alt") }
- Non-breaking: AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.aspectRatio", kind: "prop", name: Some("aspectRatio") }
- Non-breaking: AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.image", kind: "prop", name: Some("image") }
- Non-breaking: AddedEdge { src: "app.didpic.feed.comment:body", tgt: "app.didpic.feed.comment:body.labels", kind: "prop", name: Some("labels") }
1
1
{
2
2
"id": "app.didpic.feed.comment",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"subject",
11
-
"text",
12
11
"createdAt"
13
12
],
14
13
"properties": {
14
+
"alt": {
15
+
"type": "string",
16
+
"maxLength": 10000,
17
+
"description": "Alt text for accessibility. Required by the client when `image` is set and the author has the requireAltText pref enabled.",
18
+
"maxGraphemes": 1000
19
+
},
15
20
"text": {
16
21
"type": "string",
17
22
"maxLength": 10000,
18
23
"maxGraphemes": 1000
19
24
},
25
+
"image": {
26
+
"type": "blob",
27
+
"accept": [
28
+
"image/png",
29
+
"image/jpeg",
30
+
"image/webp"
31
+
],
32
+
"maxSize": 5000000
33
+
},
20
34
"facets": {
21
35
"type": "array",
22
36
"items": {
23
37
"ref": "app.didpic.richtext.facet",
24
38
"type": "ref"
25
39
}
26
40
},
41
+
"labels": {
42
+
"ref": "app.didpic.feed.post#selfLabels",
43
+
"type": "ref",
44
+
"description": "Self-applied content labels (e.g. nsfw) on the comment's image."
45
+
},
27
46
"parent": {
28
47
"ref": "com.atproto.repo.strongRef",
29
48
"type": "ref",
30
49
"description": "The comment being replied to."
31
50
},
32
51
"subject": {
33
52
"ref": "com.atproto.repo.strongRef",
34
53
"type": "ref",
35
54
"description": "The post being commented on."
36
55
},
37
56
"createdAt": {
38
57
"type": "string",
39
58
"format": "datetime"
59
+
},
60
+
"aspectRatio": {
61
+
"ref": "app.didpic.feed.post#aspectRatio",
62
+
"type": "ref"
40
63
}
41
64
}
42
65
},
43
-
"description": "A comment on a post."
66
+
"description": "A comment on a post. Optionally includes a single image with alt text and self-applied labels — same image shape as feed.post. Either text or image (or both) must be present in practice; the lexicon doesn't enforce that since 'one of N required' isn't expressible."
44
67
}
45
68
},
46
69
"$type": "com.atproto.lexicon.schema",
47
70
"lexicon": 1
48
71
}