net.atchan.richtext.facet

atchan.net

Schema Diff

+57 -1

From

CID
bafyreiaxrrcypox...
Indexed At
2026-07-18 17:07 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 24 non-breaking changes.

Breaking Changes (8)
  • 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") }
  • 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") }
  • 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 (24)
  • 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#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: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("#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("#link") }
  • AddedEdge AddedEdge { src: "net.atchan.richtext.facet.features:items:variant10", 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#link", kind: "ref", name: None }

Migration Guidance

Added Elements

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

Compare Other Versions

Lexicon Garden

@