com.cultureblocs.bead
Schema Diff
+4 -7
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 6 non-breaking changes.
Breaking Changes (4)
- RemovedVertex RemovedVertex { vertex_id: "com.cultureblocs.bead:body.photos" }
- RemovedVertex RemovedVertex { vertex_id: "com.cultureblocs.bead:body.photos:items" }
- RemovedEdge RemovedEdge { src: "com.cultureblocs.bead:body", tgt: "com.cultureblocs.bead:body.photos", kind: "prop", name: Some("photos") }
- RemovedEdge RemovedEdge { src: "com.cultureblocs.bead:body.photos", tgt: "com.cultureblocs.bead:body.photos:items", kind: "items", name: None }
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.bead:body.images" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.bead:body.images:items" }
- AddedVertex AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }
- AddedEdge AddedEdge { src: "com.cultureblocs.bead:body", tgt: "com.cultureblocs.bead:body.images", kind: "prop", name: Some("images") }
- AddedEdge AddedEdge { src: "com.cultureblocs.bead:body.images", tgt: "com.cultureblocs.bead:body.images:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "com.cultureblocs.bead:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "com.cultureblocs.bead:body.photos" }RemovedVertex { vertex_id: "com.cultureblocs.bead:body.photos:items" }
Added Elements
AddedVertex { vertex_id: "com.cultureblocs.bead:body.images" }AddedVertex { vertex_id: "com.cultureblocs.bead:body.images:items" }AddedVertex { vertex_id: "com.cultureblocs.defs#imageRef" }
Additional Notes
- Breaking: RemovedEdge { src: "com.cultureblocs.bead:body", tgt: "com.cultureblocs.bead:body.photos", kind: "prop", name: Some("photos") }
- Breaking: RemovedEdge { src: "com.cultureblocs.bead:body.photos", tgt: "com.cultureblocs.bead:body.photos:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "com.cultureblocs.bead:body", tgt: "com.cultureblocs.bead:body.images", kind: "prop", name: Some("images") }
- Non-breaking: AddedEdge { src: "com.cultureblocs.bead:body.images", tgt: "com.cultureblocs.bead:body.images:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "com.cultureblocs.bead:body.images:items", tgt: "com.cultureblocs.defs#imageRef", kind: "ref", name: None }
1
1
{
2
2
"id": "com.cultureblocs.bead",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"createdAt",
11
11
"kind"
12
12
],
13
13
"properties": {
14
14
"geo": {
15
15
"ref": "com.cultureblocs.defs#geo",
16
16
"type": "ref"
17
17
},
18
18
"kind": {
19
19
"type": "string",
20
20
"description": "What kind of cultural moment: bloc is the neutral default (a marked moment); read/listen/watch cover at-home culture; visit/dwell/screening/performance cover being out; encounter is a mutual mint.",
21
21
"knownValues": [
22
22
"bloc",
23
23
"visit",
24
24
"dwell",
25
25
"encounter",
26
26
"read",
27
27
"listen",
28
28
"watch",
29
29
"screening",
30
30
"performance",
31
31
"note"
32
32
]
33
33
},
34
34
"note": {
35
35
"type": "string",
36
36
"maxGraphemes": 3000
37
37
},
38
38
"prev": {
39
39
"ref": "com.cultureblocs.defs#strongRef",
40
40
"type": "ref",
41
41
"description": "Previous bead in the day's chain, if any."
42
42
},
43
43
"tags": {
44
44
"type": "array",
45
45
"items": {
46
46
"type": "string",
47
47
"maxGraphemes": 64
48
48
},
49
49
"maxLength": 8,
50
50
"description": "Freeform tags: the CultureBloc mask worn at mint time, ad-hoc event tags (emfcamp26), etc."
51
51
},
52
52
"links": {
53
53
"type": "array",
54
54
"items": {
55
55
"ref": "com.cultureblocs.defs#linkRef",
56
56
"type": "ref"
57
57
},
58
58
"maxLength": 8,
59
59
"description": "Event page, venue page, etc."
60
60
},
61
61
"media": {
62
62
"type": "array",
63
63
"items": {
64
64
"ref": "com.cultureblocs.defs#mediaRef",
65
65
"type": "ref"
66
66
},
67
67
"maxLength": 10
68
68
},
69
-
"photos": {
69
+
"images": {
70
70
"type": "array",
71
71
"items": {
72
-
"type": "blob",
73
-
"accept": [
74
-
"image/*"
75
-
],
76
-
"maxSize": 2000000
72
+
"ref": "com.cultureblocs.defs#imageRef",
73
+
"type": "ref"
77
74
},
78
75
"maxLength": 10,
79
-
"description": "Published photos as ATProto blobs. Tier 0 records use `media` (local refs); the promoter uploads and swaps at publish time."
76
+
"description": "Published images as imageRefs. Tier 0 records use `media` (local refs); the promoter uploads the bytes and maps alt + aspectRatio across at publish time."
80
77
},
81
78
"subject": {
82
79
"refs": [
83
80
"com.cultureblocs.defs#workRef",
84
81
"com.cultureblocs.defs#placeRef",
85
82
"com.cultureblocs.defs#strongRef"
86
83
],
87
84
"type": "union",
88
85
"description": "What the bead is about: a work, a place, or a published record (event, exhibition)."
89
86
},
90
87
"createdAt": {
91
88
"type": "string",
92
89
"format": "datetime"
93
90
},
94
91
"provenance": {
95
92
"ref": "com.cultureblocs.defs#provenance",
96
93
"type": "ref"
97
94
}
98
95
}
99
96
},
100
97
"description": "An atomic cultural memory: a visit, a dwell, an encounter, a screening. Minted on-device or by hand; annotated later."
101
98
}
102
99
},
103
100
"$type": "com.atproto.lexicon.schema",
104
101
"lexicon": 1
105
102
}