app.atmobb.forum.profile

lexicons.atmobb.app

Schema Diff

+201 -1

From

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

To

CID
bafyreifspsdwjy4...
Indexed At
2026-10-07 04:30 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

4 breaking changes, 67 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 (67)
  • 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#membership" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.gatedSince" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.inviteCap" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.inviteDays" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.mode" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.prompt" }
  • 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.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.homepage" }
  • 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" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.profile:body.membership" }
  • 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#membership", tgt: "app.atmobb.forum.profile#membership.gatedSince", kind: "prop", name: Some("gatedSince") }
  • AddedEdge AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.inviteCap", kind: "prop", name: Some("inviteCap") }
  • AddedEdge AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.inviteDays", kind: "prop", name: Some("inviteDays") }
  • AddedEdge AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.mode", kind: "prop", name: Some("mode") }
  • AddedEdge AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.prompt", kind: "prop", name: Some("prompt") }
  • 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.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.homepage", kind: "prop", name: Some("homepage") }
  • 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", tgt: "app.atmobb.forum.profile:body.membership", kind: "prop", name: Some("membership") }
  • 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 }
  • 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 }
  • AddedEdge AddedEdge { src: "app.atmobb.forum.profile:body.membership", tgt: "app.atmobb.forum.profile#membership", 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#membership" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.gatedSince" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.inviteCap" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.inviteDays" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.mode" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile#membership.prompt" }
  • 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.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.homepage" }
  • 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" }
  • AddedVertex { vertex_id: "app.atmobb.forum.profile:body.membership" }
  • 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#membership", tgt: "app.atmobb.forum.profile#membership.gatedSince", kind: "prop", name: Some("gatedSince") }
  • Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.inviteCap", kind: "prop", name: Some("inviteCap") }
  • Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.inviteDays", kind: "prop", name: Some("inviteDays") }
  • Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.mode", kind: "prop", name: Some("mode") }
  • Non-breaking: AddedEdge { src: "app.atmobb.forum.profile#membership", tgt: "app.atmobb.forum.profile#membership.prompt", kind: "prop", name: Some("prompt") }
  • 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.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.homepage", kind: "prop", name: Some("homepage") }
  • 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", tgt: "app.atmobb.forum.profile:body.membership", kind: "prop", name: Some("membership") }
  • 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 }
  • 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 }
  • Non-breaking: AddedEdge { src: "app.atmobb.forum.profile:body.membership", tgt: "app.atmobb.forum.profile#membership", 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 +
          "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 +
          },
143 +
          "homepage": {
144 +
            "description": "Optional forum homepage presentation. Absent values retain the classic board index.",
145 +
            "ref": "#homepage",
146 +
            "type": "ref"
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 +
          },
36 161
          "links": {
37 162
            "items": {
38 163
              "format": "uri",
39 164
              "type": "string"
40 165
            },
41 166
            "maxLength": 20,
42 167
            "type": "array"
43 168
          },
169 +
          "membership": {
170 +
            "description": "How people join. Absent means open: declaring membership is joining.",
171 +
            "ref": "#membership",
172 +
            "type": "ref"
173 +
          },
44 174
          "name": {
45 175
            "maxGraphemes": 100,
46 176
            "maxLength": 1000,
47 177
            "type": "string"
48 178
          },
179 +
          "ogImage": {
180 +
            "accept": [
181 +
              "image/png"
182 +
            ],
183 +
            "description": "Forum-owned 1200 by 630 PNG used as the forum landing page's social preview image.",
184 +
            "maxSize": 2000000,
185 +
            "type": "blob"
186 +
          },
187 +
          "ogTheme": {
188 +
            "description": "Visual preset used by the generated forum landing page social preview.",
189 +
            "knownValues": [
190 +
              "classic",
191 +
              "midnight",
192 +
              "ocean",
193 +
              "forest",
194 +
              "plum"
195 +
            ],
196 +
            "maxLength": 32,
197 +
            "type": "string"
198 +
          },
49 199
          "ranks": {
50 -
            "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.",
51 201
            "items": {
52 202
              "ref": "#rank",
53 203
              "type": "ref"
54 204
            },
55 205
            "maxLength": 50,
56 206
            "type": "array"
57 207
          },
58 208
          "rules": {
59 209
            "items": {
60 210
              "refs": [
61 211
                "app.atmobb.richtext.block#text",
62 212
                "app.atmobb.richtext.block#quote",
63 213
                "app.atmobb.richtext.block#code"
64 214
              ],
65 215
              "type": "union"
66 216
            },
67 217
            "maxLength": 50,
68 218
            "type": "array"
219 +
          },
220 +
          "theme": {
221 +
            "description": "Built-in color theme preset. Absent means the classic atmobb skin. Custom CSS loads after the preset and may override it.",
222 +
            "knownValues": [
223 +
              "classic",
224 +
              "sky",
225 +
              "bubblegum",
226 +
              "midnight",
227 +
              "forest"
228 +
            ],
229 +
            "maxLength": 32,
230 +
            "type": "string"
69 231
          }
70 232
        },
71 233
        "required": [
72 234
          "name"
73 235
        ],
74 236
        "type": "object"
75 237
      },
76 238
      "type": "record"
77 239
    },
240 +
    "membership": {
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.",
242 +
      "properties": {
243 +
        "gatedSince": {
244 +
          "description": "When the forum last entered a gated mode. Posts written while the forum was open are served regardless of membership.",
245 +
          "format": "datetime",
246 +
          "type": "string"
247 +
        },
248 +
        "inviteCap": {
249 +
          "description": "Open invites an ordinary member may hold at once. 0 means only staff mint invites.",
250 +
          "maximum": 100,
251 +
          "minimum": 0,
252 +
          "type": "integer"
253 +
        },
254 +
        "inviteDays": {
255 +
          "description": "Days before an unredeemed invite expires.",
256 +
          "maximum": 365,
257 +
          "minimum": 1,
258 +
          "type": "integer"
259 +
        },
260 +
        "mode": {
261 +
          "knownValues": [
262 +
            "open",
263 +
            "apply",
264 +
            "invite"
265 +
          ],
266 +
          "maxLength": 32,
267 +
          "type": "string"
268 +
        },
269 +
        "prompt": {
270 +
          "description": "The one question shown on the application form in apply mode.",
271 +
          "maxGraphemes": 300,
272 +
          "maxLength": 3000,
273 +
          "type": "string"
274 +
        }
275 +
      },
276 +
      "type": "object"
277 +
    },
78 278
    "rank": {
79 279
      "properties": {
80 280
        "minPosts": {
81 281
          "minimum": 0,
82 282
          "type": "integer"
83 283
        },
84 284
        "title": {
85 285
          "maxGraphemes": 64,
86 286
          "maxLength": 640,
87 287
          "type": "string"
88 288
        }
89 289
      },
90 290
      "required": [
91 291
        "title",
92 292
        "minPosts"
93 293
      ],
94 294
      "type": "object"
95 295
    }
96 296
  },
97 297
  "id": "app.atmobb.forum.profile",
98 298
  "lexicon": 1
99 299
}

Compare Other Versions

Lexicon Garden

@