app.atmobb.actor.profile

lexicons.atmobb.app

Schema Diff

+33 -0

From

CID
bafyreicwmmjwhji...
Indexed At
2026-09-13 23:12 UTC
View this version

To

CID
bafyreieqzibrano...
Indexed At
2026-09-13 23:55 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 8 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#forumTheme", src: "app.atmobb.actor.profile#forumTheme", tgt: "app.atmobb.actor.profile#forumTheme.theme", kind: "prop", name: Some("theme") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#forumTheme", src: "app.atmobb.actor.profile#forumTheme", tgt: "app.atmobb.actor.profile#forumTheme.forum", kind: "prop", name: Some("forum") }
Non-Breaking Changes (8)
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme.forum" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme.theme" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.forumThemes" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.forumThemes:items" }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.forumThemes", kind: "prop", name: Some("forumThemes") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.forumThemes", tgt: "app.atmobb.actor.profile:body.forumThemes:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.forumThemes:items", tgt: "app.atmobb.actor.profile#forumTheme", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme.forum" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumTheme.theme" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.forumThemes" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.forumThemes:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#forumTheme", src: "app.atmobb.actor.profile#forumTheme", tgt: "app.atmobb.actor.profile#forumTheme.theme", kind: "prop", name: Some("theme") }
  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#forumTheme", src: "app.atmobb.actor.profile#forumTheme", tgt: "app.atmobb.actor.profile#forumTheme.forum", kind: "prop", name: Some("forum") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.forumThemes", kind: "prop", name: Some("forumThemes") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.forumThemes", tgt: "app.atmobb.actor.profile:body.forumThemes:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.forumThemes:items", tgt: "app.atmobb.actor.profile#forumTheme", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "avatarBuilder": {
5 5
      "description": "Legacy built avatar as part + colour choices. Kept so existing records stay valid.",
6 6
      "properties": {
7 7
        "accessory": {
8 8
          "ref": "#part",
9 9
          "type": "ref"
10 10
        },
11 11
        "eyebrows": {
12 12
          "ref": "#part",
13 13
          "type": "ref"
14 14
        },
15 15
        "eyes": {
16 16
          "ref": "#part",
17 17
          "type": "ref"
18 18
        },
19 19
        "facialFeature": {
20 20
          "ref": "#part",
21 21
          "type": "ref"
22 22
        },
23 23
        "facialHair": {
24 24
          "ref": "#part",
25 25
          "type": "ref"
26 26
        },
27 27
        "hairBack": {
28 28
          "ref": "#part",
29 29
          "type": "ref"
30 30
        },
31 31
        "hairFront": {
32 32
          "ref": "#part",
33 33
          "type": "ref"
34 34
        },
35 35
        "hat": {
36 36
          "ref": "#part",
37 37
          "type": "ref"
38 38
        },
39 39
        "mouth": {
40 40
          "ref": "#part",
41 41
          "type": "ref"
42 42
        },
43 43
        "neckwear": {
44 44
          "ref": "#garment",
45 45
          "type": "ref"
46 46
        },
47 47
        "nose": {
48 48
          "ref": "#part",
49 49
          "type": "ref"
50 50
        },
51 51
        "skin": {
52 52
          "description": "Skin tone id; drives body, head, nose and facial-feature colouring.",
53 53
          "type": "string"
54 54
        },
55 55
        "top": {
56 56
          "ref": "#garment",
57 57
          "type": "ref"
58 58
        },
59 59
        "v": {
60 60
          "description": "Recipe schema version.",
61 61
          "minimum": 1,
62 62
          "type": "integer"
63 63
        }
64 64
      },
65 65
      "required": [
66 66
        "v",
67 67
        "skin"
68 68
      ],
69 69
      "type": "object"
70 70
    },
71 +
    "forumTheme": {
72 +
      "properties": {
73 +
        "forum": {
74 +
          "format": "did",
75 +
          "type": "string"
76 +
        },
77 +
        "theme": {
78 +
          "knownValues": [
79 +
            "",
80 +
            "classic",
81 +
            "sky",
82 +
            "bubblegum",
83 +
            "midnight",
84 +
            "forest"
85 +
          ],
86 +
          "maxLength": 64,
87 +
          "type": "string"
88 +
        }
89 +
      },
90 +
      "required": [
91 +
        "forum",
92 +
        "theme"
93 +
      ],
94 +
      "type": "object"
95 +
    },
