From
bafyreiduvslhwv6bg5gu5zbnbualfxytk7ds3xrpndnpxwg2e5hmcaaymm
indexed 2026-07-23 05:24 UTC
View this version
To
bafyreig54y5zjdceepvlx7lctxeyvrvinrwdhxthrfz35ifzfpuyqm6mde
indexed 2026-07-23 13:45 UTC
View this version
Compatibility
breaking 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" }
Notes
- Breaking: KindChanged { vertex_id: "com.luminframe.image#effectStep.params", old_kind: "unknown", new_kind: "string" }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"aspectRatio": {55
"description": "The width:height ratio of the image, in pixels.",66
"properties": {77
"height": {88
"minimum": 1,99
"type": "integer"1010
},1111
"width": {1212
"minimum": 1,1313
"type": "integer"1414
}1515
},1616
"required": [1717
"width",1818
"height"1919
],2020
"type": "object"2121
},2222
"effectStep": {2323
"description": "One effect in the recipe: its key and the parameters it was applied with.",2424
"properties": {2525
"params": {26
"description": "The effect's parameters (effect-specific freeform JSON).",27
"type": "unknown"26
"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.",27
"maxLength": 10000,28
"type": "string"2829
},2930
"type": {3031
"description": "The effect key.",3132
"maxLength": 128,3233
"type": "string"3334
}3435
},3536
"required": [3637
"type"3738
],3839
"type": "object"3940
},4041
"main": {4142
"description": "An image edited in Luminframe, saved to the author's repo, together with the effect recipe used to produce it.",4243
"key": "tid",4344
"record": {4445
"properties": {4546
"alt": {4647
"description": "Accessibility description of the image.",4748
"maxGraphemes": 2000,4849
"maxLength": 10000,4950
"type": "string"5051
},5152
"aspectRatio": {5253
"description": "Pixel dimensions of the render, so a viewer can lay it out without decoding.",5354
"ref": "#aspectRatio",5455
"type": "ref"5556
},5657
"createdAt": {5758
"description": "When the record was created.",5859
"format": "datetime",5960
"type": "string"6061
},6162
"effects": {6263
"description": "The effect keys applied, in order. Kept for lightweight display and backward compatibility; the executable form is `recipe`.",6364
"items": {6465
"maxLength": 128,6566
"type": "string"6667
},6768
"maxLength": 64,6869
"type": "array"6970
},7071
"image": {7172
"accept": [7273
"image/*"7374
],7475
"description": "The rendered image. When `video` is present, this is its poster frame.",7576
"maxSize": 1000000,7677
"type": "blob"7778
},7879
"recipe": {7980
"description": "The ordered effect stack with parameters — the executable edit, so the look can be reconstructed or applied elsewhere.",8081
"items": {8182
"ref": "#effectStep",8283
"type": "ref"8384
},8485
"maxLength": 64,8586
"type": "array"8687
},8788
"remixOf": {8889
"description": "The record this image was remixed from, if any — its lineage.",8990
"ref": "com.atproto.repo.strongRef",9091
"type": "ref"9192
},9293
"title": {9394
"description": "Short caption or label.",9495
"maxGraphemes": 300,9596
"maxLength": 3000,9697
"type": "string"9798
},9899
"video": {99100
"accept": [100101
"video/mp4"101102
],102103
"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.",103104
"maxSize": 5000000,104105
"type": "blob"105106
}106107
},107108
"required": [108109
"image",109110
"aspectRatio",110111
"createdAt"111112
],112113
"type": "object"113114
},114115
"type": "record"115116
}116117
},117118
"id": "com.luminframe.image",118119
"lexicon": 1119120
}