to.atpota.poe.overlay

atpota.to

Schema Diff

+40 -5

From

CID
bafyreierev7kche...
Indexed At
2026-10-21 23:54 UTC
View this version

To

CID
bafyreiaeiiwlg5l...
Indexed At
2026-10-22 15:50 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 4 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\"]", new_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\",\"moon\",\"mark\",\"loader\",\"tid\",\"flushes\",\"status\",\"music\",\"chat\"]" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "to.atpota.poe.overlay#widget.style" }
  • AddedVertex AddedVertex { vertex_id: "to.atpota.poe.overlay:body.name" }
  • AddedEdge AddedEdge { src: "to.atpota.poe.overlay#widget", tgt: "to.atpota.poe.overlay#widget.style", kind: "prop", name: Some("style") }
  • AddedEdge AddedEdge { src: "to.atpota.poe.overlay:body", tgt: "to.atpota.poe.overlay:body.name", kind: "prop", name: Some("name") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "to.atpota.poe.overlay#widget.style" }
  • AddedVertex { vertex_id: "to.atpota.poe.overlay:body.name" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "to.atpota.poe.overlay#widget.kind", sort: "knownValues", old_value: "[\"card\",\"strip\",\"badge\",\"apps\",\"forecast\",\"pulse\"]", 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") }
  • Non-breaking: AddedEdge { src: "to.atpota.poe.overlay:body", tgt: "to.atpota.poe.overlay:body.name", kind: "prop", name: Some("name") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 -
      "key": "literal:self",
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 +
          "name": {
34 +
            "description": "What the streamer calls this layout, on the setup page only.",
35 +
            "maxGraphemes": 40,
36 +
            "maxLength": 400,
37 +
            "type": "string"
38 +
          },
33 39
          "nap": {
34 40
            "description": "Minutes of quiet before Poe naps; 0 never.",
35 41
            "maximum": 240,
36 42
            "minimum": 0,
37 43
            "type": "integer"
38 44
          },
39 45
          "poe": {
40 46
            "ref": "#poe",
41 47
            "type": "ref"
42 48
          },
43 49
          "theme": {
44 50
            "knownValues": [
45 51
              "light",
46 52
              "dark"
47 53
            ],
48 54
            "type": "string"
49 55
          },
50 56
          "updatedAt": {
51 57
            "format": "datetime",
52 58
            "type": "string"
53 59
          },
54 60
          "visitors": {
55 61
            "description": "Now and then a butterfly, bird, snail, worm or moth visits Poe.",
56 62
            "type": "boolean"
57 63
          },
58 64
          "volume": {
59 65
            "description": "How loud Poe's noises are; 0 is silent.",
60 66
            "maximum": 100,
61 67
            "minimum": 0,
62 68
            "type": "integer"
63 69
          },
64 70
          "widgets": {
65 -
            "description": "The weather widgets on screen, each kind at most once.",
71 +
            "description": "The widgets on screen, each kind at most once.",
66 72
            "items": {
67 73
              "ref": "#widget",
68 74
              "type": "ref"
69 75
            },
70 -
            "maxLength": 12,
76 +
            "maxLength": 16,
71 77
            "type": "array"
72 78
          }
73 79
        },
74 80
        "required": [
75 81
          "poe",
76 82
          "widgets",
77 83
          "createdAt",
78 84
          "updatedAt"
79 85
        ],
80 86
        "type": "object"
81 87
      },
82 88
      "type": "record"
83 89
    },
84 90
    "poe": {
85 91
      "properties": {
86 92
        "scale": {
87 93
          "description": "Percent of its usual size.",
88 94
          "maximum": 200,
89 95
          "minimum": 50,
90 96
          "type": "integer"
91 97
        },
92 98
        "show": {
93 99
          "type": "boolean"
94 100
        },
95 101
        "side": {
96 102
          "description": "Which bottom corner Poe sits in; it faces into the screen.",
97 103
          "knownValues": [
98 104
            "left",
99 105
            "right"
100 106
          ],
101 107
          "type": "string"
102 108
        }
103 109
      },
104 110
      "required": [
105 111
        "show",
106 112
        "side",
107 113
        "scale"
108 114
      ],
109 115
      "type": "object"
110 116
    },
111 117
    "widget": {
112 118
      "properties": {
113 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.",
114 121
          "knownValues": [
115 122
            "card",
116 123
            "strip",
117 124
            "badge",
118 125
            "apps",
119 126
            "forecast",
120 -
            "pulse"
127 +
            "pulse",
128 +
            "moon",
129 +
            "mark",
130 +
            "loader",
131 +
            "tid",
132 +
            "flushes",
133 +
            "status",
134 +
            "music",
135 +
            "chat"
121 136
          ],
122 137
          "type": "string"
123 138
        },
124 139
        "scale": {
125 140
          "description": "Percent of its usual size.",
126 141
          "maximum": 200,
127 142
          "minimum": 50,
128 143
          "type": "integer"
129 144
        },
130 145
        "slot": {
131 146
          "description": "Where on screen. Widgets in the same slot stack.",
132 147
          "knownValues": [
133 148
            "top-left",
134 149
            "top-center",
135 150
            "top-right",
136 151
            "bottom-left",
137 152
            "bottom-center",
138 153
            "bottom-right"
139 154
          ],
140 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"
141 176
        }
142 177
      },
143 178
      "required": [
144 179
        "kind",
145 180
        "slot",
146 181
        "scale"
147 182
      ],
148 183
      "type": "object"
149 184
    }
150 185
  },
151 -
  "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 account, at the record key \"self\". The overlay reads it from your repo and follows changes live, so a stream's overlay changes as soon as you save.",
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.",
152 187
  "id": "to.atpota.poe.overlay",
153 188
  "lexicon": 1
154 189
}

Compare Other Versions

Lexicon Garden

@