71 96
    "garment": {
72 97
      "description": "A garment choice: which type (e.g. jacket, tie) in which colour.",
73 98
      "properties": {
74 99
        "color": {
75 100
          "type": "string"
76 101
        },
77 102
        "type": {
78 103
          "type": "string"
79 104
        }
80 105
      },
81 106
      "required": [
82 107
        "type",
83 108
        "color"
84 109
      ],
85 110
      "type": "object"
86 111
    },
87 112
    "main": {
88 113
      "description": "A user's atmoBB profile, global across all forums. Lives in the user's repo.",
89 114
      "key": "literal:self",
90 115
      "record": {
91 116
        "properties": {
92 117
          "avatar": {
93 118
            "accept": [
94 119
              "image/png",
95 120
              "image/jpeg",
96 121
              "image/webp",
97 122
              "image/gif"
98 123
            ],
99 124
            "maxSize": 1000000,
100 125
            "type": "blob"
101 126
          },
102 127
          "avatarBuilder": {
103 128
            "description": "Legacy layered-avatar recipe from an earlier builder. atmobb ignores it; clients should read the `avatar` blob.",
104 129
            "ref": "#avatarBuilder",
105 130
            "type": "ref"
106 131
          },
107 132
          "createdAt": {
108 133
            "format": "datetime",
109 134
            "type": "string"
110 135
          },
111 136
          "description": {
112 137
            "description": "Free-text bio, shown on the profile's About panel. Global across forums.",
113 138
            "maxGraphemes": 256,
114 139
            "maxLength": 2560,
115 140
            "type": "string"
116 141
          },
117 142
          "displayName": {
118 143
            "maxGraphemes": 64,
119 144
            "maxLength": 640,
120 145
            "type": "string"
121 146
          },
147 +
          "forumThemes": {
148 +
            "description": "Per-forum personal theme overrides. Omit a forum to use the global theme; an empty theme preserves that forum's own styling.",
149 +
            "items": {
150 +
              "ref": "#forumTheme",
151 +
              "type": "ref"
152 +
            },
153 +
            "type": "array"
154 +
          },
122 155
          "pronouns": {
123 156
            "maxGraphemes": 64,
124 157
            "maxLength": 640,
125 158
            "type": "string"
126 159
          },
127 160
          "signature": {
128 161
            "description": "Rendered under every post, phpBB style. Keep it short; clients may truncate.",
129 162
            "items": {
130 163
              "refs": [
131 164
                "app.atmobb.richtext.block#text",
132 165
                "app.atmobb.richtext.block#quote",
133 166
                "app.atmobb.richtext.block#code",
134 167
                "app.atmobb.richtext.block#image"
135 168
              ],
136 169
              "type": "union"
137 170
            },
138 171
            "maxLength": 3,
139 172
            "type": "array"
140 173
          },
141 174
          "theme": {
142 175
            "description": "Personal color theme across forums. Omit to follow each forum's default styling.",
143 176
            "knownValues": [
144 177
              "classic",
145 178
              "sky",
146 179
              "bubblegum",
147 180
              "midnight",
148 181
              "forest"
149 182
            ],
150 183
            "maxLength": 64,
151 184
            "type": "string"
152 185
          },
153 186
          "title": {
154 187
            "description": "Self-chosen user title, shown under the username where the forum allows it.",
155 188
            "maxGraphemes": 64,
156 189
            "maxLength": 640,
157 190
            "type": "string"
158 191
          },
159 192
          "website": {
160 193
            "format": "uri",
161 194
            "type": "string"
162 195
          }
163 196
        },
164 197
        "type": "object"
165 198
      },
166 199
      "type": "record"
167 200
    },
168 201
    "part": {
169 202
      "description": "A part choice: a shape id and, where the part is colourable, a palette colour id.",
170 203
      "properties": {
171 204
        "color": {
172 205
          "type": "string"
173 206
        },
174 207
        "shape": {
175 208
          "type": "string"
176 209
        }
177 210
      },
178 211
      "required": [
179 212
        "shape"
180 213
      ],
181 214
      "type": "object"
182 215
    }
183 216
  },
184 217
  "id": "app.atmobb.actor.profile",
185 218
  "lexicon": 1
186 219
}

Compare Other Versions

Lexicon Garden

@