club.userstyles.alpha.userstyle

userstyles.club

Schema Diff

+21 -2

From

CID
bafyreiagzn46spg...
Indexed At
2026-06-10 01:15 UTC
View this version

To

CID
bafyreigisp2zoyc...
Indexed At
2026-07-27 12:47 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 8 non-breaking changes.

Breaking Changes (1)
  • KindChanged KindChanged { vertex_id: "club.userstyles.alpha.userstyle:body.sourceCode", old_kind: "string", new_kind: "blob" }
Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.homepageUrl" }
  • AddedVertex AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.ignoreUpdateUrl" }
  • AddedVertex AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.license" }
  • AddedVertex AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.upstreamUrl" }
  • AddedEdge AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.homepageUrl", kind: "prop", name: Some("homepageUrl") }
  • AddedEdge AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.ignoreUpdateUrl", kind: "prop", name: Some("ignoreUpdateUrl") }
  • AddedEdge AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.license", kind: "prop", name: Some("license") }
  • AddedEdge AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.upstreamUrl", kind: "prop", name: Some("upstreamUrl") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.homepageUrl" }
  • AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.ignoreUpdateUrl" }
  • AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.license" }
  • AddedVertex { vertex_id: "club.userstyles.alpha.userstyle:body.upstreamUrl" }

Additional Notes

  • Breaking: KindChanged { vertex_id: "club.userstyles.alpha.userstyle:body.sourceCode", old_kind: "string", new_kind: "blob" }
  • Non-breaking: AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.homepageUrl", kind: "prop", name: Some("homepageUrl") }
  • Non-breaking: AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.ignoreUpdateUrl", kind: "prop", name: Some("ignoreUpdateUrl") }
  • Non-breaking: AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.license", kind: "prop", name: Some("license") }
  • Non-breaking: AddedEdge { src: "club.userstyles.alpha.userstyle:body", tgt: "club.userstyles.alpha.userstyle:body.upstreamUrl", kind: "prop", name: Some("upstreamUrl") }
1 1
{
2 2
  "id": "club.userstyles.alpha.userstyle",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "title",
11 11
          "sourceCode",
12 12
          "createdAt"
13 13
        ],
14 14
        "properties": {
15 15
          "title": {
16 16
            "type": "string",
17 17
            "maxGraphemes": 140,
18 18
            "minGraphemes": 1
19 19
          },
20 +
          "license": {
21 +
            "type": "string",
22 +
            "maxLength": 100
23 +
          },
20 24
          "createdAt": {
21 25
            "type": "string",
22 26
            "format": "datetime"
23 27
          },
24 28
          "updatedAt": {
25 29
            "type": "string",
26 30
            "format": "datetime"
27 31
          },
28 32
          "sourceCode": {
29 -
            "type": "string"
33 +
            "type": "blob",
34 +
            "accept": [
35 +
              "text/plain"
36 +
            ],
37 +
            "maxSize": 5000000
30 38
          },
31 39
          "description": {
32 40
            "type": "string",
33 41
            "maxGraphemes": 300
34 42
          },
43 +
          "homepageUrl": {
44 +
            "type": "string",
45 +
            "format": "uri"
46 +
          },
47 +
          "upstreamUrl": {
48 +
            "type": "string",
49 +
            "format": "uri"
50 +
          },
35 51
          "previewImage": {
36 52
            "type": "blob",
37 53
            "accept": [
38 54
              "image/*"
39 55
            ],
40 56
            "maxSize": 1000000
57 +
          },
58 +
          "ignoreUpdateUrl": {
59 +
            "type": "boolean"
41 60
          }
42 61
        }
43 62
      },
44 -
      "description": "Record declaring a userstyle's contents and metadata."
63 +
      "description": "A UserCSS userstyle."
45 64
    }
46 65
  },
47 66
  "$type": "com.atproto.lexicon.schema",
48 67
  "lexicon": 1
49 68
}

Compare Other Versions

Lexicon Garden

@