to.atpota.poe.overlay

atpota.to

Schema Diff

+30 -3

From

CID
bafyreigv3v3iyr6...
Indexed At
2026-10-22 14:12 UTC
View this version

To

CID
bafyreicms4evmgn...
Indexed At
2026-10-22 15:45 UTC
View this version

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, decoded, 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 +
            "decoded",
162 +
            "mini",
163 +
            "count",
164 +
            "stats",
165 +
            "latest",
166 +
            "both",
167 +
            "status",
168 +
            "vitals",
169 +
            "now",
170 +
            "history",
171 +
            "corner",
172 +
            "side",
173 +
            "pop"
174 +
          ],
175 +
          "maxLength": 32,
176 +
          "type": "string"
150 177
        }
151 178
      },
152 179
      "required": [
153 180
        "kind",
154 181
        "slot",
155 182
        "scale"
156 183
      ],
157 184
      "type": "object"
158 185
    }
159 186
  },
160 187
  "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 188
  "id": "to.atpota.poe.overlay",
162 189
  "lexicon": 1
163 190
}

Compare Other Versions

Lexicon Garden

@