net.atchan.richtext.facet

atchan.net

Schema Diff

+12 -0

From

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

To

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

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 12 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 (12)
  • 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" }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant10", kind: "variant", name: Some("#pre") }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant11", kind: "variant", name: Some("#link") }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items", tgt: "net.atchan.richtext.facet.features:items:variant12", 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("#code") }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", tgt: "net.atchan.richtext.facet#pre", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant11", tgt: "net.atchan.richtext.facet#link", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant12", 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#code", kind: "ref", name: None }

Migration Guidance

Added Elements

  • 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" }

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

Compare Other Versions

Lexicon Garden

@