From
bafyreifsb3mpeqzk3ol4uqrklkq7mm4kevafybw727krhwpxndxat7jj5a
indexed 2026-02-18 17:34 UTC
View this version
To
bafyreiewmxhyabcukmgq3pruobosj7bozust76hq7b6c6mcoq6us3itza4
indexed 2026-03-12 11:16 UTC
View this version
Compatibility
breaking 12 breaking changes, 36 non-breaking changes.
Breaking changes (12)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.chat#markdown", src: "ai.syui.log.chat#markdown", tgt: "ai.syui.log.chat#markdown.text", kind: "prop", name: Some("text") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.title", kind: "prop", name: Some("title") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.publishedAt", kind: "prop", name: Some("publishedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.site", kind: "prop", name: Some("site") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.content", kind: "prop", name: Some("content") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.createdAt", kind: "prop", name: Some("createdAt") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.author", kind: "prop", name: Some("author") }
- RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.author" }
- RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.createdAt" }
- RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.lang" }
- RemovedEdge RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.lang", kind: "prop", name: Some("lang") }
- KindChanged KindChanged { vertex_id: "ai.syui.log.chat:body.content", old_kind: "string", new_kind: "union" }
Non-breaking changes (36)
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#markdown" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#markdown.text" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#translation.title" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.bskyPostRef" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.content:variant0" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.coverImage" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.description" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.langs" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.langs:items" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.path" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.publishedAt" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.site" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.tags" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.tags:items" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.textContent" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.title" }
- AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.updatedAt" }
- AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
- AddedEdge AddedEdge { src: "ai.syui.log.chat#translation", tgt: "ai.syui.log.chat#translation.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.coverImage", kind: "prop", name: Some("coverImage") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.description", kind: "prop", name: Some("description") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.langs", kind: "prop", name: Some("langs") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.path", kind: "prop", name: Some("path") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.tags", kind: "prop", name: Some("tags") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.textContent", kind: "prop", name: Some("textContent") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body.bskyPostRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body.content", tgt: "ai.syui.log.chat:body.content:variant0", kind: "variant", name: Some("#markdown") }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body.content:variant0", tgt: "ai.syui.log.chat#markdown", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body.langs", tgt: "ai.syui.log.chat:body.langs:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "ai.syui.log.chat:body.tags", tgt: "ai.syui.log.chat:body.tags:items", kind: "items", name: None }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxLength", old_value: "100000", new_value: "1000000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxGraphemes", old_value: "10000", new_value: "100000" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxGraphemes" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxLength" }
Migration guidance
Removed
RemovedVertex { vertex_id: "ai.syui.log.chat:body.author" }RemovedVertex { vertex_id: "ai.syui.log.chat:body.createdAt" }RemovedVertex { vertex_id: "ai.syui.log.chat:body.lang" }
Added
AddedVertex { vertex_id: "ai.syui.log.chat#markdown" }AddedVertex { vertex_id: "ai.syui.log.chat#markdown.text" }AddedVertex { vertex_id: "ai.syui.log.chat#translation.title" }AddedVertex { vertex_id: "ai.syui.log.chat:body.bskyPostRef" }AddedVertex { vertex_id: "ai.syui.log.chat:body.content:variant0" }AddedVertex { vertex_id: "ai.syui.log.chat:body.coverImage" }AddedVertex { vertex_id: "ai.syui.log.chat:body.description" }AddedVertex { vertex_id: "ai.syui.log.chat:body.langs" }AddedVertex { vertex_id: "ai.syui.log.chat:body.langs:items" }AddedVertex { vertex_id: "ai.syui.log.chat:body.path" }AddedVertex { vertex_id: "ai.syui.log.chat:body.publishedAt" }AddedVertex { vertex_id: "ai.syui.log.chat:body.site" }AddedVertex { vertex_id: "ai.syui.log.chat:body.tags" }AddedVertex { vertex_id: "ai.syui.log.chat:body.tags:items" }AddedVertex { vertex_id: "ai.syui.log.chat:body.textContent" }AddedVertex { vertex_id: "ai.syui.log.chat:body.title" }AddedVertex { vertex_id: "ai.syui.log.chat:body.updatedAt" }AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
Constraint changes
- ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxGraphemes" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxLength", old_value: "100000", new_value: "1000000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxGraphemes", old_value: "10000", new_value: "100000" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.chat#markdown", src: "ai.syui.log.chat#markdown", tgt: "ai.syui.log.chat#markdown.text", kind: "prop", name: Some("text") }
- Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.title", kind: "prop", name: Some("title") }
- Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.publishedAt", kind: "prop", name: Some("publishedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.site", kind: "prop", name: Some("site") }
- Breaking: RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.content", kind: "prop", name: Some("content") }
- Breaking: RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.createdAt", kind: "prop", name: Some("createdAt") }
- Breaking: RequiredEdgeRemoved { vertex_id: "ai.syui.log.chat:body", src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.author", kind: "prop", name: Some("author") }
- Breaking: RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.lang", kind: "prop", name: Some("lang") }
- Breaking: KindChanged { vertex_id: "ai.syui.log.chat:body.content", old_kind: "string", new_kind: "union" }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat#translation", tgt: "ai.syui.log.chat#translation.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.coverImage", kind: "prop", name: Some("coverImage") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.description", kind: "prop", name: Some("description") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.langs", kind: "prop", name: Some("langs") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.path", kind: "prop", name: Some("path") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.tags", kind: "prop", name: Some("tags") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.textContent", kind: "prop", name: Some("textContent") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.bskyPostRef", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.content", tgt: "ai.syui.log.chat:body.content:variant0", kind: "variant", name: Some("#markdown") }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.content:variant0", tgt: "ai.syui.log.chat#markdown", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.langs", tgt: "ai.syui.log.chat:body.langs:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.tags", tgt: "ai.syui.log.chat:body.tags:items", kind: "items", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {5
"description": "Record containing a chat message in a conversation.",5
"description": "Record containing a chat message. Compatible with site.standard.document.",66
"key": "tid",77
"record": {88
"properties": {9
"author": {10
"description": "DID of the message author.",11
"format": "did",12
"type": "string"9
"bskyPostRef": {10
"description": "Strong reference to a Bluesky post.",11
"ref": "com.atproto.repo.strongRef",12
"type": "ref"1313
},1414
"content": {15
"description": "The content of the message.",16
"maxGraphemes": 10000,17
"maxLength": 100000,18
"type": "string"15
"closed": false,16
"description": "Open union for content. Supports markdown and other formats via $type.",17
"refs": [18
"#markdown"19
],20
"type": "union"1921
},20
"createdAt": {21
"description": "Client-declared timestamp when this message was created.",22
"format": "datetime",23
"type": "string"22
"coverImage": {23
"accept": [24
"image/*"25
],26
"description": "Cover image. Less than 1MB.",27
"maxSize": 1000000,28
"type": "blob"2429
},25
"lang": {26
"description": "Language code of the original content (e.g., 'ja', 'en').",27
"maxLength": 10,30
"description": {31
"description": "A brief description or excerpt from the message.",32
"maxGraphemes": 3000,33
"maxLength": 30000,2834
"type": "string"2935
},36
"langs": {37
"description": "Indicates human language of message content.",38
"items": {39
"format": "language",40
"type": "string"41
},42
"maxLength": 3,43
"type": "array"44
},3045
"parent": {3146
"description": "AT-URI of the parent message being replied to.",3247
"format": "at-uri",3348
"type": "string"3449
},50
"path": {51
"description": "Combine with site URL to construct a canonical URL to the message.",52
"type": "string"53
},54
"publishedAt": {55
"description": "Timestamp of the message's publish time.",56
"format": "datetime",57
"type": "string"58
},3559
"root": {36
"description": "AT-URI of the root message in the thread.",60
"description": "AT-URI of the root message in a thread.",3761
"format": "at-uri",3862
"type": "string"3963
},64
"site": {65
"description": "Points to a publication record (at://) or a publication URL (https://).",66
"format": "uri",67
"type": "string"68
},69
"tags": {70
"description": "Tags to categorize the message.",71
"items": {72
"maxGraphemes": 128,73
"maxLength": 1280,74
"type": "string"75
},76
"type": "array"77
},78
"textContent": {79
"description": "Plaintext representation of the message content. Should not contain markdown or other formatting.",80
"type": "string"81
},82
"title": {83
"description": "Title of the message or thread topic.",84
"maxGraphemes": 500,85
"maxLength": 5000,86
"type": "string"87
},4088
"translations": {4189
"description": "Translations of the message in other languages.",4290
"ref": "#translationMap",4391
"type": "ref"92
},93
"updatedAt": {94
"description": "Timestamp of the message's last edit.",95
"format": "datetime",96
"type": "string"4497
}4598
},4699
"required": [47
"content",48
"author",49
"createdAt"100
"site",101
"title",102
"publishedAt"50103
],51104
"type": "object"52105
},53106
"type": "record"54107
},108
"markdown": {109
"description": "Markdown content format.",110
"properties": {111
"text": {112
"description": "Markdown text content.",113
"maxGraphemes": 100000,114
"maxLength": 1000000,115
"type": "string"116
}117
},118
"required": [119
"text"120
],121
"type": "object"122
},55123
"translation": {56124
"description": "A translation of a chat message.",57125
"properties": {58126
"content": {59
"maxGraphemes": 10000,60
"maxLength": 100000,127
"maxGraphemes": 100000,128
"maxLength": 1000000,129
"type": "string"130
},131
"title": {132
"maxGraphemes": 500,133
"maxLength": 5000,61134
"type": "string"62135
}63136
},64137
"type": "object"65138
},66139
"translationMap": {67140
"description": "Map of language codes to translations.",68141
"properties": {69142
"en": {70143
"ref": "#translation",71144
"type": "ref"72145
},73146
"ja": {74147
"ref": "#translation",75148
"type": "ref"76149
}77150
},78151
"type": "object"79152
}80153
},81154
"id": "ai.syui.log.chat",82155
"lexicon": 183156
}