app.atmobb.forum.profile
Schema Diff
+132 -0
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 34 non-breaking changes.
Breaking Changes (4)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.source", kind: "prop", name: Some("source") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.family", kind: "prop", name: Some("family") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.weight", kind: "prop", name: Some("weight") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.style", kind: "prop", name: Some("style") }
Non-Breaking Changes (34)
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#font" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#font.family" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#font.source" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#font.style" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#font.weight" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.featuredThreads" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.featuredThreads:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.layout" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.sidebar" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.welcome" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customCss" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customFonts" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customFonts:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.favicon" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.homepage" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.ogImage" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.ogTheme" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.theme" }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.featuredThreads", kind: "prop", name: Some("featuredThreads") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.layout", kind: "prop", name: Some("layout") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.sidebar", kind: "prop", name: Some("sidebar") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.welcome", kind: "prop", name: Some("welcome") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile#homepage.featuredThreads", tgt: "app.atmobb.forum.profile#homepage.featuredThreads:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.customCss", kind: "prop", name: Some("customCss") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.customFonts", kind: "prop", name: Some("customFonts") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.favicon", kind: "prop", name: Some("favicon") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.homepage", kind: "prop", name: Some("homepage") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.ogImage", kind: "prop", name: Some("ogImage") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.ogTheme", kind: "prop", name: Some("ogTheme") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.theme", kind: "prop", name: Some("theme") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.customFonts", tgt: "app.atmobb.forum.profile:body.customFonts:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.customFonts:items", tgt: "app.atmobb.forum.profile#font", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.homepage", tgt: "app.atmobb.forum.profile#homepage", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.atmobb.forum.profile#font" }AddedVertex { vertex_id: "app.atmobb.forum.profile#font.family" }AddedVertex { vertex_id: "app.atmobb.forum.profile#font.source" }AddedVertex { vertex_id: "app.atmobb.forum.profile#font.style" }AddedVertex { vertex_id: "app.atmobb.forum.profile#font.weight" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.featuredThreads" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.featuredThreads:items" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.layout" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.sidebar" }AddedVertex { vertex_id: "app.atmobb.forum.profile#homepage.welcome" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customCss" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customFonts" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.customFonts:items" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.favicon" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.homepage" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.ogImage" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.ogTheme" }AddedVertex { vertex_id: "app.atmobb.forum.profile:body.theme" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.source", kind: "prop", name: Some("source") }
- Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.family", kind: "prop", name: Some("family") }
- Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.weight", kind: "prop", name: Some("weight") }
- Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.forum.profile#font", src: "app.atmobb.forum.profile#font", tgt: "app.atmobb.forum.profile#font.style", kind: "prop", name: Some("style") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.featuredThreads", kind: "prop", name: Some("featuredThreads") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.layout", kind: "prop", name: Some("layout") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.sidebar", kind: "prop", name: Some("sidebar") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#homepage", tgt: "app.atmobb.forum.profile#homepage.welcome", kind: "prop", name: Some("welcome") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#homepage.featuredThreads", tgt: "app.atmobb.forum.profile#homepage.featuredThreads:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.customCss", kind: "prop", name: Some("customCss") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.customFonts", kind: "prop", name: Some("customFonts") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.favicon", kind: "prop", name: Some("favicon") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.homepage", kind: "prop", name: Some("homepage") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.ogImage", kind: "prop", name: Some("ogImage") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.ogTheme", kind: "prop", name: Some("ogTheme") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body", tgt: "app.atmobb.forum.profile:body.theme", kind: "prop", name: Some("theme") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.customFonts", tgt: "app.atmobb.forum.profile:body.customFonts:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.customFonts:items", tgt: "app.atmobb.forum.profile#font", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.homepage", tgt: "app.atmobb.forum.profile#homepage", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"font": {
5
+
"properties": {
6
+
"family": {
7
+
"maxGraphemes": 64,
8
+
"maxLength": 640,
9
+
"type": "string"
10
+
},
11
+
"source": {
12
+
"accept": [
13
+
"font/woff",
14
+
"font/woff2"
15
+
],
16
+
"maxSize": 2000000,
17
+
"type": "blob"
18
+
},
19
+
"style": {
20
+
"knownValues": [
21
+
"normal",
22
+
"italic"
23
+
],
24
+
"maxLength": 16,
25
+
"type": "string"
26
+
},
27
+
"weight": {
28
+
"maximum": 900,
29
+
"minimum": 100,
30
+
"type": "integer"
31
+
}
32
+
},
33
+
"required": [
34
+
"family",
35
+
"weight",
36
+
"style",
37
+
"source"
38
+
],
39
+
"type": "object"
40
+
},
41
+
"homepage": {
42
+
"properties": {
43
+
"featuredThreads": {
44
+
"items": {
45
+
"format": "at-uri",
46
+
"type": "string"
47
+
},
48
+
"maxLength": 3,
49
+
"type": "array"
50
+
},
51
+
"layout": {
52
+
"knownValues": [
53
+
"boards",
54
+
"latest",
55
+
"categories-latest"
56
+
],
57
+
"maxLength": 32,
58
+
"type": "string"
59
+
},
60
+
"sidebar": {
61
+
"type": "boolean"
62
+
},
63
+
"welcome": {
64
+
"knownValues": [
65
+
"classic",
66
+
"compact",
67
+
"hidden"
68
+
],
69
+
"maxLength": 32,
70
+
"type": "string"
71
+
}
72
+
},
73
+
"type": "object"
74
+
},
4
75
"main": {
5
76
"description": "A forum's identity and configuration. Lives in the forum account's repo; the forum's DID is the forum's identity.",
6
77
"key": "literal:self",
7
78
"record": {
8
79
"properties": {
9
80
"avatar": {
10
81
"accept": [
11
82
"image/png",
12
83
"image/jpeg",
13
84
"image/webp"
14
85
],
15
86
"maxSize": 1000000,
16
87
"type": "blob"
17
88
},
18
89
"banner": {
19
90
"accept": [
20
91
"image/png",
21
92
"image/jpeg",
22
93
"image/webp"
23
94
],
24
95
"maxSize": 2000000,
25
96
"type": "blob"
26
97
},
27
98
"createdAt": {
28
99
"format": "datetime",
29
100
"type": "string"
30
101
},
102
+
"customCss": {
103
+
"description": "Forum-owned CSS applied to public pages. Admin pages deliberately ignore it so a broken stylesheet can always be repaired.",
104
+
"maxLength": 100000,
105
+
"type": "string"
106
+
},
107
+
"customFonts": {
108
+
"description": "Forum-owned webfont faces available to customCss.",
109
+
"items": {
110
+
"ref": "#font",
111
+
"type": "ref"
112
+
},
113
+
"maxLength": 12,
114
+
"type": "array"
115
+
},
31
116
"description": {
32
117
"maxGraphemes": 1000,
33
118
"maxLength": 10000,
34
119
"type": "string"
35
120
},
121
+
"favicon": {
122
+
"accept": [
123
+
"image/png",
124
+
"image/jpeg",
125
+
"image/webp"
126
+
],
127
+
"description": "Forum-owned browser icon.",
128
+
"maxSize": 1000000,
129
+
"type": "blob"
130
+
},
131
+
"homepage": {
132
+
"description": "Optional forum homepage presentation. Absent values retain the classic board index.",
133
+
"ref": "#homepage",
134
+
"type": "ref"
135
+
},
36
136
"links": {
37
137
"items": {
38
138
"format": "uri",
39
139
"type": "string"
40
140
},
41
141
"maxLength": 20,
42
142
"type": "array"
43
143
},
44
144
"name": {
45
145
"maxGraphemes": 100,
46
146
"maxLength": 1000,
47
147
"type": "string"
48
148
},
149
+
"ogImage": {
150
+
"accept": [
151
+
"image/png"
152
+
],
153
+
"description": "Forum-owned 1200 by 630 PNG used as the forum landing page's social preview image.",
154
+
"maxSize": 2000000,
155
+
"type": "blob"
156
+
},
157
+
"ogTheme": {
158
+
"description": "Visual preset used by the generated forum landing page social preview.",
159
+
"knownValues": [
160
+
"classic",
161
+
"midnight",
162
+
"ocean",
163
+
"forest",
164
+
"plum"
165
+
],
166
+
"maxLength": 32,
167
+
"type": "string"
168
+
},
49
169
"ranks": {
50
170
"description": "Post-count rank ladder, ordered ascending by minPosts. Ranks are computed by appviews from indexed post counts.",
51
171
"items": {
52
172
"ref": "#rank",
53
173
"type": "ref"
54
174
},
55
175
"maxLength": 50,
56
176
"type": "array"
57
177
},
58
178
"rules": {
59
179
"items": {
60
180
"refs": [
61
181
"app.atmobb.richtext.block#text",
62
182
"app.atmobb.richtext.block#quote",
63
183
"app.atmobb.richtext.block#code"
64
184
],
65
185
"type": "union"
66
186
},
67
187
"maxLength": 50,
68
188
"type": "array"
189
+
},
190
+
"theme": {
191
+
"description": "Built-in color theme preset. Absent means the classic atmobb skin. Custom CSS loads after the preset and may override it.",
192
+
"knownValues": [
193
+
"classic",
194
+
"sky",
195
+
"bubblegum",
196
+
"midnight",
197
+
"forest"
198
+
],
199
+
"maxLength": 32,
200
+
"type": "string"
69
201
}
70
202
},
71
203
"required": [
72
204
"name"
73
205
],
74
206
"type": "object"
75
207
},
76
208
"type": "record"
77
209
},
78
210
"rank": {
79
211
"properties": {
80
212
"minPosts": {
81
213
"minimum": 0,
82
214
"type": "integer"
83
215
},
84
216
"title": {
85
217
"maxGraphemes": 64,
86
218
"maxLength": 640,
87
219
"type": "string"
88
220
}
89
221
},
90
222
"required": [
91
223
"title",
92
224
"minPosts"
93
225
],
94
226
"type": "object"
95
227
}
96
228
},
97
229
"id": "app.atmobb.forum.profile",
98
230
"lexicon": 1
99
231
}