net.atchan.richtext.facet

atchan.net

Schema Diff

+18 -0

From

CID
bafyreiadbno5ka4...
Indexed At
2026-07-27 07:13 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 16 non-breaking changes.

Breaking Changes (4)
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant10", 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("#link") }
  • RemovedEdge RemovedEdge { src: "net.atchan.richtext.facet.features:items:variant10", 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#link", kind: "ref", name: None }
Non-Breaking Changes (16)
  • 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#pre" }
  • 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" }
  • 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#code" }
  • AddedVertex { vertex_id: "net.atchan.richtext.facet#pre" }
  • 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" }

Additional Notes

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

Compare Other Versions

Lexicon Garden

@