tech.tokimeki.forum.message
Schema Diff
+25 -8
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 15 non-breaking changes.
Breaking Changes (4)
- KindChanged KindChanged { vertex_id: "tech.tokimeki.forum.message:body.replyTo", old_kind: "string", new_kind: "ref" }
- KindChanged KindChanged { vertex_id: "tech.tokimeki.forum.message:body.thread", old_kind: "string", new_kind: "ref" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "ref", value: "com.atproto.repo.strongRef" }
Non-Breaking Changes (15)
- AddedVertex AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
- AddedVertex AddedVertex { vertex_id: "com.atproto.repo.strongRef" }
- AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels" }
- AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels:variant0" }
- AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs" }
- AddedVertex AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs:items" }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.labels", kind: "prop", name: Some("labels") }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.langs", kind: "prop", name: Some("langs") }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.labels", tgt: "tech.tokimeki.forum.message:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.langs", tgt: "tech.tokimeki.forum.message:body.langs:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.replyTo", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "tech.tokimeki.forum.message:body.thread", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "format" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "format" }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }AddedVertex { vertex_id: "com.atproto.repo.strongRef" }AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels" }AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.labels:variant0" }AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs" }AddedVertex { vertex_id: "tech.tokimeki.forum.message:body.langs:items" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintAdded ConstraintAdded { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "ref", value: "com.atproto.repo.strongRef" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.thread", sort: "format" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "tech.tokimeki.forum.message:body.replyTo", sort: "format" }
Additional Notes
- Breaking: KindChanged { vertex_id: "tech.tokimeki.forum.message:body.replyTo", old_kind: "string", new_kind: "ref" }
- Breaking: KindChanged { vertex_id: "tech.tokimeki.forum.message:body.thread", old_kind: "string", new_kind: "ref" }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.labels", kind: "prop", name: Some("labels") }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body", tgt: "tech.tokimeki.forum.message:body.langs", kind: "prop", name: Some("langs") }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.labels", tgt: "tech.tokimeki.forum.message:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.langs", tgt: "tech.tokimeki.forum.message:body.langs:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.replyTo", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "tech.tokimeki.forum.message:body.thread", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1
1
{
2
2
"id": "tech.tokimeki.forum.message",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"channel",
11
11
"text",
12
12
"createdAt"
13
13
],
14
14
"properties": {
15
15
"text": {
16
16
"type": "string",
17
17
"maxLength": 20000,
18
18
"maxGraphemes": 2000
19
19
},
20
20
"embed": {
21
21
"refs": [
22
22
"tech.tokimeki.forum.defs#images"
23
23
],
24
24
"type": "union"
25
25
},
26
+
"langs": {
27
+
"type": "array",
28
+
"items": {
29
+
"type": "string",
30
+
"format": "language"
31
+
},
32
+
"maxLength": 3,
33
+
"description": "Languages of the text (BCP-47)."
34
+
},
26
35
"facets": {
27
36
"type": "array",
28
37
"items": {
29
38
"ref": "app.bsky.richtext.facet",
30
39
"type": "ref"
31
40
}
32
41
},
42
+
"labels": {
43
+
"refs": [
44
+
"com.atproto.label.defs#selfLabels"
45
+
],
46
+
"type": "union",
47
+
"description": "Self-applied labels, e.g. for adult content."
48
+
},
33
49
"thread": {
34
-
"type": "string",
35
-
"format": "at-uri",
36
-
"description": "Space record URI of the tech.tokimeki.forum.thread (required when the channel kind is forum)."
50
+
"ref": "com.atproto.repo.strongRef",
51
+
"type": "ref",
52
+
"description": "The tech.tokimeki.forum.thread this comment belongs to (required when the channel kind is forum). The cid pins the version of the thread the author saw."
37
53
},
38
54
"channel": {
39
55
"type": "string",
40
56
"format": "at-uri",
41
-
"description": "Space record URI of the tech.tokimeki.forum.channel this message belongs to."
57
+
"description": "Space record URI of the tech.tokimeki.forum.channel this message belongs to. A channel is a mutable container, so it is referenced by URI alone."
42
58
},
43
59
"replyTo": {
44
-
"type": "string",
45
-
"format": "at-uri",
46
-
"description": "Space record URI of the message being replied to (inline reply in chat, parent comment in forum)."
60
+
"ref": "com.atproto.repo.strongRef",
61
+
"type": "ref",
62
+
"description": "The tech.tokimeki.forum.message being replied to (inline reply in chat, parent comment in forum). The cid pins the version replied to; the message may be edited afterwards."
47
63
},
48
64
"editedAt": {
49
65
"type": "string",
50
-
"format": "datetime"
66
+
"format": "datetime",
67
+
"description": "Set when the message was edited in place (putRecord with the same rkey)."
51
68
},
52
69
"createdAt": {
53
70
"type": "string",
54
71
"format": "datetime"
55
72
}
56
73
}
57
74
},
58
75
"description": "A message posted into a chat channel, or a comment inside a forum thread. Always written into the author's own repo within the space."
59
76
}
60
77
},
61
78
"$type": "com.atproto.lexicon.schema",
62
79
"lexicon": 1
63
80
}