net.atchan.richtext.facet
Schema Diff
+57 -1
Compatibility Analysis
Breaking Changes Detected
8 breaking changes, 24 non-breaking changes.
Breaking Changes (8)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#link", src: "net.atchan.richtext.facet#link", tgt: "net.atchan.richtext.facet#link.uri", kind: "prop", name: Some("uri") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#ref", src: "net.atchan.richtext.facet#ref", tgt: "net.atchan.richtext.facet#ref.rkey", kind: "prop", name: Some("rkey") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#color", src: "net.atchan.richtext.facet#color", tgt: "net.atchan.richtext.facet#color.value", kind: "prop", name: Some("value") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#size", src: "net.atchan.richtext.facet#size", tgt: "net.atchan.richtext.facet#size.value", kind: "prop", name: Some("value") }
- RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant5", kind: "variant", name: Some("#font") }
- RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant6", kind: "variant", name: Some("#kaomoji") }
- RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant5", tgt: "net.atchan.richtext.facet#font", kind: "ref", name: None }
- RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant6", tgt: "net.atchan.richtext.facet#kaomoji", kind: "ref", name: None }
Non-Breaking Changes (24)
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#color" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#color.value" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#link" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#link.uri" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#ref" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#ref.rkey" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#size" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#size.value" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant10" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant7" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant8" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant9" }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant10", kind: "variant", name: Some("#ref") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant5", kind: "variant", name: Some("#color") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant6", kind: "variant", name: Some("#size") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant7", kind: "variant", name: Some("#font") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant8", kind: "variant", name: Some("#kaomoji") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant9", kind: "variant", name: Some("#link") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#ref", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant5", tgt: "net.atchan.richtext.facet#color", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant6", tgt: "net.atchan.richtext.facet#size", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant7", tgt: "net.atchan.richtext.facet#font", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant8", tgt: "net.atchan.richtext.facet#kaomoji", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant9", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "net.atchan.richtext.facet#color" }AddedVertex { vertex_id: "net.atchan.richtext.facet#color.value" }AddedVertex { vertex_id: "net.atchan.richtext.facet#link" }AddedVertex { vertex_id: "net.atchan.richtext.facet#link.uri" }AddedVertex { vertex_id: "net.atchan.richtext.facet#ref" }AddedVertex { vertex_id: "net.atchan.richtext.facet#ref.rkey" }AddedVertex { vertex_id: "net.atchan.richtext.facet#size" }AddedVertex { vertex_id: "net.atchan.richtext.facet#size.value" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant10" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant7" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant8" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant9" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#link", src: "net.atchan.richtext.facet#link", tgt: "net.atchan.richtext.facet#link.uri", kind: "prop", name: Some("uri") }
- Breaking: RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#ref", src: "net.atchan.richtext.facet#ref", tgt: "net.atchan.richtext.facet#ref.rkey", kind: "prop", name: Some("rkey") }
- Breaking: RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#size", src: "net.atchan.richtext.facet#size", tgt: "net.atchan.richtext.facet#size.value", kind: "prop", name: Some("value") }
- Breaking: RequiredEdgeAdded { vertex_id: "net.atchan.richtext.facet#color", src: "net.atchan.richtext.facet#color", tgt: "net.atchan.richtext.facet#color.value", kind: "prop", name: Some("value") }
- Breaking: RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant5", kind: "variant", name: Some("#font") }
- Breaking: RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant6", kind: "variant", name: Some("#kaomoji") }
- Breaking: RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant5", tgt: "net.atchan.richtext.facet#font", kind: "ref", name: None }
- Breaking: RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant6", tgt: "net.atchan.richtext.facet#kaomoji", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant10", kind: "variant", name: Some("#ref") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant5", kind: "variant", name: Some("#color") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant6", kind: "variant", name: Some("#size") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant7", kind: "variant", name: Some("#font") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant8", kind: "variant", name: Some("#kaomoji") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant9", kind: "variant", name: Some("#link") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#ref", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant5", tgt: "net.atchan.richtext.facet#color", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant6", tgt: "net.atchan.richtext.facet#size", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant7", tgt: "net.atchan.richtext.facet#font", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant8", tgt: "net.atchan.richtext.facet#kaomoji", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant9", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
1
1
{
2
2
"id": "net.atchan.richtext.facet",
3
3
"defs": {
4
+
"ref": {
5
+
"type": "object",
6
+
"required": [
7
+
"rkey"
8
+
],
9
+
"properties": {
10
+
"rkey": {
11
+
"type": "string",
12
+
"format": "record-key"
13
+
}
14
+
},
15
+
"description": "Facet feature marking the range as a quote-link to another post, given by its record key. The range covers the \">>rkey\" the author typed."
16
+
},
4
17
"bold": {
5
18
"type": "object",
6
19
"properties": {},
7
20
"description": "Facet feature marking the range as bold."
8
21
},
9
22
"font": {
10
23
"type": "object",
11
24
"required": [
12
25
"name"
13
26
],
14
27
"properties": {
15
28
"name": {
16
29
"type": "string"
17
30
}
18
31
},
19
32
"description": "Facet feature rendering the range in a named font"
20
33
},
34
+
"link": {
35
+
"type": "object",
36
+
"required": [
37
+
"uri"
38
+
],
39
+
"properties": {
40
+
"uri": {
41
+
"type": "string",
42
+
"format": "uri"
43
+
}
44
+
},
45
+
"description": "Facet feature marking the range as a link to a uri"
46
+
},
21
47
"main": {
22
48
"type": "object",
23
49
"required": [
24
50
"index",
25
51
"features"
26
52
],
27
53
"properties": {
28
54
"index": {
29
55
"ref": "#byteSlice",
30
56
"type": "ref"
31
57
},
32
58
"features": {
33
59
"type": "array",
34
60
"items": {
35
61
"refs": [
36
62
"#bold",
37
63
"#italic",
38
64
"#underline",
39
65
"#strikethrough",
40
66
"#spoiler",
67
+
"#color",
68
+
"#size",
41
69
"#font",
42
-
"#kaomoji"
70
+
"#kaomoji",
71
+
"#link",
72
+
"#ref"
43
73
],
44
74
"type": "union"
45
75
},
46
76
"minLength": 1
47
77
}
48
78
},
49
79
"description": "A facet defines a range of rich text within a larger string."
50
80
},
81
+
"size": {
82
+
"type": "object",
83
+
"required": [
84
+
"value"
85
+
],
86
+
"properties": {
87
+
"value": {
88
+
"type": "integer",
89
+
"maximum": 5,
90
+
"minimum": 1
91
+
}
92
+
},
93
+
"description": "Facet feature rendering the range at a relative text size from 1 (smallest) to 5 (largest), with 3 being the default."
94
+
},
95
+
"color": {
96
+
"type": "object",
97
+
"required": [
98
+
"value"
99
+
],
100
+
"properties": {
101
+
"value": {
102
+
"type": "string"
103
+
}
104
+
},
105
+
"description": "Facet feature rendering the range in a color, given as a CSS hex color such as \"#ff0000\"."
106
+
},
51
107
"italic": {
52
108
"type": "object",
53
109
"properties": {},
54
110
"description": "Facet feature marking the range as italic."
55
111
},
56
112
"kaomoji": {
57
113
"type": "object",
58
114
"properties": {},
59
115
"description": "Facet feature marking the range as a kaomoji, ideally rendered in a Shift-JIS font."
60
116
},
61
117
"spoiler": {
62
118
"type": "object",
63
119
"properties": {},
64
120
"description": "Facet feature marking the range as a spoiler, hidden until the reader interacts with it."
65
121
},
66
122
"byteSlice": {
67
123
"type": "object",
68
124
"required": [
69
125
"byteStart",
70
126
"byteEnd"
71
127
],
72
128
"properties": {
73
129
"byteEnd": {
74
130
"type": "integer",
75
131
"minimum": 0
76
132
},
77
133
"byteStart": {
78
134
"type": "integer",
79
135
"minimum": 0
80
136
}
81
137
},
82
138
"description": "Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets."
83
139
},
84
140
"underline": {
85
141
"type": "object",
86
142
"properties": {},
87
143
"description": "Facet feature marking the range as underlined."
88
144
},
89
145
"strikethrough": {
90
146
"type": "object",
91
147
"properties": {},
92
148
"description": "Facet feature marking the range as struck through."
93
149
}
94
150
},
95
151
"$type": "com.atproto.lexicon.schema",
96
152
"lexicon": 1
97
153
}