app.atmobb.actor.profile

lexicons.atmobb.app

Schema Diff

+161 -1

From

CID
bafyreibkbgmutkk...
Indexed At
2026-09-14 02:13 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 69 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#panel", src: "app.atmobb.actor.profile#panel", tgt: "app.atmobb.actor.profile#panel.id", kind: "prop", name: Some("id") }
  • ConstraintTightened ConstraintTightened { vertex_id: "app.atmobb.actor.profile#forumProfile.fields:items", sort: "knownValues", old_value: "[\"displayName\",\"description\",\"pronouns\",\"website\",\"signature\",\"avatar\",\"title\",\"notifications\"]", new_value: "[\"displayName\",\"description\",\"pronouns\",\"website\",\"signature\",\"avatar\",\"title\",\"notifications\",\"profileSkin\",\"banner\",\"headline\",\"currently\",\"about\",\"panels\"]" }
Non-Breaking Changes (69)
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#banner" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#banner.pattern" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#banner.swatch" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant1" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant2" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant3" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.banner" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.currently" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.headline" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.panels" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.panels:items" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.profileSkin" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#panel" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#panel.hidden" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile#panel.id" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant0" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant1" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant2" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant3" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.banner" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.currently" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.headline" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.panels" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.panels:items" }
  • AddedVertex AddedVertex { vertex_id: "app.atmobb.actor.profile:body.profileSkin" }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#banner", tgt: "app.atmobb.actor.profile#banner.pattern", kind: "prop", name: Some("pattern") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#banner", tgt: "app.atmobb.actor.profile#banner.swatch", kind: "prop", name: Some("swatch") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.about", kind: "prop", name: Some("about") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.banner", kind: "prop", name: Some("banner") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.currently", kind: "prop", name: Some("currently") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.headline", kind: "prop", name: Some("headline") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.panels", kind: "prop", name: Some("panels") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.profileSkin", kind: "prop", name: Some("profileSkin") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about", tgt: "app.atmobb.actor.profile#forumProfile.about:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant3", kind: "variant", name: Some("app.atmobb.richtext.block#image") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant3", tgt: "app.atmobb.richtext.block#image", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.banner", tgt: "app.atmobb.actor.profile#banner", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.panels", tgt: "app.atmobb.actor.profile#forumProfile.panels:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#forumProfile.panels:items", tgt: "app.atmobb.actor.profile#panel", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile#panel", tgt: "app.atmobb.actor.profile#panel.hidden", kind: "prop", name: Some("hidden") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.about", kind: "prop", name: Some("about") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.banner", kind: "prop", name: Some("banner") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.currently", kind: "prop", name: Some("currently") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.headline", kind: "prop", name: Some("headline") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.panels", kind: "prop", name: Some("panels") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.profileSkin", kind: "prop", name: Some("profileSkin") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about", tgt: "app.atmobb.actor.profile:body.about:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant3", kind: "variant", name: Some("app.atmobb.richtext.block#image") }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant3", tgt: "app.atmobb.richtext.block#image", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.banner", tgt: "app.atmobb.actor.profile#banner", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.panels", tgt: "app.atmobb.actor.profile:body.panels:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.atmobb.actor.profile:body.panels:items", tgt: "app.atmobb.actor.profile#panel", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.atmobb.actor.profile#banner" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#banner.pattern" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#banner.swatch" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant0" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant1" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant2" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.about:items:variant3" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.banner" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.currently" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.headline" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.panels" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.panels:items" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#forumProfile.profileSkin" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#panel" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#panel.hidden" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile#panel.id" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant0" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant1" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant2" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.about:items:variant3" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.banner" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.currently" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.headline" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.panels" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.panels:items" }
  • AddedVertex { vertex_id: "app.atmobb.actor.profile:body.profileSkin" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "app.atmobb.actor.profile#forumProfile.fields:items", sort: "knownValues", old_value: "[\"displayName\",\"description\",\"pronouns\",\"website\",\"signature\",\"avatar\",\"title\",\"notifications\"]", new_value: "[\"displayName\",\"description\",\"pronouns\",\"website\",\"signature\",\"avatar\",\"title\",\"notifications\",\"profileSkin\",\"banner\",\"headline\",\"currently\",\"about\",\"panels\"]" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.actor.profile#panel", src: "app.atmobb.actor.profile#panel", tgt: "app.atmobb.actor.profile#panel.id", kind: "prop", name: Some("id") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#banner", tgt: "app.atmobb.actor.profile#banner.pattern", kind: "prop", name: Some("pattern") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#banner", tgt: "app.atmobb.actor.profile#banner.swatch", kind: "prop", name: Some("swatch") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.about", kind: "prop", name: Some("about") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.banner", kind: "prop", name: Some("banner") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.currently", kind: "prop", name: Some("currently") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.headline", kind: "prop", name: Some("headline") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.panels", kind: "prop", name: Some("panels") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile", tgt: "app.atmobb.actor.profile#forumProfile.profileSkin", kind: "prop", name: Some("profileSkin") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about", tgt: "app.atmobb.actor.profile#forumProfile.about:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items", tgt: "app.atmobb.actor.profile#forumProfile.about:items:variant3", kind: "variant", name: Some("app.atmobb.richtext.block#image") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.about:items:variant3", tgt: "app.atmobb.richtext.block#image", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.banner", tgt: "app.atmobb.actor.profile#banner", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.panels", tgt: "app.atmobb.actor.profile#forumProfile.panels:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#forumProfile.panels:items", tgt: "app.atmobb.actor.profile#panel", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile#panel", tgt: "app.atmobb.actor.profile#panel.hidden", kind: "prop", name: Some("hidden") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.about", kind: "prop", name: Some("about") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.banner", kind: "prop", name: Some("banner") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.currently", kind: "prop", name: Some("currently") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.headline", kind: "prop", name: Some("headline") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.panels", kind: "prop", name: Some("panels") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body", tgt: "app.atmobb.actor.profile:body.profileSkin", kind: "prop", name: Some("profileSkin") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about", tgt: "app.atmobb.actor.profile:body.about:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant0", kind: "variant", name: Some("app.atmobb.richtext.block#text") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant1", kind: "variant", name: Some("app.atmobb.richtext.block#quote") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant2", kind: "variant", name: Some("app.atmobb.richtext.block#code") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items", tgt: "app.atmobb.actor.profile:body.about:items:variant3", kind: "variant", name: Some("app.atmobb.richtext.block#image") }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant0", tgt: "app.atmobb.richtext.block#text", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant1", tgt: "app.atmobb.richtext.block#quote", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant2", tgt: "app.atmobb.richtext.block#code", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.about:items:variant3", tgt: "app.atmobb.richtext.block#image", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.banner", tgt: "app.atmobb.actor.profile#banner", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.panels", tgt: "app.atmobb.actor.profile:body.panels:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.atmobb.actor.profile:body.panels:items", tgt: "app.atmobb.actor.profile#panel", 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 +
    "banner": {
72 +
      "description": "A CSS-drawn banner: a pattern over a color swatch.",
73 +
      "properties": {
74 +
        "pattern": {
75 +
          "knownValues": [
76 +
            "plain",
77 +
            "stars",
78 +
            "scanlines",
79 +
            "checker"
80 +
          ],
81 +
          "maxLength": 32,
82 +
          "type": "string"
83 +
        },
84 +
        "swatch": {
85 +
          "knownValues": [
86 +
            "coral",
87 +
            "rust",
88 +
            "plum",
89 +
            "berry",
90 +
            "navy",
91 +
            "teal",
92 +
            "pine",
93 +
            "slate"
94 +
          ],
95 +
          "maxLength": 32,
96 +
          "type": "string"
97 +
        }
98 +
      },
99 +
      "type": "object"
100 +
    },
71 101
    "forumProfile": {
72 102
      "properties": {
103 +
        "about": {
104 +
          "items": {
105 +
            "refs": [
106 +
              "app.atmobb.richtext.block#text",
107 +
              "app.atmobb.richtext.block#quote",
108 +
              "app.atmobb.richtext.block#code",
109 +
              "app.atmobb.richtext.block#image"
110 +
            ],
111 +
            "type": "union"
112 +
          },
113 +
          "maxLength": 20,
114 +
          "type": "array"
115 +
        },
73 116
        "avatar": {
74 117
          "accept": [
75 118
            "image/png",
76 119
            "image/jpeg",
77 120
            "image/webp",
78 121
            "image/gif"
79 122
          ],
80 123
          "maxSize": 1000000,
81 124
          "type": "blob"
82 125
        },
126 +
        "banner": {
127 +
          "ref": "#banner",
128 +
          "type": "ref"
129 +
        },
130 +
        "currently": {
131 +
          "maxGraphemes": 80,
132 +
          "maxLength": 800,
133 +
          "type": "string"
134 +
        },
83 135
        "description": {
84 136
          "maxGraphemes": 256,
85 137
          "maxLength": 2560,
86 138
          "type": "string"
87 139
        },
88 140
        "displayName": {
89 141
          "maxGraphemes": 64,
90 142
          "maxLength": 640,
91 143
          "type": "string"
92 144
        },
93 145
        "fields": {
94 146
          "description": "Only listed fields override defaults. A listed field with no value explicitly clears it (avatar falls back to Bluesky); remove it from this list to inherit again.",
95 147
          "items": {
96 148
            "knownValues": [
97 149
              "displayName",
98 150
              "description",
99 151
              "pronouns",
100 152
              "website",
101 153
              "signature",
102 154
              "avatar",
103 155
              "title",
104 -
              "notifications"
156 +
              "notifications",
157 +
              "profileSkin",
158 +
              "banner",
159 +
              "headline",
160 +
              "currently",
161 +
              "about",
162 +
              "panels"
105 163
            ],
106 164
            "type": "string"
107 165
          },
108 166
          "type": "array"
109 167
        },
110 168
        "forum": {
111 169
          "format": "did",
112 170
          "type": "string"
113 171
        },
172 +
        "headline": {
173 +
          "maxGraphemes": 80,
174 +
          "maxLength": 800,
175 +
          "type": "string"
176 +
        },
114 177
        "notifications": {
115 178
          "type": "boolean"
116 179
        },
180 +
        "panels": {
181 +
          "items": {
182 +
            "ref": "#panel",
183 +
            "type": "ref"
184 +
          },
185 +
          "maxLength": 32,
186 +
          "type": "array"
187 +
        },
188 +
        "profileSkin": {
189 +
          "knownValues": [
190 +
            "classic",
191 +
            "sky",
192 +
            "bubblegum",
193 +
            "midnight",
194 +
            "forest"
195 +
          ],
196 +
          "maxLength": 64,
197 +
          "type": "string"
198 +
        },
117 199
        "pronouns": {
118 200
          "maxGraphemes": 64,
119 201
          "maxLength": 640,
120 202
          "type": "string"
121 203
        },
122 204
        "signature": {
123 205
          "items": {
124 206
            "refs": [
125 207
              "app.atmobb.richtext.block#text",
126 208
              "app.atmobb.richtext.block#quote",
127 209
              "app.atmobb.richtext.block#code",
128 210
              "app.atmobb.richtext.block#image"
129 211
            ],
130 212
            "type": "union"
131 213
          },
132 214
          "maxLength": 3,
133 215
          "type": "array"
134 216
        },
135 217
        "title": {
136 218
          "maxGraphemes": 64,
137 219
          "maxLength": 640,
138 220
          "type": "string"
139 221
        },
140 222
        "website": {
141 223
          "format": "uri",
142 224
          "type": "string"
143 225
        }
144 226
      },
145 227
      "required": [
146 228
        "forum",
147 229
        "fields"
148 230
      ],
149 231
      "type": "object"
150 232
    },
151 233
    "forumTheme": {
152 234
      "properties": {
153 235
        "forum": {
154 236
          "format": "did",
155 237
          "type": "string"
156 238
        },
157 239
        "theme": {
158 240
          "knownValues": [
159 241
            "",
160 242
            "classic",
161 243
            "sky",
162 244
            "bubblegum",
163 245
            "midnight",
164 246
            "forest"
165 247
          ],
166 248
          "maxLength": 64,
167 249
          "type": "string"
168 250
        }
169 251
      },
170 252
      "required": [
171 253
        "forum",
172 254
        "theme"
173 255
      ],
174 256
      "type": "object"
175 257
    },
176 258
    "garment": {
177 259
      "description": "A garment choice: which type (e.g. jacket, tie) in which colour.",
178 260
      "properties": {
179 261
        "color": {
180 262
          "type": "string"
181 263
        },
182 264
        "type": {
183 265
          "type": "string"
184 266
        }
185 267
      },
186 268
      "required": [
187 269
        "type",
188 270
        "color"
189 271
      ],
190 272
      "type": "object"
191 273
    },
192 274
    "main": {
193 275
      "description": "A user's atmoBB account defaults and per-forum overrides. Lives in the user's repo.",
194 276
      "key": "literal:self",
195 277
      "record": {
196 278
        "properties": {
279 +
          "about": {
280 +
            "description": "Long-form About me on the profile page, separate from the short bio in description.",
281 +
            "items": {
282 +
              "refs": [
283 +
                "app.atmobb.richtext.block#text",
284 +
                "app.atmobb.richtext.block#quote",
285 +
                "app.atmobb.richtext.block#code",
286 +
                "app.atmobb.richtext.block#image"
287 +
              ],
288 +
              "type": "union"
289 +
            },
290 +
            "maxLength": 20,
291 +
            "type": "array"
292 +
          },
197 293
          "avatar": {
198 294
            "accept": [
199 295
              "image/png",
200 296
              "image/jpeg",
201 297
              "image/webp",
202 298
              "image/gif"
203 299
            ],
204 300
            "maxSize": 1000000,
205 301
            "type": "blob"
206 302
          },
207 303
          "avatarBuilder": {
208 304
            "description": "Legacy layered-avatar recipe from an earlier builder. atmobb ignores it; clients should read the `avatar` blob.",
209 305
            "ref": "#avatarBuilder",
210 306
            "type": "ref"
211 307
          },
308 +
          "banner": {
309 +
            "description": "Patterned banner across the top of the profile page.",
310 +
            "ref": "#banner",
311 +
            "type": "ref"
312 +
          },
212 313
          "createdAt": {
213 314
            "format": "datetime",
214 315
            "type": "string"
215 316
          },
317 +
          "currently": {
318 +
            "description": "What the member is up to right now, shown under the headline.",
319 +
            "maxGraphemes": 80,
320 +
            "maxLength": 800,
321 +
            "type": "string"
322 +
          },
216 323
          "description": {
217 324
            "description": "Default free-text bio, shown on the profile's About panel unless overridden for a forum.",
218 325
            "maxGraphemes": 256,
219 326
            "maxLength": 2560,
220 327
            "type": "string"
221 328
          },
222 329
          "displayName": {
223 330
            "maxGraphemes": 64,
224 331
            "maxLength": 640,
225 332
            "type": "string"
226 333
          },
227 334
          "forumProfiles": {
228 335
            "description": "Per-forum overrides for profile fields and notification preferences. Other fields inherit account defaults.",
229 336
            "items": {
230 337
              "ref": "#forumProfile",
231 338
              "type": "ref"
232 339
            },
233 340
            "type": "array"
234 341
          },
235 342
          "forumThemes": {
236 343
            "description": "Per-forum personal theme overrides. Omit a forum to use the global theme; an empty theme preserves that forum's own styling.",
237 344
            "items": {
238 345
              "ref": "#forumTheme",
239 346
              "type": "ref"
240 347
            },
241 348
            "type": "array"
242 349
          },
350 +
          "headline": {
351 +
            "description": "Short line shown under the member's name on their profile page.",
352 +
            "maxGraphemes": 80,
353 +
            "maxLength": 800,
354 +
            "type": "string"
355 +
          },
243 356
          "notifications": {
244 357
            "description": "Whether connected forums may notify this account. Defaults to true; never grants relay permission.",
245 358
            "type": "boolean"
246 359
          },
360 +
          "panels": {
361 +
            "description": "Profile page panels in display order. Panels missing from the list follow in the default order; unknown ids are ignored.",
362 +
            "items": {
363 +
              "ref": "#panel",
364 +
              "type": "ref"
365 +
            },
366 +
            "maxLength": 32,
367 +
            "type": "array"
368 +
          },
369 +
          "profileSkin": {
370 +
            "description": "Color skin visitors see on this member's profile page. Omit to use the forum's look; forums may turn skins off.",
371 +
            "knownValues": [
372 +
              "classic",
373 +
              "sky",
374 +
              "bubblegum",
375 +
              "midnight",
376 +
              "forest"
377 +
            ],
378 +
            "maxLength": 64,
379 +
            "type": "string"
380 +
          },
247 381
          "pronouns": {
248 382
            "maxGraphemes": 64,
249 383
            "maxLength": 640,
250 384
            "type": "string"
251 385
          },
252 386
          "signature": {
253 387
            "description": "Rendered under every post, phpBB style. Keep it short; clients may truncate.",
254 388
            "items": {
255 389
              "refs": [
256 390
                "app.atmobb.richtext.block#text",
257 391
                "app.atmobb.richtext.block#quote",
258 392
                "app.atmobb.richtext.block#code",
259 393
                "app.atmobb.richtext.block#image"
260 394
              ],
261 395
              "type": "union"
262 396
            },
263 397
            "maxLength": 3,
264 398
            "type": "array"
265 399
          },
266 400
          "theme": {
267 401
            "description": "Personal color theme across forums. Omit to follow each forum's default styling.",
268 402
            "knownValues": [
269 403
              "classic",
270 404
              "sky",
271 405
              "bubblegum",
272 406
              "midnight",
273 407
              "forest"
274 408
            ],
275 409
            "maxLength": 64,
276 410
            "type": "string"
277 411
          },
278 412
          "title": {
279 413
            "description": "Self-chosen user title, shown under the username where the forum allows it.",
280 414
            "maxGraphemes": 64,
281 415
            "maxLength": 640,
282 416
            "type": "string"
283 417
          },
284 418
          "website": {
285 419
            "format": "uri",
286 420
            "type": "string"
287 421
          }
288 422
        },
289 423
        "type": "object"
290 424
      },
291 425
      "type": "record"
292 426
    },
427 +
    "panel": {
428 +
      "properties": {
429 +
        "hidden": {
430 +
          "description": "Hidden from visitors. Absent means shown.",
431 +
          "type": "boolean"
432 +
        },
433 +
        "id": {
434 +
          "knownValues": [
435 +
            "about",
436 +
            "pinned",
437 +
            "stamps",
438 +
            "regulars",
439 +
            "activity",
440 +
            "guestbook",
441 +
            "bluesky",
442 +
            "signature"
443 +
          ],
444 +
          "maxLength": 32,
445 +
          "type": "string"
446 +
        }
447 +
      },
448 +
      "required": [
449 +
        "id"
450 +
      ],
451 +
      "type": "object"
452 +
    },
293 453
    "part": {
294 454
      "description": "A part choice: a shape id and, where the part is colourable, a palette colour id.",
295 455
      "properties": {
296 456
        "color": {
297 457
          "type": "string"
298 458
        },
299 459
        "shape": {
300 460
          "type": "string"
301 461
        }
302 462
      },
303 463
      "required": [
304 464
        "shape"
305 465
      ],
306 466
      "type": "object"
307 467
    }
308 468
  },
309 469
  "id": "app.atmobb.actor.profile",
310 470
  "lexicon": 1
311 471
}

Compare Other Versions

Lexicon Garden

@