net.atchan.richtext.facet
Schema Diff
+94 -1
Compatibility Analysis
Breaking Changes Detected
5 breaking changes, 41 non-breaking changes.
Breaking Changes (5)
- 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#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#font", src: "net.atchan.richtext.facet#font", tgt: "net.atchan.richtext.facet#font.name", kind: "prop", name: Some("name") }
- 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") }
Non-Breaking Changes (41)
- 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#font" }
- AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#font.name" }
- 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:variant5" }
- 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#font" }AddedVertex { vertex_id: "net.atchan.richtext.facet#font.name" }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:variant5" }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#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#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#font", src: "net.atchan.richtext.facet#font", tgt: "net.atchan.richtext.facet#font.name", kind: "prop", name: Some("name") }
- 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
+
},
37
+
"font": {
38
+
"type": "object",
39
+
"required": [
40
+
"name"
41
+
],
42
+
"properties": {
43
+
"name": {
44
+
"type": "string"
45
+
}
46
+
},
47
+
"description": "Facet feature rendering the range in a named font"
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
+
},
9
62
"main": {
10
63
"type": "object",
11
64
"required": [
12
65
"index",
13
66
"features"
14
67
],
15
68
"properties": {
16
69
"index": {
17
70
"ref": "#byteSlice",
18
71
"type": "ref"
19
72
},
20
73
"features": {
21
74
"type": "array",
22
75
"items": {
23
76
"refs": [
24
77
"#bold",
25
78
"#italic",
26
79
"#underline",
27
80
"#strikethrough",
28
-
"#spoiler"
81
+
"#spoiler",
82
+
"#color",
83
+
"#size",
84
+
"#font",
85
+
"#kaomoji",
86
+
"#aa",
87
+
"#code",
88
+
"#pre",
89
+
"#link",
90
+
"#ref"
29
91
],
30
92
"type": "union"
31
93
},
32
94
"minLength": 1
33
95
}
34
96
},
35
97
"description": "A facet defines a range of rich text within a larger string."
36
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
+
},
37
125
"italic": {
38
126
"type": "object",
39
127
"properties": {},
40
128
"description": "Facet feature marking the range as italic."
41
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
+
},
42
135
"spoiler": {
43
136
"type": "object",
44
137
"properties": {},
45
138
"description": "Facet feature marking the range as a spoiler, hidden until the reader interacts with it."
46
139
},
47
140
"byteSlice": {
48
141
"type": "object",
49
142
"required": [
50
143
"byteStart",
51
144
"byteEnd"
52
145
],
53
146
"properties": {
54
147
"byteEnd": {
55
148
"type": "integer",
56
149
"minimum": 0
57
150
},
58
151
"byteStart": {
59
152
"type": "integer",
60
153
"minimum": 0
61
154
}
62
155
},
63
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."
64
157
},
65
158
"underline": {
66
159
"type": "object",
67
160
"properties": {},
68
161
"description": "Facet feature marking the range as underlined."
69
162
},
70
163
"strikethrough": {
71
164
"type": "object",
72
165
"properties": {},
73
166
"description": "Facet feature marking the range as struck through."
74
167
}
75
168
},
76
169
"$type": "com.atproto.lexicon.schema",
77
170
"lexicon": 1
78
171
}