app.didpic.feed.comment
Schema Diff
+34 -4
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 12 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 (12)
- 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.facets" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.feed.comment:body.facets:items" }
- 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.facets", kind: "prop", name: Some("facets") }
- 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") }
- AddedEdge AddedEdge { src: "app.didpic.feed.comment:body.facets", tgt: "app.didpic.feed.comment:body.facets:items", kind: "items", name: None }
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.facets" }AddedVertex { vertex_id: "app.didpic.feed.comment:body.facets:items" }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: "maxGraphemes", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.comment:body.alt", sort: "maxLength", value: "10000" }
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.facets", kind: "prop", name: Some("facets") }
- 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") }
- Non-breaking: AddedEdge { src: "app.didpic.feed.comment:body.facets", tgt: "app.didpic.feed.comment:body.facets:items", kind: "items", name: None }
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
+
},
34
+
"facets": {
35
+
"type": "array",
36
+
"items": {
37
+
"ref": "app.didpic.richtext.facet",
38
+
"type": "ref"
39
+
}
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
+
},
20
46
"parent": {
21
47
"ref": "com.atproto.repo.strongRef",
22
48
"type": "ref",
23
-
"description": "Optional: the comment being replied to. Must be a comment on the same post as `subject`. When absent this is a top-level comment."
49
+
"description": "The comment being replied to."
24
50
},
25
51
"subject": {
26
52
"ref": "com.atproto.repo.strongRef",
27
53
"type": "ref",
28
-
"description": "The post being commented on (top of the thread)."
54
+
"description": "The post being commented on."
29
55
},
30
56
"createdAt": {
31
57
"type": "string",
32
58
"format": "datetime"
59
+
},
60
+
"aspectRatio": {
61
+
"ref": "app.didpic.feed.post#aspectRatio",
62
+
"type": "ref"
33
63
}
34
64
}
35
65
},
36
-
"description": "A comment on a didpic post. Optionally a reply to another comment on the same 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."
37
67
}
38
68
},
39
69
"$type": "com.atproto.lexicon.schema",
40
70
"lexicon": 1
41
71
}