app.atmobb.actor.profile
Schema Diff
+33 -0
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
}