full diff

ai.syui.log.chat

syui.bsky.social +95 −22
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": 1
83156}

Compare other versions