art.cllctv.actor.profile

cllctv.art

Schema Diff

+19 -21

From

CID
bafyreifvssu2mxd...
Indexed At
2026-08-28 07:51 UTC
View this version

To

CID
bafyreigq63rb7sn...
Indexed At
2026-10-13 13:48 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

6 breaking changes, 5 non-breaking changes.

Breaking Changes (6)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "art.cllctv.actor.profile:body", src: "art.cllctv.actor.profile:body", tgt: "art.cllctv.actor.profile:body.createdAt", kind: "prop", name: Some("createdAt") }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.displayName", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.bannerHash", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.avatarHash", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.description", sort: "maxLength", old_value: "2560", new_value: "256" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.pronouns", sort: "maxLength", old_value: "200", new_value: "20" }
Non-Breaking Changes (5)
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.displayName", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.bannerHash", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.avatarHash", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.description", sort: "maxGraphemes", old_value: "256", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.pronouns", sort: "maxGraphemes", old_value: "20", new_value: "200" }

Migration Guidance

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.avatarHash", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.displayName", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.pronouns", sort: "maxLength", old_value: "200", new_value: "20" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.bannerHash", sort: "maxLength", old_value: "640", new_value: "64" }
  • ConstraintTightened ConstraintTightened { vertex_id: "art.cllctv.actor.profile:body.description", sort: "maxLength", old_value: "2560", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.avatarHash", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.displayName", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.pronouns", sort: "maxGraphemes", old_value: "20", new_value: "200" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.bannerHash", sort: "maxGraphemes", old_value: "64", new_value: "640" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "art.cllctv.actor.profile:body.description", sort: "maxGraphemes", old_value: "256", new_value: "2560" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "art.cllctv.actor.profile:body", src: "art.cllctv.actor.profile:body", tgt: "art.cllctv.actor.profile:body.createdAt", kind: "prop", name: Some("createdAt") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "A declaration of a cllctv.ART account profile.",
6 6
      "key": "literal:self",
7 7
      "record": {
8 8
        "properties": {
9 9
          "avatar": {
10 10
            "accept": [
11 -
              "image/png",
12 -
              "image/jpeg"
11 +
              "image/jpeg",
12 +
              "image/png"
13 13
            ],
14 -
            "description": "Small image to be displayed next to posts from account. AKA, 'profile picture'",
15 -
            "maxSize": 1000000,
14 +
            "maxSize": 2000000,
16 15
            "type": "blob"
17 16
          },
18 17
          "avatarHash": {
19 -
            "maxGraphemes": 64,
20 -
            "maxLength": 640,
18 +
            "maxGraphemes": 640,
19 +
            "maxLength": 64,
21 20
            "type": "string"
22 21
          },
23 22
          "banner": {
24 23
            "accept": [
25 -
              "image/png",
26 -
              "image/jpeg"
24 +
              "image/jpeg",
25 +
              "image/png"
27 26
            ],
28 -
            "description": "Larger horizontal image to display behind profile view.",
29 -
            "maxSize": 1000000,
27 +
            "maxSize": 2000000,
30 28
            "type": "blob"
31 29
          },
32 30
          "bannerHash": {
33 -
            "maxGraphemes": 64,
34 -
            "maxLength": 640,
31 +
            "maxGraphemes": 640,
32 +
            "maxLength": 64,
35 33
            "type": "string"
36 34
          },
37 35
          "createdAt": {
38 36
            "format": "datetime",
39 37
            "type": "string"
40 38
          },
41 39
          "description": {
42 -
            "description": "Free-form profile description text.",
43 -
            "maxGraphemes": 256,
44 -
            "maxLength": 2560,
40 +
            "maxGraphemes": 2560,
41 +
            "maxLength": 256,
45 42
            "type": "string"
46 43
          },
47 44
          "displayName": {
48 -
            "maxGraphemes": 64,
49 -
            "maxLength": 640,
45 +
            "maxGraphemes": 640,
46 +
            "maxLength": 64,
50 47
            "type": "string"
51 48
          },
52 49
          "labels": {
53 -
            "description": "Self-label values, specific to the cllctv.ART application, on the overall account.",
54 50
            "refs": [
55 51
              "com.atproto.label.defs#selfLabels"
56 52
            ],
57 53
            "type": "union"
58 54
          },
59 55
          "pronouns": {
60 -
            "description": "Free-form pronouns text.",
61 -
            "maxGraphemes": 20,
62 -
            "maxLength": 200,
56 +
            "maxGraphemes": 200,
57 +
            "maxLength": 20,
63 58
            "type": "string"
64 59
          },
65 60
          "theme": {
66 61
            "ref": "#theme",
67 62
            "type": "ref"
68 63
          },
69 64
          "website": {
70 65
            "format": "uri",
71 66
            "type": "string"
72 67
          }
73 68
        },
69 +
        "required": [
70 +
          "createdAt"
71 +
        ],
74 72
        "type": "object"
75 73
      },
76 74
      "type": "record"
77 75
    },
78 76
    "theme": {
79 77
      "properties": {
80 78
        "signature": {
81 79
          "refs": [
82 80
            "art.cllctv.theme.color#hsl"
83 81
          ],
84 82
          "type": "union"
85 83
        }
86 84
      },
87 85
      "required": [
88 86
        "signature"
89 87
      ],
90 88
      "type": "object"
91 89
    }
92 90
  },
93 91
  "id": "art.cllctv.actor.profile",
94 92
  "lexicon": 1
95 93
}

Compare Other Versions

Lexicon Garden

@