app.atmobb.forum.profile
Schema Diff
+26 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 19 non-breaking changes.
Non-Breaking Changes (19)
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideCredit" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideDefaultStamps" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideProfileSkins" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant0" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant1" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant2" }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideCredit", kind: "prop", name: Some("hideCredit") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideDefaultStamps", kind: "prop", name: Some("hideDefaultStamps") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideProfileSkins", kind: "prop", name: Some("hideProfileSkins") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.intro", kind: "prop", name: Some("intro") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro", tgt: "app.atmobb.forum.profile:body.intro:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideCredit" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideDefaultStamps" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.hideProfileSkins" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant0" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant1" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.intro:items:variant2" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideCredit", kind: "prop", name: Some("hideCredit") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideDefaultStamps", kind: "prop", name: Some("hideDefaultStamps") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.hideProfileSkins", kind: "prop", name: Some("hideProfileSkins") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.intro", kind: "prop", name: Some("intro") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro", tgt: "app.atmobb.forum.profile:body.intro:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items", tgt: "app.atmobb.forum.profile:body.intro:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.intro:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"font": {
5
5
"properties": {
6
6
"family": {
7
7
"maxGraphemes": 64,
8
8
"maxLength": 640,
9
9
"type": "string"
10
10
},
11
11
"source": {
12
12
"accept": [
13
13
"font/woff",
14
14
"font/woff2"
15
15
],
16
16
"maxSize": 2000000,
17
17
"type": "blob"
18
18
},
19
19
"style": {
20
20
"knownValues": [
21
21
"normal",
22
22
"italic"
23
23
],
24
24
"maxLength": 16,
25
25
"type": "string"
26
26
},
27
27
"weight": {
28
28
"maximum": 900,
29
29
"minimum": 100,
30
30
"type": "integer"
31
31
}
32
32
},
33
33
"required": [
34
34
"family",
35
35
"weight",
36
36
"style",
37
37
"source"
38
38
],
39
39
"type": "object"
40
40
},
41
41
"homepage": {
42
42
"properties": {
43
43
"featuredThreads": {
44
44
"items": {
45
45
"format": "at-uri",
46
46
"type": "string"
47
47
},
48
48
"maxLength": 3,
49
49
"type": "array"
50
50
},
51
51
"layout": {
52
52
"knownValues": [
53
53
"boards",
54
54
"latest",
55
55
"categories-latest"
56
56
],
57
57
"maxLength": 32,
58
58
"type": "string"
59
59
},
60
60
"sidebar": {
61
61
"type": "boolean"
62
62
},
63
63
"welcome": {
64
64
"knownValues": [
65
65
"classic",
66
66
"compact",
67
67
"hidden"
68
68
],
69
69
"maxLength": 32,
70
70
"type": "string"
71
71
}
72
72
},
73
73
"type": "object"
74
74
},
75
75
"main": {
76
76
"description": "A forum's identity and configuration. Lives in the forum account's repo; the forum's DID is the forum's identity.",
77
77
"key": "literal:self",
78
78
"record": {
79
79
"properties": {
80
80
"avatar": {
81
81
"accept": [
82
82
"image/png",
83
83
"image/jpeg",
84
84
"image/webp"
85
85
],
86
86
"maxSize": 1000000,
87
87
"type": "blob"
88
88
},
89
89
"banner": {
90
90
"accept": [
91
91
"image/png",
92
92
"image/jpeg",
93
93
"image/webp"
94
94
],
95
95
"maxSize": 2000000,
96
96
"type": "blob"
97
97
},
98
98
"createdAt": {
99
99
"format": "datetime",
100
100
"type": "string"
101
101
},
102
102
"customCss": {
103
103
"description": "Forum-owned CSS applied to public pages. Admin pages deliberately ignore it so a broken stylesheet can always be repaired.",
104
104
"maxLength": 100000,
105
105
"type": "string"
106
106
},
107
107
"customFonts": {
108
108
"description": "Forum-owned webfont faces available to customCss.",
109
109
"items": {
110
110
"ref": "#font",
111
111
"type": "ref"
112
112
},
113
113
"maxLength": 12,
114
114
"type": "array"
115
115
},
116
116
"description": {
117
117
"maxGraphemes": 1000,
118
118
"maxLength": 10000,
119
119
"type": "string"
120
120
},
121
121
"favicon": {
122
122
"accept": [
123
123
"image/png",
124
124
"image/jpeg",
125
125
"image/webp"
126
126
],
127
127
"description": "Forum-owned browser icon.",
128
128
"maxSize": 1000000,
129
129
"type": "blob"
130
130
},
131
+
"hideCredit": {
132
+
"description": "Hide the 'powered by atmobb' badge in the page footer. Absent means shown.",
133
+
"type": "boolean"
134
+
},
135
+
"hideDefaultStamps": {
136
+
"description": "Hide the board and arrival default stamps on member rails. The 'here since' line always shows. Absent means shown.",
137
+
"type": "boolean"
138
+
},
139
+
"hideProfileSkins": {
140
+
"description": "Show every member profile page in the forum's own colors, ignoring members' profile skins. Banner patterns and headlines still show. Absent means skins show.",
141
+
"type": "boolean"
142
+
},
131
143
"homepage": {
132
144
"description": "Optional forum homepage presentation. Absent values retain the classic board index.",
133
145
"ref": "#homepage",
134
146
"type": "ref"
135
147
},
148
+
"intro": {
149
+
"description": "Rich welcome shown in the home page hero under the description. Absent means the hero shows the name and description only.",
150
+
"items": {
151
+
"refs": [
152
+
"app.atmobb.richtext.block#text",
153
+
"app.atmobb.richtext.block#quote",
154
+
"app.atmobb.richtext.block#code"
155
+
],
156
+
"type": "union"
157
+
},
158
+
"maxLength": 50,
159
+
"type": "array"
160
+
},
136
161
"links": {
137
162
"items": {
138
163
"format": "uri",
139
164
"type": "string"
140
165
},
141
166
"maxLength": 20,
142
167
"type": "array"
143
168
},
144
169
"membership": {
145
170
"description": "How people join. Absent means open: declaring membership is joining.",
146
171
"ref": "#membership",
147
172
"type": "ref"
148
173
},
149
174
"name": {
150
175
"maxGraphemes": 100,
151
176
"maxLength": 1000,
152
177
"type": "string"
153
178
},
154
179
"ogImage": {
155
180
"accept": [
156
181
"image/png"
157
182
],
158
183
"description": "Forum-owned 1200 by 630 PNG used as the forum landing page's social preview image.",
159
184
"maxSize": 2000000,
160
185
"type": "blob"
161
186
},
162
187
"ogTheme": {
163
188
"description": "Visual preset used by the generated forum landing page social preview.",
164
189
"knownValues": [
165
190
"classic",
166
191
"midnight",
167
192
"ocean",
168
193
"forest",
169
194
"plum"
170
195
],
171
196
"maxLength": 32,
172
197
"type": "string"
173
198
},
174
199
"ranks": {
175
-
"description": "Post-count rank ladder, ordered ascending by minPosts. Ranks are computed by appviews from indexed post counts.",
200
+
"description": "Deprecated and no longer rendered: post-count ranks gave way to stamps (app.atmobb.forum.stamp). Kept so older records still validate.",
176
201
"items": {
177
202
"ref": "#rank",
178
203
"type": "ref"
179
204
},
180
205
"maxLength": 50,
181
206
"type": "array"
182
207
},
183
208
"rules": {
184
209
"items": {
185
210
"refs": [
186
211
"app.atmobb.richtext.block#text",
187
212
"app.atmobb.richtext.block#quote",
188
213
"app.atmobb.richtext.block#code"
189
214
],
190
215
"type": "union"
191
216
},
192
217
"maxLength": 50,
193
218
"type": "array"
194
219
},
195
220
"theme": {
196
221
"description": "Built-in color theme preset. Absent means the classic atmobb skin. Custom CSS loads after the preset and may override it.",
197
222
"knownValues": [
198
223
"classic",
199
224
"sky",
200
225
"bubblegum",
201
226
"midnight",
202
227
"forest"
203
228
],
204
229
"maxLength": 32,
205
230
"type": "string"
206
231
}
207
232
},
208
233
"required": [
209
234
"name"
210
235
],
211
236
"type": "object"
212
237
},
213
238
"type": "record"
214
239
},
215
240
"membership": {
216
241
"description": "Join policy for a forum. In the apply and invite modes only accounts the forum has accepted (an acceptMember moderation action) may post; reading stays public.",
217
242
"properties": {
218
243
"gatedSince": {
219
244
"description": "When the forum last entered a gated mode. Posts written while the forum was open are served regardless of membership.",
220
245
"format": "datetime",
221
246
"type": "string"
222
247
},
223
248
"inviteCap": {
224
249
"description": "Open invites an ordinary member may hold at once. 0 means only staff mint invites.",
225
250
"maximum": 100,
226
251
"minimum": 0,
227
252
"type": "integer"
228
253
},
229
254
"inviteDays": {
230
255
"description": "Days before an unredeemed invite expires.",
231
256
"maximum": 365,
232
257
"minimum": 1,
233
258
"type": "integer"
234
259
},
235
260
"mode": {
236
261
"knownValues": [
237
262
"open",
238
263
"apply",
239
264
"invite"
240
265
],
241
266
"maxLength": 32,
242
267
"type": "string"
243
268
},
244
269
"prompt": {
245
270
"description": "The one question shown on the application form in apply mode.",
246
271
"maxGraphemes": 300,
247
272
"maxLength": 3000,
248
273
"type": "string"
249
274
}
250
275
},
251
276
"type": "object"
252
277
},
253
278
"rank": {
254
279
"properties": {
255
280
"minPosts": {
256
281
"minimum": 0,
257
282
"type": "integer"
258
283
},
259
284
"title": {
260
285
"maxGraphemes": 64,
261
286
"maxLength": 640,
262
287
"type": "string"
263
288
}
264
289
},
265
290
"required": [
266
291
"title",
267
292
"minPosts"
268
293
],
269
294
"type": "object"
270
295
}
271
296
},
272
297
"id": "app.atmobb.forum.profile",
273
298
"lexicon": 1
274
299
}