com.luminframe.image
Schema Diff
+3 -2
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 0 non-breaking changes.
Breaking Changes (2)
- KindChanged KindChanged { vertex_id: "com.luminframe.image#effectStep.params", old_kind: "unknown", new_kind: "string" }
- ConstraintAdded ConstraintAdded { vertex_id: "com.luminframe.image#effectStep.params", sort: "maxLength", value: "10000" }
Migration Guidance
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "com.luminframe.image#effectStep.params", sort: "maxLength", value: "10000" }
Additional Notes
- Breaking: KindChanged { vertex_id: "com.luminframe.image#effectStep.params", old_kind: "unknown", new_kind: "string" }
1
1
{
2
2
"id": "com.luminframe.image",
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
"image",
11
11
"aspectRatio",
12
12
"createdAt"
13
13
],
14
14
"properties": {
15
15
"alt": {
16
16
"type": "string",
17
17
"maxLength": 10000,
18
18
"description": "Accessibility description of the image.",
19
19
"maxGraphemes": 2000
20
20
},
21
21
"image": {
22
22
"type": "blob",
23
23
"accept": [
24
24
"image/*"
25
25
],
26
26
"maxSize": 1000000,
27
27
"description": "The rendered image. When `video` is present, this is its poster frame."
28
28
},
29
29
"title": {
30
30
"type": "string",
31
31
"maxLength": 3000,
32
32
"description": "Short caption or label.",
33
33
"maxGraphemes": 300
34
34
},
35
35
"video": {
36
36
"type": "blob",
37
37
"accept": [
38
38
"video/mp4"
39
39
],
40
40
"maxSize": 5000000,
41
41
"description": "A short looping clip of the edit, present when the recipe animates. The still `image` remains required as the poster, so viewers that only know stills keep working."
42
42
},
43
43
"recipe": {
44
44
"type": "array",
45
45
"items": {
46
46
"ref": "#effectStep",
47
47
"type": "ref"
48
48
},
49
49
"maxLength": 64,
50
50
"description": "The ordered effect stack with parameters — the executable edit, so the look can be reconstructed or applied elsewhere."
51
51
},
52
52
"effects": {
53
53
"type": "array",
54
54
"items": {
55
55
"type": "string",
56
56
"maxLength": 128
57
57
},
58
58
"maxLength": 64,
59
59
"description": "The effect keys applied, in order. Kept for lightweight display and backward compatibility; the executable form is `recipe`."
60
60
},
61
61
"remixOf": {
62
62
"ref": "com.atproto.repo.strongRef",
63
63
"type": "ref",
64
64
"description": "The record this image was remixed from, if any — its lineage."
65
65
},
66
66
"createdAt": {
67
67
"type": "string",
68
68
"format": "datetime",
69
69
"description": "When the record was created."
70
70
},
71
71
"aspectRatio": {
72
72
"ref": "#aspectRatio",
73
73
"type": "ref",
74
74
"description": "Pixel dimensions of the render, so a viewer can lay it out without decoding."
75
75
}
76
76
}
77
77
},
78
78
"description": "An image edited in Luminframe, saved to the author's repo, together with the effect recipe used to produce it."
79
79
},
80
80
"effectStep": {
81
81
"type": "object",
82
82
"required": [
83
83
"type"
84
84
],
85
85
"properties": {
86
86
"type": {
87
87
"type": "string",
88
88
"maxLength": 128,
89
89
"description": "The effect key."
90
90
},
91
91
"params": {
92
-
"type": "unknown",
93
-
"description": "The effect's parameters (effect-specific freeform JSON)."
92
+
"type": "string",
93
+
"maxLength": 10000,
94
+
"description": "The effect's parameters, JSON-encoded. A string rather than an object because the atproto data model has no float type and effect parameters are fractional. Records saved before v4 carry a plain object here instead."
94
95
}
95
96
},
96
97
"description": "One effect in the recipe: its key and the parameters it was applied with."
97
98
},
98
99
"aspectRatio": {
99
100
"type": "object",
100
101
"required": [
101
102
"width",
102
103
"height"
103
104
],
104
105
"properties": {
105
106
"width": {
106
107
"type": "integer",
107
108
"minimum": 1
108
109
},
109
110
"height": {
110
111
"type": "integer",
111
112
"minimum": 1
112
113
}
113
114
},
114
115
"description": "The width:height ratio of the image, in pixels."
115
116
}
116
117
},
117
118
"$type": "com.atproto.lexicon.schema",
118
119
"lexicon": 1
119
120
}