at.meme-museum.collection
Schema Diff
+14 -22
Compatibility Analysis
Breaking Changes Detected
10 breaking changes, 4 non-breaking changes.
Breaking Changes (10)
- RemovedVertex RemovedVertex { vertex_id: "app.bsky.richtext.facet" }
- RemovedVertex RemovedVertex { vertex_id: "at.meme-museum.collection:body.avatar" }
- RemovedVertex RemovedVertex { vertex_id: "at.meme-museum.collection:body.descriptionFacets" }
- RemovedVertex RemovedVertex { vertex_id: "at.meme-museum.collection:body.descriptionFacets:items" }
- RemovedEdge RemovedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.avatar", kind: "prop", name: Some("avatar") }
- RemovedEdge RemovedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
- RemovedEdge RemovedEdge { src: "at.meme-museum.collection:body.descriptionFacets", tgt: "at.meme-museum.collection:body.descriptionFacets:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "at.meme-museum.collection:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
- ConstraintTightened ConstraintTightened { vertex_id: "at.meme-museum.collection:body.description", sort: "maxLength", old_value: "3000", new_value: "1000" }
- ConstraintTightened ConstraintTightened { vertex_id: "at.meme-museum.collection:body.name", sort: "maxLength", old_value: "640", new_value: "100" }
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "at.meme-museum.collection:body.visibility" }
- AddedEdge AddedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.visibility", kind: "prop", name: Some("visibility") }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.meme-museum.collection:body.description", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.meme-museum.collection:body.name", sort: "minLength" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "app.bsky.richtext.facet" }RemovedVertex { vertex_id: "at.meme-museum.collection:body.avatar" }RemovedVertex { vertex_id: "at.meme-museum.collection:body.descriptionFacets" }RemovedVertex { vertex_id: "at.meme-museum.collection:body.descriptionFacets:items" }
Added Elements
AddedVertex { vertex_id: "at.meme-museum.collection:body.visibility" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "at.meme-museum.collection:body.name", sort: "maxLength", old_value: "640", new_value: "100" }
- ConstraintTightened ConstraintTightened { vertex_id: "at.meme-museum.collection:body.description", sort: "maxLength", old_value: "3000", new_value: "1000" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.meme-museum.collection:body.name", sort: "minLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "at.meme-museum.collection:body.description", sort: "maxGraphemes" }
Additional Notes
- Breaking: RemovedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.avatar", kind: "prop", name: Some("avatar") }
- Breaking: RemovedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
- Breaking: RemovedEdge { src: "at.meme-museum.collection:body.descriptionFacets", tgt: "at.meme-museum.collection:body.descriptionFacets:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "at.meme-museum.collection:body.descriptionFacets:items", tgt: "app.bsky.richtext.facet", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "at.meme-museum.collection:body", tgt: "at.meme-museum.collection:body.visibility", kind: "prop", name: Some("visibility") }
1
1
{
2
2
"id": "at.meme-museum.collection",
3
3
"defs": {
4
4
"main": {
5
-
"key": "any",
5
+
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"name",
11
11
"createdAt"
12
12
],
13
13
"properties": {
14
14
"name": {
15
15
"type": "string",
16
-
"maxLength": 640,
17
-
"minLength": 1,
18
-
"description": "TODO: title name of record; can not be empty",
16
+
"maxLength": 100,
19
17
"maxGraphemes": 64
20
-
},
21
-
"avatar": {
22
-
"type": "blob",
23
-
"accept": [
24
-
"image/png",
25
-
"image/jpeg"
26
-
],
27
-
"maxSize": 2000000
28
18
},
29
19
"createdAt": {
30
20
"type": "string",
31
21
"format": "datetime"
32
22
},
23
+
"visibility": {
24
+
"type": "string",
25
+
"default": "public",
26
+
"maxLength": 64,
27
+
"description": "Soft signal only, not access control -- see docs/data-model.md.",
28
+
"knownValues": [
29
+
"public",
30
+
"unlisted"
31
+
]
32
+
},
33
33
"description": {
34
34
"type": "string",
35
-
"maxLength": 3000,
36
-
"maxGraphemes": 300
37
-
},
38
-
"descriptionFacets": {
39
-
"type": "array",
40
-
"items": {
41
-
"ref": "app.bsky.richtext.facet",
42
-
"type": "ref"
43
-
}
35
+
"maxLength": 1000
44
36
}
45
37
}
46
38
},
47
-
"description": "TODO: describe purpose of this schema"
39
+
"description": "A named board/folder of memes, e.g. \"reactions\" or \"cat pics\". Membership is recorded separately via at.meme-museum.collectionItem, not inline here."
48
40
}
49
41
},
50
42
"$type": "com.atproto.lexicon.schema",
51
43
"lexicon": 1
52
44
}