app.atmobb.forum.profile

lexicons.atmobb.app

Schema Diff

+132 -0

From

CID
bafyreic3jgpvxo3...
Indexed At
2026-07-26 20:07 UTC
View this version

To

CID
bafyreihklfu26fw...
Indexed At
2026-09-13 00:02 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@