From
bafyreidopy6t4iy7gqlztpjhdammluldek4aclsnvi24dux2z5eieosaa4
indexed 2026-10-22 15:45 UTC
View this version
To
bafyreieogvxzcwjbjsaj4aotel33nlhpmje2c4y7jsuii3lm2vwp473nga
indexed 2026-11-05 18:52 UTC
View this version
Compatibility
breaking 2 breaking changes, 14 non-breaking changes.
Breaking changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "to.atpota.poe.scene:body.frameWidget", src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.place", kind: "prop", name: Some("place") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "to.atpota.poe.scene:body.frameWidget", src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.kind", kind: "prop", name: Some("kind") }
Non-breaking changes (14)
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene#frame" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frame" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.kind" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.place" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.scale" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.style" }
- AddedVertex AddedVertex { vertex_id: "to.atpota.poe.scene:body.showMark" }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.frame", kind: "prop", name: Some("frame") }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.frameWidget", kind: "prop", name: Some("frameWidget") }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.showMark", kind: "prop", name: Some("showMark") }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body.frame", tgt: "to.atpota.poe.scene#frame", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.scale", kind: "prop", name: Some("scale") }
- AddedEdge AddedEdge { src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.style", kind: "prop", name: Some("style") }
Migration guidance
Added
AddedVertex { vertex_id: "to.atpota.poe.scene#frame" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frame" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.kind" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.place" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.scale" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.frameWidget.style" }AddedVertex { vertex_id: "to.atpota.poe.scene:body.showMark" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "to.atpota.poe.scene:body.frameWidget", src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.place", kind: "prop", name: Some("place") }
- Breaking: RequiredEdgeAdded { vertex_id: "to.atpota.poe.scene:body.frameWidget", src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.kind", kind: "prop", name: Some("kind") }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.frame", kind: "prop", name: Some("frame") }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.frameWidget", kind: "prop", name: Some("frameWidget") }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body", tgt: "to.atpota.poe.scene:body.showMark", kind: "prop", name: Some("showMark") }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body.frame", tgt: "to.atpota.poe.scene#frame", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.scale", kind: "prop", name: Some("scale") }
- Non-breaking: AddedEdge { src: "to.atpota.poe.scene:body.frameWidget", tgt: "to.atpota.poe.scene:body.frameWidget.style", kind: "prop", name: Some("style") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"camera": {55
"description": "The screen share's camera window.",66
"properties": {77
"shape": {88
"knownValues": [99
"rounded",1010
"circle",1111
"wide"1212
],1313
"type": "string"1414
},1515
"side": {1616
"knownValues": [1717
"right",1818
"left",1919
"none"2020
],2121
"type": "string"2222
}2323
},2424
"required": [2525
"side",2626
"shape"2727
],2828
"type": "object"2929
},3030
"countdown": {3131
"description": "The starting screen's countdown: to a time, or a timer that starts when the scene is shown.",3232
"properties": {3333
"at": {3434
"description": "For a clock: when the stream starts.",3535
"format": "datetime",3636
"type": "string"3737
},3838
"minutes": {3939
"description": "For a timer.",4040
"maximum": 120,4141
"minimum": 1,4242
"type": "integer"4343
},4444
"mode": {4545
"knownValues": [4646
"timer",4747
"clock",4848
"none"4949
],5050
"type": "string"5151
}5252
},5353
"required": [5454
"mode"5555
],5656
"type": "object"5757
},5858
"main": {5959
"key": "any",6060
"record": {6161
"properties": {6262
"background": {6363
"description": "The sky behind it all (the screen share's frame colour).",6464
"knownValues": [6565
"day",6666
"night",6767
"garden",6868
"butter"6969
],7070
"type": "string"7171
},7272
"camera": {7373
"ref": "#camera",7474
"type": "ref"7575
},7676
"countdown": {7777
"ref": "#countdown",7878
"type": "ref"7979
},8080
"createdAt": {8181
"format": "datetime",8282
"type": "string"8383
},84
"frame": {85
"ref": "#frame",86
"type": "ref"87
},88
"frameWidget": {89
"properties": {90
"kind": {91
"description": "Which widget, as in to.atpota.poe.overlay.",92
"knownValues": [93
"card",94
"strip",95
"badge",96
"apps",97
"forecast",98
"pulse",99
"moon",100
"mark",101
"loader",102
"tid",103
"flushes",104
"status",105
"music",106
"chat"107
],108
"type": "string"109
},110
"place": {111
"description": "Under the screen, or in the column beside it, under the camera.",112
"knownValues": [113
"below",114
"beside"115
],116
"type": "string"117
},118
"scale": {119
"description": "How much of its tile on the frame it fills, in percent: 100 fills it.",120
"maximum": 100,121
"minimum": 50,122
"type": "integer"123
},124
"style": {125
"description": "How it looks, for a widget with styles, as in to.atpota.poe.overlay.",126
"maxLength": 32,127
"type": "string"128
}129
},130
"required": [131
"kind",132
"place"133
],134
"type": "object"135
},84136
"ground": {85137
"description": "What's along the bottom: a meadow hill with flowers, a strip of grass, soil with sprouts, or nothing.",86138
"knownValues": [87139
"meadow",88140
"grass",89141
"soil",90142
"none"91143
],92144
"type": "string"93145
},94146
"kind": {95147
"description": "Which sort of screen it is (loading: Anisota's loading screen, its brand mark with the moon running through its phases, on black; clock: a waiting screen with the time ticking as an atproto TID). Without it, the record key's kind, or starting.",96148
"knownValues": [97149
"starting",98150
"brb",99151
"ending",100152
"screenshare",101153
"loading",102154
"clock"103155
],104156
"type": "string"105157
},106158
"links": {107159
"description": "Where to find the streamer, on the end screen (\"bsky.app/profile/dame.is\").",108160
"items": {109161
"maxGraphemes": 60,110162
"maxLength": 300,111163
"type": "string"112164
},113165
"maxLength": 4,114166
"type": "array"115167
},116168
"name": {117169
"description": "What the streamer calls this screen (\"coding brb\"), on the setup page only.",118170
"maxGraphemes": 40,119171
"maxLength": 200,120172
"type": "string"121173
},174
"showMark": {175
"description": "Whether the atpotato wordmark shows beside the words (on the panel, and in the screen share's bar). Without it, true.",176
"type": "boolean"177
},122178
"showPoe": {123179
"type": "boolean"124180
},125181
"showWidgets": {126182
"description": "Whether the weather widgets from the overlay's settings show on this scene too.",127183
"type": "boolean"128184
},129185
"subtitle": {130186
"description": "A line under them: what the stream is about.",131187
"maxGraphemes": 200,132188
"maxLength": 1000,133189
"type": "string"134190
},135191
"title": {136192
"description": "The big words (\"starting soon\").",137193
"maxGraphemes": 80,138194
"maxLength": 400,139195
"type": "string"140196
},141197
"updatedAt": {142198
"format": "datetime",143199
"type": "string"144200
}145201
},146202
"required": [147203
"createdAt",148204
"updatedAt"149205
],150206
"type": "object"151207
},152208
"type": "record"153209
}154210
},155211
"description": "One of the full-screen screens of Poe's stream overlay (atpota.to/overlay?scene=<record key>): a countdown before a stream, a be-right-back screen, an end screen, or a frame for sharing a screen with a camera. A streamer can keep as many as they like, one record each; the record key is the screen's id in its URL (lowercase letters, digits and dashes). The ones a streamer starts with are keyed by their kind: \"starting\", \"brb\", \"ending\", \"screenshare\", \"loading\" and \"clock\". The overlay reads it from your repo and follows changes live.",156212
"id": "to.atpota.poe.scene",157213
"lexicon": 1158214
}