social.colibri.community

colibri.social

Schema Diff

+42 -5

From

CID
bafyreihp57u44nu...
Indexed At
2026-03-19 20:26 UTC
View this version

To

CID
bafyreiex5vsfhbv...
Indexed At
2026-08-15 22:24 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 11 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "social.colibri.community:body", src: "social.colibri.community:body", tgt: "social.colibri.community:body.requiresApprovalToJoin", kind: "prop", name: Some("requiresApprovalToJoin") }
Non-Breaking Changes (11)
  • 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" }
  • AddedVertex AddedVertex { vertex_id: "social.colibri.community:body.requiresApprovalToJoin" }
  • 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" }
  • AddedVertex { vertex_id: "social.colibri.community:body.requiresApprovalToJoin" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "social.colibri.community:body", src: "social.colibri.community:body", tgt: "social.colibri.community:body.requiresApprovalToJoin", kind: "prop", name: Some("requiresApprovalToJoin") }
  • 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
  "id": "social.colibri.community",
3 3
  "defs": {
4 4
    "main": {
5 -
      "key": "tid",
5 +
      "key": "literal:self",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "name",
11 11
          "description",
12 -
          "categoryOrder"
12 +
          "categoryOrder",
13 +
          "requiresApprovalToJoin"
13 14
        ],
14 15
        "properties": {
15 16
          "name": {
16 17
            "type": "string",
17 18
            "default": "New Community",
18 19
            "maxLength": 32,
19 20
            "minLength": 1,
20 21
            "description": "The name of the community."
21 22
          },
22 23
          "$type": {
23 24
            "type": "string",
24 25
            "format": "nsid",
25 26
            "description": "The type of the record."
26 27
          },
28 +
          "banner": {
29 +
            "type": "blob",
30 +
            "accept": [
31 +
              "image/jpeg",
32 +
              "image/png",
33 +
              "image/gif",
34 +
              "image/webp"
35 +
            ],
36 +
            "description": "A banner for the community that will be shown to users."
37 +
          },
38 +
          "appview": {
39 +
            "type": "string",
40 +
            "format": "did",
41 +
            "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."
42 +
          },
27 43
          "picture": {
28 44
            "type": "blob",
29 45
            "accept": [
30 46
              "image/jpeg",
31 47
              "image/png",
32 -
              "image/gif"
48 +
              "image/gif",
49 +
              "image/webp"
33 50
            ],
34 51
            "description": "An image for the community that will be shown to users."
35 52
          },
53 +
          "linkEmbeds": {
54 +
            "type": "boolean",
55 +
            "default": true,
56 +
            "description": "Whether link previews are displayed in this community by default. Individual channels may override this."
57 +
          },
58 +
          "migratedTo": {
59 +
            "type": "string",
60 +
            "format": "at-uri",
61 +
            "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."
62 +
          },
36 63
          "description": {
37 64
            "type": "string",
38 65
            "default": "",
39 66
            "maxLength": 256,
40 67
            "description": "A description of the community."
41 68
          },
69 +
          "migratedFrom": {
70 +
            "type": "string",
71 +
            "format": "at-uri",
72 +
            "description": "Set on a community created by migrating a legacy community. Points at the legacy community record this one replaces."
73 +
          },
42 74
          "categoryOrder": {
43 75
            "type": "array",
44 76
            "items": {
45 77
              "type": "string",
46 78
              "format": "record-key",
47 79
              "description": "A category in this community."
48 80
            },
49 81
            "description": "The order of the categories in this community."
82 +
          },
83 +
          "requiresApprovalToJoin": {
84 +
            "type": "boolean",
85 +
            "default": true,
86 +
            "description": "Whether users can chat in this community without the owner having to create an acknowledgement record."
50 87
          }
51 88
        }
52 89
      },
53 -
      "description": "A community, or \"server\", is where users join to interact with each other on Colibri."
90 +
      "description": "A community, or \"server\", is where users join to interact with each other on Colibri. Singleton record on the community DID's repo."
54 91
    }
55 92
  },
56 93
  "$type": "com.atproto.lexicon.schema",
57 94
  "lexicon": 1,
58 -
  "revision": 1
95 +
  "revision": 5
59 96
}

Compare Other Versions

Lexicon Garden

@