net.atchan.richtext.facet
Schema Diff
+75 -1
Compatibility Analysis
Breaking Changes Detected
8 breaking changes, 36 non-breaking changes.
Breaking Changes (8)
- 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") }
- 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", 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 (36)
- 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#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: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#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: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", 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("#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",
82
+
"#color",
83
+
"#size",
41
84
"#font",
42
-
"#kaomoji"
85
+
"#kaomoji",
86
+
"#aa",
87
+
"#code",
88
+
"#pre",
89
+
"#link",
90
+
"#ref"
43
91
],
44
92
"type": "union"
45
93
},
46
94
"minLength": 1
47
95
}
48
96
},
49
97
"description": "A facet defines a range of rich text within a larger string."
50
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
+
},
51
125
"italic": {
52
126
"type": "object",
53
127
"properties": {},
54
128
"description": "Facet feature marking the range as italic."
55
129
},
56
130
"kaomoji": {
57
131
"type": "object",
58
132
"properties": {},
59
133
"description": "Facet feature marking the range as a kaomoji, ideally rendered in a Shift-JIS font."
60
134
},
61
135
"spoiler": {
62
136
"type": "object",
63
137
"properties": {},
64
138
"description": "Facet feature marking the range as a spoiler, hidden until the reader interacts with it."
65
139
},
66
140
"byteSlice": {
67
141
"type": "object",
68
142
"required": [
69
143
"byteStart",
70
144
"byteEnd"
71
145
],
72
146
"properties": {
73
147
"byteEnd": {
74
148
"type": "integer",
75
149
"minimum": 0
76
150
},
77
151
"byteStart": {
78
152
"type": "integer",
79
153
"minimum": 0
80
154
}
81
155
},
82
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."
83
157
},
84
158
"underline": {
85
159
"type": "object",
86
160
"properties": {},
87
161
"description": "Facet feature marking the range as underlined."
88
162
},
89
163
"strikethrough": {
90
164
"type": "object",
91
165
"properties": {},
92
166
"description": "Facet feature marking the range as struck through."
93
167
}
94
168
},
95
169
"$type": "com.atproto.lexicon.schema",
96
170
"lexicon": 1
97
171
}