From
bafyreieicpkmprbdvcadiyb2nb6m6q6d74mijrmnli2ttdl6fim5n7g2ke
indexed 2026-10-27 01:16 UTC
View this version
To
bafyreigkmvmk36n7cpxt4fcsh63h37rf4upo4yxiaziu6fnmrfbxyf2o5q
indexed 2026-11-05 16:25 UTC
View this version
Compatibility
breaking 6 breaking changes, 19 non-breaking changes.
Breaking changes (6)
- KindChanged KindChanged { vertex_id: "fyi.opensocial.profile:body.joinPolicy", old_kind: "string", new_kind: "ref" }
- KindChanged KindChanged { vertex_id: "fyi.opensocial.profile:body.languages:items", old_kind: "string", new_kind: "ref" }
- KindChanged KindChanged { vertex_id: "fyi.opensocial.profile:body.topics:items", old_kind: "string", new_kind: "ref" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "ref", value: "fyi.opensocial.defs#topicRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.languages:items", sort: "ref", value: "fyi.opensocial.defs#languageRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "ref", value: "fyi.opensocial.defs#joinPolicy" }
Non-breaking changes (19)
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#joinPolicy" }
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#languageRef" }
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#link" }
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.defs#topicRef" }
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.profile:body.links" }
- AddedVertex AddedVertex { vertex_id: "fyi.opensocial.profile:body.links:items" }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body", tgt: "fyi.opensocial.profile:body.links", kind: "prop", name: Some("links") }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body.joinPolicy", tgt: "fyi.opensocial.defs#joinPolicy", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body.languages:items", tgt: "fyi.opensocial.defs#languageRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body.links", tgt: "fyi.opensocial.profile:body.links:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body.links:items", tgt: "fyi.opensocial.defs#link", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "fyi.opensocial.profile:body.topics:items", tgt: "fyi.opensocial.defs#topicRef", kind: "ref", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.languages:items", sort: "format" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "fyi.opensocial.profile:body.description", sort: "maxGraphemes", old_value: "300", new_value: "2000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "fyi.opensocial.profile:body.description", sort: "maxLength", old_value: "3000", new_value: "20000" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "knownValues" }
Migration guidance
Added
AddedVertex { vertex_id: "fyi.opensocial.defs#joinPolicy" }AddedVertex { vertex_id: "fyi.opensocial.defs#languageRef" }AddedVertex { vertex_id: "fyi.opensocial.defs#link" }AddedVertex { vertex_id: "fyi.opensocial.defs#topicRef" }AddedVertex { vertex_id: "fyi.opensocial.profile:body.links" }AddedVertex { vertex_id: "fyi.opensocial.profile:body.links:items" }
Constraint changes
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.languages:items", sort: "ref", value: "fyi.opensocial.defs#languageRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "ref", value: "fyi.opensocial.defs#joinPolicy" }
- ConstraintAdded ConstraintAdded { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "ref", value: "fyi.opensocial.defs#topicRef" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.languages:items", sort: "format" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.joinPolicy", sort: "knownValues" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "fyi.opensocial.profile:body.topics:items", sort: "maxLength" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "fyi.opensocial.profile:body.description", sort: "maxLength", old_value: "3000", new_value: "20000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "fyi.opensocial.profile:body.description", sort: "maxGraphemes", old_value: "300", new_value: "2000" }
Notes
- Breaking: KindChanged { vertex_id: "fyi.opensocial.profile:body.joinPolicy", old_kind: "string", new_kind: "ref" }
- Breaking: KindChanged { vertex_id: "fyi.opensocial.profile:body.languages:items", old_kind: "string", new_kind: "ref" }
- Breaking: KindChanged { vertex_id: "fyi.opensocial.profile:body.topics:items", old_kind: "string", new_kind: "ref" }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body", tgt: "fyi.opensocial.profile:body.links", kind: "prop", name: Some("links") }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body.joinPolicy", tgt: "fyi.opensocial.defs#joinPolicy", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body.languages:items", tgt: "fyi.opensocial.defs#languageRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body.links", tgt: "fyi.opensocial.profile:body.links:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body.links:items", tgt: "fyi.opensocial.defs#link", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "fyi.opensocial.profile:body.topics:items", tgt: "fyi.opensocial.defs#topicRef", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "The group's profile. Written by the group authority into the meta space.",66
"key": "literal:self",77
"record": {88
"properties": {99
"avatar": {1010
"accept": [1111
"image/png",12
"image/jpeg"12
"image/jpeg",13
"image/webp"1314
],14
"maxSize": 1000000,15
"maxSize": 2000000,1516
"type": "blob"1617
},1718
"banner": {1819
"accept": [1920
"image/png",20
"image/jpeg"21
"image/jpeg",22
"image/webp"2123
],22
"maxSize": 1000000,24
"maxSize": 2000000,2325
"type": "blob"2426
},2527
"createdAt": {2628
"format": "datetime",2729
"type": "string"2830
},2931
"description": {30
"maxGraphemes": 300,31
"maxLength": 3000,32
"maxGraphemes": 2000,33
"maxLength": 20000,3234
"type": "string"3335
},3436
"displayName": {3537
"maxGraphemes": 64,3638
"maxLength": 640,3739
"type": "string"3840
},3941
"joinPolicy": {40
"description": "How new members get in: open admits anyone, approval queues a join request for review, invite requires an invitation. An invitation admits its recipient under any policy.",41
"knownValues": [42
"open",43
"approval",44
"invite"45
],46
"maxLength": 128,47
"type": "string"42
"ref": "fyi.opensocial.defs#joinPolicy",43
"type": "ref"4844
},4945
"languages": {5046
"description": "The languages it uses, as BCP 47 tags: en, pl, sl.",5147
"items": {52
"format": "language",53
"type": "string"48
"ref": "fyi.opensocial.defs#languageRef",49
"type": "ref"5450
},5551
"maxLength": 5,5652
"type": "array"5753
},54
"links": {55
"description": "Where else the group is, in the order it shows them: each an http or https address, and what it is.",56
"items": {57
"ref": "fyi.opensocial.defs#link",58
"type": "ref"59
},60
"maxLength": 5,61
"type": "array"62
},5863
"location": {5964
"description": "Where it meets, if it meets somewhere: a town or city is enough.",6065
"refs": [6166
"community.lexicon.location.address",6267
"community.lexicon.location.geo",6368
"community.lexicon.location.fsq",6469
"community.lexicon.location.hthree"6570
],6671
"type": "union"6772
},6873
"online": {6974
"description": "It meets online, as well as or instead of somewhere.",7075
"type": "boolean"7176
},7277
"topics": {7378
"description": "What it's about, a few words each, as the group puts it: climbing, choir, renters' union.",7479
"items": {75
"maxGraphemes": 64,76
"maxLength": 640,77
"type": "string"80
"ref": "fyi.opensocial.defs#topicRef",81
"type": "ref"7882
},7983
"maxLength": 10,8084
"type": "array"8185
},8286
"url": {8387
"description": "The group's own site, if it keeps one. A third-party app that shows the group can link back to it.",8488
"format": "uri",8589
"type": "string"8690
}8791
},8892
"required": [8993
"displayName",9094
"joinPolicy"9195
],9296
"type": "object"9397
},9498
"type": "record"9599
}96100
},97101
"id": "fyi.opensocial.profile",98102
"lexicon": 199103
}