social.colibri.community
Schema Diff
+35 -4
Compatibility Analysis
Backward Compatible
Backward compatible. 10 non-breaking changes.
Non-Breaking Changes (10)
- AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.appview" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.banner" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.linkEmbeds" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.migratedFrom" }
- AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.migratedTo" }
- AddedEdge AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.appview", kind: "prop", name: Some("appview") }
- AddedEdge AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.banner", kind: "prop", name: Some("banner") }
- AddedEdge AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.linkEmbeds", kind: "prop", name: Some("linkEmbeds") }
- AddedEdge AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.migratedFrom", kind: "prop", name: Some("migratedFrom") }
- AddedEdge AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.migratedTo", kind: "prop", name: Some("migratedTo") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "social.colibri.community:body.appview" }AddedVertex { vertex_id: "social.colibri.community:body.banner" }AddedVertex { vertex_id: "social.colibri.community:body.linkEmbeds" }AddedVertex { vertex_id: "social.colibri.community:body.migratedFrom" }AddedVertex { vertex_id: "social.colibri.community:body.migratedTo" }
Additional Notes
- Non-breaking: AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.appview", kind: "prop", name: Some("appview") }
- Non-breaking: AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.banner", kind: "prop", name: Some("banner") }
- Non-breaking: AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.linkEmbeds", kind: "prop", name: Some("linkEmbeds") }
- Non-breaking: AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.migratedFrom", kind: "prop", name: Some("migratedFrom") }
- Non-breaking: AddedEdge { src: "social.colibri.community:body", tgt: "social.colibri.community:body.migratedTo", kind: "prop", name: Some("migratedTo") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "A community, or \"server\", is where users join to interact with each other on Colibri.",
6
-
"key": "tid",
5
+
"description": "A community, or \"server\", is where users join to interact with each other on Colibri. Singleton record on the community DID's repo.",
6
+
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"$type": {
10
10
"description": "The type of the record.",
11
11
"format": "nsid",
12
12
"type": "string"
13
13
},
14
+
"appview": {
15
+
"description": "DID of the AppView that administers this community and acts as its off-protocol hub (Humming presence relay and voice SFU host). Written by the credential-holding AppView. Consumers that find this field absent fall back to did:web:api.colibri.social.",
16
+
"format": "did",
17
+
"type": "string"
18
+
},
19
+
"banner": {
20
+
"accept": [
21
+
"image/jpeg",
22
+
"image/png",
23
+
"image/gif",
24
+
"image/webp"
25
+
],
26
+
"description": "A banner for the community that will be shown to users.",
27
+
"type": "blob"
28
+
},
14
29
"categoryOrder": {
15
30
"description": "The order of the categories in this community.",
16
31
"items": {
17
32
"description": "A category in this community.",
18
33
"format": "record-key",
19
34
"type": "string"
20
35
},
21
36
"type": "array"
22
37
},
23
38
"description": {
24
39
"default": "",
25
40
"description": "A description of the community.",
26
41
"maxLength": 256,
27
42
"type": "string"
28
43
},
44
+
"linkEmbeds": {
45
+
"default": true,
46
+
"description": "Whether link previews are displayed in this community by default. Individual channels may override this.",
47
+
"type": "boolean"
48
+
},
49
+
"migratedFrom": {
50
+
"description": "Set on a community created by migrating a legacy community. Points at the legacy community record this one replaces.",
51
+
"format": "at-uri",
52
+
"type": "string"
53
+
},
54
+
"migratedTo": {
55
+
"description": "Set on a legacy community record once it has been migrated. Points at the new community record that replaces it; consumers treat this community as retired and hide it.",
56
+
"format": "at-uri",
57
+
"type": "string"
58
+
},
29
59
"name": {
30
60
"default": "New Community",
31
61
"description": "The name of the community.",
32
62
"maxLength": 32,
33
63
"minLength": 1,
34
64
"type": "string"
35
65
},
36
66
"picture": {
37
67
"accept": [
38
68
"image/jpeg",
39
69
"image/png",
40
-
"image/gif"
70
+
"image/gif",
71
+
"image/webp"
41
72
],
42
73
"description": "An image for the community that will be shown to users.",
43
74
"type": "blob"
44
75
},
45
76
"requiresApprovalToJoin": {
46
77
"default": true,
47
78
"description": "Whether users can chat in this community without the owner having to create an acknowledgement record.",
48
79
"type": "boolean"
49
80
}
50
81
},
51
82
"required": [
52
83
"name",
53
84
"description",
54
85
"categoryOrder",
55
86
"requiresApprovalToJoin"
56
87
],
57
88
"type": "object"
58
89
},
59
90
"type": "record"
60
91
}
61
92
},
62
93
"id": "social.colibri.community",
63
94
"lexicon": 1,
64
-
"revision": 1
95
+
"revision": 5
65
96
}