to.atpota.poe.overlay
Schema Diff
+29 -3
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 2 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "to.atpota.poe.overlay#widget.kind", sort: "knownValues", old_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\",\"moon\",\"mark\",\"loader\"]", new_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\",\"moon\",\"mark\",\"loader\",\"tid\",\"flushes\",\"status\",\"music\",\"chat\"]" }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.overlay#widget.style" }
- AddedEdge AddedEdge { src: "to.atpota.poe.overlay#widget", tgt: "to.atpota.poe.overlay#widget.style", kind: "prop", name: Some("style") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "to.atpota.poe.overlay#widget.style" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "to.atpota.poe.overlay#widget.kind", sort: "knownValues", old_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\",\"moon\",\"mark\",\"loader\"]", new_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\",\"moon\",\"mark\",\"loader\",\"tid\",\"flushes\",\"status\",\"music\",\"chat\"]" }
Additional Notes
- Non-breaking: AddedEdge { src: "to.atpota.poe.overlay#widget", tgt: "to.atpota.poe.overlay#widget.style", kind: "prop", name: Some("style") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"key": "any",
6
6
"record": {
7
7
"properties": {
8
8
"alerts": {
9
9
"description": "Poe says weather alerts (storms, apps blowing in).",
10
10
"type": "boolean"
11
11
},
12
12
"chat": {
13
13
"description": "Poe says hello to chatters and answers chat commands.",
14
14
"type": "boolean"
15
15
},
16
16
"createdAt": {
17
17
"format": "datetime",
18
18
"type": "string"
19
19
},
20
20
"follows": {
21
21
"description": "Poe thanks new followers.",
22
22
"type": "boolean"
23
23
},
24
24
"ignore": {
25
25
"description": "Accounts Poe never greets, thanks or answers (bots).",
26
26
"items": {
27
27
"format": "at-identifier",
28
28
"type": "string"
29
29
},
30
30
"maxLength": 50,
31
31
"type": "array"
32
32
},
33
33
"name": {
34
34
"description": "What the streamer calls this layout, on the setup page only.",
35
35
"maxGraphemes": 40,
36
36
"maxLength": 400,
37
37
"type": "string"
38
38
},
39
39
"nap": {
40
40
"description": "Minutes of quiet before Poe naps; 0 never.",
41
41
"maximum": 240,
42
42
"minimum": 0,
43
43
"type": "integer"
44
44
},
45
45
"poe": {
46
46
"ref": "#poe",
47
47
"type": "ref"
48
48
},
49
49
"theme": {
50
50
"knownValues": [
51
51
"light",
52
52
"dark"
53
53
],
54
54
"type": "string"
55
55
},
56
56
"updatedAt": {
57
57
"format": "datetime",
58
58
"type": "string"
59
59
},
60
60
"visitors": {
61
61
"description": "Now and then a butterfly, bird, snail, worm or moth visits Poe.",
62
62
"type": "boolean"
63
63
},
64
64
"volume": {
65
65
"description": "How loud Poe's noises are; 0 is silent.",
66
66
"maximum": 100,
67
67
"minimum": 0,
68
68
"type": "integer"
69
69
},
70
70
"widgets": {
71
-
"description": "The weather widgets on screen, each kind at most once.",
71
+
"description": "The widgets on screen, each kind at most once.",
72
72
"items": {
73
73
"ref": "#widget",
74
74
"type": "ref"
75
75
},
76
-
"maxLength": 12,
76
+
"maxLength": 16,
77
77
"type": "array"
78
78
}
79
79
},
80
80
"required": [
81
81
"poe",
82
82
"widgets",
83
83
"createdAt",
84
84
"updatedAt"
85
85
],
86
86
"type": "object"
87
87
},
88
88
"type": "record"
89
89
},
90
90
"poe": {
91
91
"properties": {
92
92
"scale": {
93
93
"description": "Percent of its usual size.",
94
94
"maximum": 200,
95
95
"minimum": 50,
96
96
"type": "integer"
97
97
},
98
98
"show": {
99
99
"type": "boolean"
100
100
},
101
101
"side": {
102
102
"description": "Which bottom corner Poe sits in; it faces into the screen.",
103
103
"knownValues": [
104
104
"left",
105
105
"right"
106
106
],
107
107
"type": "string"
108
108
}
109
109
},
110
110
"required": [
111
111
"show",
112
112
"side",
113
113
"scale"
114
114
],
115
115
"type": "object"
116
116
},
117
117
"widget": {
118
118
"properties": {
119
119
"kind": {
120
+
"description": "The atmosphere's weather (card to pulse), Anisota's moon, mark and loader, the time as a TID, the streamer's flushes (im.flushing.right.now), status and vitals (is.dame.now, is.dame.state) and teal.fm music, or their stream.place chat.",
120
121
"knownValues": [
121
122
"card",
122
123
"strip",
123
124
"badge",
124
125
"apps",
125
126
"forecast",
126
127
"pulse",
127
128
"moon",
128
129
"mark",
129
-
"loader"
130
+
"loader",
131
+
"tid",
132
+
"flushes",
133
+
"status",
134
+
"music",
135
+
"chat"
130
136
],
131
137
"type": "string"
132
138
},
133
139
"scale": {
134
140
"description": "Percent of its usual size.",
135
141
"maximum": 200,
136
142
"minimum": 50,
137
143
"type": "integer"
138
144
},
139
145
"slot": {
140
146
"description": "Where on screen. Widgets in the same slot stack.",
141
147
"knownValues": [
142
148
"top-left",
143
149
"top-center",
144
150
"top-right",
145
151
"bottom-left",
146
152
"bottom-center",
147
153
"bottom-right"
148
154
],
149
155
"type": "string"
156
+
},
157
+
"style": {
158
+
"description": "How the widget looks, for the kinds with more than one way: tid (ticking, mini), flushes (count, stats, latest), status (both, status, vitals), music (now, history, stats, mini), chat (corner, side, pop). Absent or unknown is the kind's first.",
159
+
"knownValues": [
160
+
"ticking",
161
+
"mini",
162
+
"count",
163
+
"stats",
164
+
"latest",
165
+
"both",
166
+
"status",
167
+
"vitals",
168
+
"now",
169
+
"history",
170
+
"corner",
171
+
"side",
172
+
"pop"
173
+
],
174
+
"maxLength": 32,
175
+
"type": "string"
150
176
}
151
177
},
152
178
"required": [
153
179
"kind",
154
180
"slot",
155
181
"scale"
156
182
],
157
183
"type": "object"
158
184
}
159
185
},
160
186
"description": "How you've set up Poe's stream overlay (atpota.to/overlay): which weather widgets show, where and how big, which side Poe sits on, and what it reacts to. One record per layout: \"self\" is the main one (atpota.to/overlay?streamer=<handle>), and any others are at their own record key, their id in the URL (&layout=<id>; lowercase letters, digits and dashes). The overlay reads it from your repo and follows changes live, so a stream's overlay changes as soon as you save.",
161
187
"id": "to.atpota.poe.overlay",
162
188
"lexicon": 1
163
189
}