full diff

to.atpota.poe.scene

atpota.to +56 −0
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": 1
158214}

Compare other versions