com.linxtape.tape

linxtape.com

Schema Diff

+4 -14

From

CID
bafyreiaxrk5bmdp...
Indexed At
2026-10-08 03:52 UTC
View this version

To

CID
bafyreigk65ar2ay...
Indexed At
2026-10-09 00:11 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 0 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "com.linxtape.tape:body", src: "com.linxtape.tape:body", tgt: "com.linxtape.tape:body.kind", kind: "prop", name: Some("kind") }
  • RemovedVertex RemovedVertex { vertex_id: "com.linxtape.tape:body.kind" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "com.linxtape.tape:body.kind" }

Additional Notes

  • Breaking: RequiredEdgeRemoved { vertex_id: "com.linxtape.tape:body", src: "com.linxtape.tape:body", tgt: "com.linxtape.tape:body.kind", kind: "prop", name: Some("kind") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "liner": {
5 5
      "properties": {
6 6
        "note": {
7 7
          "maxGraphemes": 280,
8 8
          "maxLength": 2800,
9 9
          "type": "string"
10 10
        },
11 11
        "signOff": {
12 12
          "maxGraphemes": 60,
13 13
          "maxLength": 600,
14 14
          "type": "string"
15 15
        },
16 16
        "tips": {
17 17
          "items": {
18 18
            "maxGraphemes": 140,
19 19
            "maxLength": 1400,
20 20
            "type": "string"
21 21
          },
22 22
          "maxLength": 3,
23 23
          "type": "array"
24 24
        }
25 25
      },
26 26
      "type": "object"
27 27
    },
28 28
    "main": {
29 29
      "key": "tid",
30 30
      "record": {
31 31
        "properties": {
32 32
          "afterThey": {
33 -
            "description": "Course: what they'll be able to do after.",
33 +
            "description": "Optional goal: what they'll get from it.",
34 34
            "maxGraphemes": 200,
35 35
            "maxLength": 2000,
36 36
            "type": "string"
37 37
          },
38 38
          "createdAt": {
39 39
            "format": "datetime",
40 40
            "type": "string"
41 41
          },
42 42
          "forWho": {
43 -
            "description": "Course: who it's for.",
43 +
            "description": "Optional goal: who it's for.",
44 44
            "maxGraphemes": 200,
45 45
            "maxLength": 2000,
46 46
            "type": "string"
47 47
          },
48 -
          "kind": {
49 -
            "description": "course = ordered and goal-driven; mix = any order.",
50 -
            "knownValues": [
51 -
              "course",
52 -
              "mix"
53 -
            ],
54 -
            "maxLength": 32,
55 -
            "type": "string"
56 -
          },
57 48
          "liner": {
58 49
            "ref": "#liner",
59 50
            "type": "ref"
60 51
          },
61 52
          "listed": {
62 53
            "description": "true = listed in search. false = link-only: kept out of search, but still public.",
63 54
            "type": "boolean"
64 55
          },
65 56
          "look": {
66 57
            "description": "Cassette shell and stripe set.",
67 58
            "knownValues": [
68 59
              "smoke-sunset",
69 60
              "red-mono",
70 61
              "blue-ocean",
71 62
              "clear-sunset"
72 63
            ],
73 64
            "maxLength": 64,
74 65
            "type": "string"
75 66
          },
76 67
          "oneLiner": {
77 -
            "description": "Mix: what this mix is, in one line.",
68 +
            "description": "What the tape is about, in one line.",
78 69
            "maxGraphemes": 200,
79 70
            "maxLength": 2000,
80 71
            "type": "string"
81 72
          },
82 73
          "sides": {
83 74
            "items": {
84 75
              "ref": "#side",
85 76
              "type": "ref"
86 77
            },
87 78
            "maxLength": 2,
88 79
            "minLength": 1,
89 80
            "type": "array"
90 81
          },
91 82
          "title": {
92 83
            "maxGraphemes": 100,
93 84
            "maxLength": 1000,
94 85
            "minLength": 1,
95 86
            "type": "string"
96 87
          },
97 88
          "updatedAt": {
98 89
            "format": "datetime",
99 90
            "type": "string"
100 91
          }
101 92
        },
102 93
        "required": [
103 -
          "kind",
104 94
          "title",
105 95
          "sides",
106 96
          "listed",
107 97
          "createdAt"
108 98
        ],
109 99
        "type": "object"
110 100
      },
111 101
      "type": "record"
112 102
    },
113 103
    "side": {
114 104
      "properties": {
115 105
        "letter": {
116 106
          "enum": [
117 107
            "A",
118 108
            "B"
119 109
          ],
120 110
          "type": "string"
121 111
        },
122 112
        "name": {
123 113
          "maxGraphemes": 60,
124 114
          "maxLength": 600,
125 115
          "type": "string"
126 116
        },
127 117
        "tracks": {
128 118
          "items": {
129 119
            "ref": "#track",
130 120
            "type": "ref"
131 121
          },
132 122
          "maxLength": 50,
133 123
          "type": "array"
134 124
        }
135 125
      },
136 126
      "required": [
137 127
        "letter",
138 128
        "tracks"
139 129
      ],
140 130
      "type": "object"
141 131
    },
142 132
    "track": {
143 133
      "properties": {
144 134
        "id": {
145 135
          "description": "Stable identifier, generated once when the track is added and never reused within the tape.",
146 136
          "maxLength": 32,
147 137
          "minLength": 1,
148 138
          "type": "string"
149 139
        },
150 140
        "kind": {
151 141
          "knownValues": [
152 142
            "video",
153 143
            "page",
154 144
            "pdf"
155 145
          ],
156 146
          "maxLength": 32,
157 147
          "type": "string"
158 148
        },
159 149
        "minutes": {
160 150
          "description": "Video duration or estimated reading time, in whole minutes.",
161 151
          "maximum": 100000,
162 152
          "minimum": 0,
163 153
          "type": "integer"
164 154
        },
165 155
        "note": {
166 156
          "description": "The curator's note: why this one.",
167 157
          "maxGraphemes": 300,
168 158
          "maxLength": 3000,
169 159
          "type": "string"
170 160
        },
171 161
        "pages": {
172 162
          "maximum": 100000,
173 163
          "minimum": 0,
174 164
          "type": "integer"
175 165
        },
176 166
        "sourceDomain": {
177 167
          "maxLength": 253,
178 168
          "type": "string"
179 169
        },
180 170
        "title": {
181 171
          "maxGraphemes": 300,
182 172
          "maxLength": 3000,
183 173
          "type": "string"
184 174
        },
185 175
        "url": {
186 176
          "format": "uri",
187 177
          "maxLength": 2048,
188 178
          "type": "string"
189 179
        }
190 180
      },
191 181
      "required": [
192 182
        "id",
193 183
        "url",
194 184
        "kind",
195 185
        "title",
196 186
        "minutes"
197 187
      ],
198 188
      "type": "object"
199 189
    }
200 190
  },
201 -
  "description": "A tape: a curated, public learning path or collection of links. Every track plays on its creator's own site or player.",
191 +
  "description": "A tape: a public collection of links around a topic, in order, like a mixtape. Every track plays on its creator's own site or player.",
202 192
  "id": "com.linxtape.tape",
203 193
  "lexicon": 1
204 194
}

Compare Other Versions

Lexicon Garden

@