live.streamface.emoticons.settings

streamface.live

Schema Diff

+40 -0

From

CID
bafyreieecxnzwtt...
Indexed At
2026-10-10 14:26 UTC
View this version

To

CID
bafyreihp6dq4jx5...
Indexed At
2026-10-10 15:38 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 12 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "live.streamface.emoticons.settings#eventMapping", src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.event", kind: "prop", name: Some("event") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "live.streamface.emoticons.settings#eventMapping", src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.commandId", kind: "prop", name: Some("commandId") }
Non-Breaking Changes (12)
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.commandId" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.event" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.text" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings#roles.following" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings:body.eventMappings" }
  • AddedVertex AddedVertex { vertex_id: "live.streamface.emoticons.settings:body.eventMappings:items" }
  • AddedEdge AddedEdge { src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.text", kind: "prop", name: Some("text") }
  • AddedEdge AddedEdge { src: "live.streamface.emoticons.settings#roles", tgt: "live.streamface.emoticons.settings#roles.following", kind: "prop", name: Some("following") }
  • AddedEdge AddedEdge { src: "live.streamface.emoticons.settings:body", tgt: "live.streamface.emoticons.settings:body.eventMappings", kind: "prop", name: Some("eventMappings") }
  • AddedEdge AddedEdge { src: "live.streamface.emoticons.settings:body.eventMappings", tgt: "live.streamface.emoticons.settings:body.eventMappings:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "live.streamface.emoticons.settings:body.eventMappings:items", tgt: "live.streamface.emoticons.settings#eventMapping", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.commandId" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.event" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings#eventMapping.text" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings#roles.following" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings:body.eventMappings" }
  • AddedVertex { vertex_id: "live.streamface.emoticons.settings:body.eventMappings:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "live.streamface.emoticons.settings#eventMapping", src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.event", kind: "prop", name: Some("event") }
  • Breaking: RequiredEdgeAdded { vertex_id: "live.streamface.emoticons.settings#eventMapping", src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.commandId", kind: "prop", name: Some("commandId") }
  • Non-breaking: AddedEdge { src: "live.streamface.emoticons.settings#eventMapping", tgt: "live.streamface.emoticons.settings#eventMapping.text", kind: "prop", name: Some("text") }
  • Non-breaking: AddedEdge { src: "live.streamface.emoticons.settings#roles", tgt: "live.streamface.emoticons.settings#roles.following", kind: "prop", name: Some("following") }
  • Non-breaking: AddedEdge { src: "live.streamface.emoticons.settings:body", tgt: "live.streamface.emoticons.settings:body.eventMappings", kind: "prop", name: Some("eventMappings") }
  • Non-breaking: AddedEdge { src: "live.streamface.emoticons.settings:body.eventMappings", tgt: "live.streamface.emoticons.settings:body.eventMappings:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "live.streamface.emoticons.settings:body.eventMappings:items", tgt: "live.streamface.emoticons.settings#eventMapping", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "allowedUser": {
5 5
      "properties": {
6 6
        "did": {
7 7
          "format": "did",
8 8
          "maxLength": 2048,
9 9
          "type": "string"
10 10
        },
11 11
        "handle": {
12 12
          "maxLength": 253,
13 13
          "type": "string"
14 14
        }
15 15
      },
16 16
      "required": [
17 17
        "did"
18 18
      ],
19 19
      "type": "object"
20 20
    },
21 +
    "eventMapping": {
22 +
      "properties": {
23 +
        "commandId": {
24 +
          "maxLength": 512,
25 +
          "type": "string"
26 +
        },
27 +
        "event": {
28 +
          "enum": [
29 +
            "teleport-arrival",
30 +
            "teleport-canceled",
31 +
            "stream-started",
32 +
            "stream-ended"
33 +
          ],
34 +
          "type": "string"
35 +
        },
36 +
        "text": {
37 +
          "description": "Optional overlay text beneath the event clip.",
38 +
          "maxGraphemes": 500,
39 +
          "maxLength": 2000,
40 +
          "type": "string"
41 +
        }
42 +
      },
43 +
      "required": [
44 +
        "event",
45 +
        "commandId"
46 +
      ],
47 +
      "type": "object"
48 +
    },
21 49
    "main": {
22 50
      "key": "literal:self",
23 51
      "record": {
24 52
        "properties": {
25 53
          "createdAt": {
26 54
            "format": "datetime",
27 55
            "type": "string"
28 56
          },
29 57
          "enabled": {
30 58
            "type": "boolean"
31 59
          },
60 +
          "eventMappings": {
61 +
            "items": {
62 +
              "ref": "#eventMapping",
63 +
              "type": "ref"
64 +
            },
65 +
            "maxLength": 4,
66 +
            "type": "array"
67 +
          },
32 68
          "moderation": {
33 69
            "items": {
34 70
              "ref": "#moderationRule",
35 71
              "type": "ref"
36 72
            },
37 73
            "maxLength": 200,
38 74
            "type": "array"
39 75
          },
40 76
          "roles": {
41 77
            "ref": "#roles",
42 78
            "type": "ref"
43 79
          },
44 80
          "updatedAt": {
45 81
            "format": "datetime",
46 82
            "type": "string"
47 83
          }
48 84
        },
49 85
        "required": [
50 86
          "enabled",
51 87
          "createdAt",
52 88
          "updatedAt"
53 89
        ],
54 90
        "type": "object"
55 91
      },
56 92
      "type": "record"
57 93
    },
58 94
    "moderationRule": {
59 95
      "properties": {
60 96
        "blocked": {
61 97
          "type": "boolean"
62 98
        },
63 99
        "cooldownMilliseconds": {
64 100
          "maximum": 86400000,
65 101
          "minimum": 0,
66 102
          "type": "integer"
67 103
        },
68 104
        "did": {
69 105
          "format": "did",
70 106
          "maxLength": 2048,
71 107
          "type": "string"
72 108
        },
73 109
        "handle": {
74 110
          "maxLength": 253,
75 111
          "type": "string"
76 112
        }
77 113
      },
78 114
      "required": [
79 115
        "did",
80 116
        "blocked",
81 117
        "cooldownMilliseconds"
82 118
      ],
83 119
      "type": "object"
84 120
    },
85 121
    "roles": {
86 122
      "properties": {
87 123
        "followers": {
88 124
          "type": "boolean"
89 125
        },
126 +
        "following": {
127 +
          "description": "Allow accounts followed by the streamer.",
128 +
          "type": "boolean"
129 +
        },
90 130
        "moderators": {
91 131
          "type": "boolean"
92 132
        },
93 133
        "mutuals": {
94 134
          "type": "boolean"
95 135
        },
96 136
        "users": {
97 137
          "items": {
98 138
            "ref": "#allowedUser",
99 139
            "type": "ref"
100 140
          },
101 141
          "maxLength": 200,
102 142
          "type": "array"
103 143
        }
104 144
      },
105 145
      "required": [
106 146
        "followers",
107 147
        "mutuals",
108 148
        "moderators",
109 149
        "users"
110 150
      ],
111 151
      "type": "object"
112 152
    }
113 153
  },
114 154
  "id": "live.streamface.emoticons.settings",
115 155
  "lexicon": 1
116 156
}

Compare Other Versions

Lexicon Garden

@