com.luminframe.image

luminframe.com

Schema Diff

+3 -2

From

CID
bafyreiduvslhwv6...
Indexed At
2026-07-23 05:24 UTC
View this version

To

CID
bafyreig54y5zjdc...
Indexed At
2026-07-23 13:45 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@