net.atchan.richtext.facet

atchan.net

Schema Diff

+6 -0

From

CID
bafyreidd545hwzk...
Indexed At
2026-08-02 23:01 UTC
View this version

To

CID
bafyreigyzjg7i6m...
Indexed At
2026-08-15 17:10 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 12 non-breaking changes.

Breaking Changes (8)
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant10", kind: "variant", name: Some("#pre") }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant11", kind: "variant", name: Some("#link") }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant12", kind: "variant", name: Some("#ref") }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant9", kind: "variant", name: Some("#code") }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#pre", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant11", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant12", tgt: "net.atchan.richtext.facet#ref", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant9", tgt: "net.atchan.richtext.facet#code", kind: "ref", name: None }
Non-Breaking Changes (12)
  • AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet#aa" }
  • AddedVertex AddedVertex { vertex_id: "net.atchan.richtext.facet.features:items:variant13" }
  • 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: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: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.features:items:variant13" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@