net.atchan.richtext.facet
Schema Diff
+81 -1
Compatibility Analysis
Breaking Changes Detected
6 breaking changes, 38 non-breaking changes.
Breaking Changes (6)
- 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#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#size", src: "net.atchan.richtext.facet#size", tgt: "net.atchan.richtext.facet#size.value", kind: "prop", name: Some("value") }
- 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") }
- 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:variant5", tgt: "net.atchan.richtext.facet#font", kind: "ref", name: None }
Non-Breaking Changes (38)
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#aa" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#code" }
- 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#kaomoji" }
- 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#pre" }
- 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:variant11" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant12" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant13" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant6" }
- 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("#code") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant11", kind: "variant", name: Some("#pre") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant12", kind: "variant", name: Some("#link") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant13", 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("#aa") }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#code", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant11", tgt: "net.atchan.richtext.facet#pre", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant12", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant13", 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#aa", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "net.atchan.richtext.facet#aa" }AddedVertex { vertex_id: "net.atchan.richtext.facet#code" }AddedVertex { vertex_id: "net.atchan.richtext.facet#color" }AddedVertex { vertex_id: "net.atchan.richtext.facet#color.value" }AddedVertex { vertex_id: "net.atchan.richtext.facet#kaomoji" }AddedVertex { vertex_id: "net.atchan.richtext.facet#link" }AddedVertex { vertex_id: "net.atchan.richtext.facet#link.uri" }AddedVertex { vertex_id: "net.atchan.richtext.facet#pre" }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:variant11" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant12" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant13" }AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant6" }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#color", src: "net.atchan.richtext.facet#color", tgt: "net.atchan.richtext.facet#color.value", kind: "prop", name: Some("value") }
- 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#link", src: "net.atchan.richtext.facet#link", tgt: "net.atchan.richtext.facet#link.uri", kind: "prop", name: Some("uri") }
- 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:variant5", tgt: "net.atchan.richtext.facet#font", 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("#code") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant11", kind: "variant", name: Some("#pre") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant12", kind: "variant", name: Some("#link") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant13", 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("#aa") }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#code", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant11", tgt: "net.atchan.richtext.facet#pre", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant12", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "net.atchan.richtext.facet.features:items:variant13", 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#aa", kind: "ref", name: None }
1
1
{
2
2
"id": "net.atchan.richtext.facet",
3
3
"defs": {
4
+
"aa": {
5
+
"type": "object",
6
+
"properties": {},
7
+
"description": "Facet feature rendering the range in a Shift_JIS art font, as a block with whitespace preserved. This is a choice of typeface, not a claim about what the range says: it is the font ASCII art (AA) is drawn against, and only in it does the art keep its intended proportions. No other facet is valid inside it."
8
+
},
9
+
"pre": {
10
+
"type": "object",
11
+
"properties": {},
12
+
"description": "Facet feature marking the range as preformatted text, rendered as a block in a monospace font with whitespace preserved. No other facet is valid inside it."
13
+
},
14
+
"ref": {
15
+
"type": "object",
16
+
"required": [
17
+
"rkey"
18
+
],
19
+
"properties": {
20
+
"rkey": {
21
+
"type": "string",
22
+
"format": "record-key"
23
+
}
24
+
},
25
+
"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."
26
+
},
4
27
"bold": {
5
28
"type": "object",
6
29
"properties": {},
7
30
"description": "Facet feature marking the range as bold."
8
31
},
32
+
"code": {
33
+
"type": "object",
34
+
"properties": {},
35
+
"description": "Facet feature marking the range as inline code, rendered in a monospace font. No other facet is valid inside it."
36
+
},
9
37
"font": {
10
38
"type": "object",
11
39
"required": [
12
40
"name"
13
41
],
14
42
"properties": {
15
43
"name": {
16
44
"type": "string"
17
45
}
18
46
},
19
47
"description": "Facet feature rendering the range in a named font"
20
48
},
49
+
"link": {
50
+
"type": "object",
51
+
"required": [
52
+
"uri"
53
+
],
54
+
"properties": {
55
+
"uri": {
56
+
"type": "string",
57
+
"format": "uri"
58
+
}
59
+
},
60
+
"description": "Facet feature marking the range as a link to a uri"
61
+
},
21
62
"main": {
22
63
"type": "object",
23
64
"required": [
24
65
"index",
25
66
"features"
26
67
],
27
68
"properties": {
28
69
"index": {
29
70
"ref": "#byteSlice",
30
71
"type": "ref"
31
72
},
32
73
"features": {
33
74
"type": "array",
34
75
"items": {
35
76
"refs": [
36
77
"#bold",
37
78
"#italic",
38
79
"#underline",
39
80
"#strikethrough",
40
81
"#spoiler",
41
-
"#font"
82
+
"#color",
83
+
"#size",
84
+
"#font",
85
+
"#kaomoji",
86
+
"#aa",
87
+
"#code",
88
+
"#pre",
89
+
"#link",
90
+
"#ref"
42
91
],
43
92
"type": "union"
44
93
},
45
94
"minLength": 1
46
95
}
47
96
},
48
97
"description": "A facet defines a range of rich text within a larger string."
49
98
},
99
+
"size": {
100
+
"type": "object",
101
+
"required": [
102
+
"value"
103
+
],
104
+
"properties": {
105
+
"value": {
106
+
"type": "integer",
107
+
"maximum": 5,
108
+
"minimum": 1
109
+
}
110
+
},
111
+
"description": "Facet feature rendering the range at a relative text size from 1 (smallest) to 5 (largest), with 3 being the default."
112
+
},
113
+
"color": {
114
+
"type": "object",
115
+
"required": [
116
+
"value"
117
+
],
118
+
"properties": {
119
+
"value": {
120
+
"type": "string"
121
+
}
122
+
},
123
+
"description": "Facet feature rendering the range in a color, given as a CSS hex color such as \"#ff0000\"."
124
+
},
50
125
"italic": {
51
126
"type": "object",
52
127
"properties": {},
53
128
"description": "Facet feature marking the range as italic."
54
129
},
130
+
"kaomoji": {
131
+
"type": "object",
132
+
"properties": {},
133
+
"description": "Facet feature marking the range as a kaomoji, ideally rendered in a Shift-JIS font."
134
+
},
55
135
"spoiler": {
56
136
"type": "object",
57
137
"properties": {},
58
138
"description": "Facet feature marking the range as a spoiler, hidden until the reader interacts with it."
59
139
},
60
140
"byteSlice": {
61
141
"type": "object",
62
142
"required": [
63
143
"byteStart",
64
144
"byteEnd"
65
145
],
66
146
"properties": {
67
147
"byteEnd": {
68
148
"type": "integer",
69
149
"minimum": 0
70
150
},
71
151
"byteStart": {
72
152
"type": "integer",
73
153
"minimum": 0
74
154
}
75
155
},
76
156
"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."
77
157
},
78
158
"underline": {
79
159
"type": "object",
80
160
"properties": {},
81
161
"description": "Facet feature marking the range as underlined."
82
162
},
83
163
"strikethrough": {
84
164
"type": "object",
85
165
"properties": {},
86
166
"description": "Facet feature marking the range as struck through."
87
167
}
88
168
},
89
169
"$type": "com.atproto.lexicon.schema",
90
170
"lexicon": 1
91
171
}