app.atmobb.actor.profile
Schema Diff
+161 -1
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
}