app.didpic.feed.post

lexicons.didpic.app

Schema Diff

+41 -4

From

CID
bafyreihfuntrzh5...
Indexed At
2026-05-16 06:10 UTC
View this version

To

CID
bafyreifewdvpyds...
Indexed At
2026-05-24 01:15 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 14 non-breaking changes.

Breaking Changes (1)
  • ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.post#selfLabel.val", sort: "maxLength", value: "128" }
Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post#selfLabel" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post#selfLabel.val" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels.values" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels.values:items" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post:body.facets" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post:body.facets:items" }
  • AddedVertex AddedVertex { vertex_id: "app.didpic.feed.post:body.labels" }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post#selfLabel", tgt: "app.didpic.feed.post#selfLabel.val", kind: "prop", name: Some("val") }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post#selfLabels", tgt: "app.didpic.feed.post#selfLabels.values", kind: "prop", name: Some("values") }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post#selfLabels.values", tgt: "app.didpic.feed.post#selfLabels.values:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.facets", kind: "prop", name: Some("facets") }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.labels", kind: "prop", name: Some("labels") }
  • AddedEdge AddedEdge { src: "app.didpic.feed.post:body.facets", tgt: "app.didpic.feed.post:body.facets:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.didpic.feed.post#selfLabel" }
  • AddedVertex { vertex_id: "app.didpic.feed.post#selfLabel.val" }
  • AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels" }
  • AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels.values" }
  • AddedVertex { vertex_id: "app.didpic.feed.post#selfLabels.values:items" }
  • AddedVertex { vertex_id: "app.didpic.feed.post:body.facets" }
  • AddedVertex { vertex_id: "app.didpic.feed.post:body.facets:items" }
  • AddedVertex { vertex_id: "app.didpic.feed.post:body.labels" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.feed.post#selfLabel.val", sort: "maxLength", value: "128" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.didpic.feed.post#selfLabel", tgt: "app.didpic.feed.post#selfLabel.val", kind: "prop", name: Some("val") }
  • Non-breaking: AddedEdge { src: "app.didpic.feed.post#selfLabels", tgt: "app.didpic.feed.post#selfLabels.values", kind: "prop", name: Some("values") }
  • Non-breaking: AddedEdge { src: "app.didpic.feed.post#selfLabels.values", tgt: "app.didpic.feed.post#selfLabels.values:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.facets", kind: "prop", name: Some("facets") }
  • Non-breaking: AddedEdge { src: "app.didpic.feed.post:body", tgt: "app.didpic.feed.post:body.labels", kind: "prop", name: Some("labels") }
  • Non-breaking: AddedEdge { src: "app.didpic.feed.post:body.facets", tgt: "app.didpic.feed.post:body.facets:items", kind: "items", name: None }
1 1
{
2 2
  "id": "app.didpic.feed.post",
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
          "createdAt"
12 12
        ],
13 13
        "properties": {
14 14
          "alt": {
15 15
            "type": "string",
16 16
            "maxLength": 10000,
17 -
            "description": "Alt text describing the image for accessibility.",
17 +
            "description": "Alt text for accessibility.",
18 18
            "maxGraphemes": 1000
19 19
          },
20 20
          "text": {
21 21
            "type": "string",
22 22
            "maxLength": 22000,
23 -
            "description": "Caption text. May be empty.",
23 +
            "description": "Caption text.",
24 24
            "maxGraphemes": 2200
25 25
          },
26 26
          "image": {
27 27
            "type": "blob",
28 28
            "accept": [
29 29
              "image/png",
30 30
              "image/jpeg",
31 31
              "image/webp"
32 32
            ],
33 33
            "maxSize": 5000000
34 34
          },
35 +
          "facets": {
36 +
            "type": "array",
37 +
            "items": {
38 +
              "ref": "app.didpic.richtext.facet",
39 +
              "type": "ref"
40 +
            }
41 +
          },
42 +
          "labels": {
43 +
            "ref": "#selfLabels",
44 +
            "type": "ref",
45 +
            "description": "Self-applied content labels."
46 +
          },
35 47
          "createdAt": {
36 48
            "type": "string",
37 49
            "format": "datetime"
38 50
          },
39 51
          "aspectRatio": {
40 52
            "ref": "#aspectRatio",
41 53
            "type": "ref"
42 54
          }
43 55
        }
44 56
      },
45 -
      "description": "A didpic post: a single photo with an optional caption. Old-school photo-feed style — one image per post, no carousels."
57 +
      "description": "A single-image photo post with optional caption."
46 58
    },
59 +
    "selfLabel": {
60 +
      "type": "object",
61 +
      "required": [
62 +
        "val"
63 +
      ],
64 +
      "properties": {
65 +
        "val": {
66 +
          "type": "string",
67 +
          "maxLength": 128
68 +
        }
69 +
      }
70 +
    },
71 +
    "selfLabels": {
72 +
      "type": "object",
73 +
      "properties": {
74 +
        "values": {
75 +
          "type": "array",
76 +
          "items": {
77 +
            "ref": "#selfLabel",
78 +
            "type": "ref"
79 +
          }
80 +
        }
81 +
      },
82 +
      "description": "Self-applied label set."
83 +
    },
47 84
    "aspectRatio": {
48 85
      "type": "object",
49 86
      "required": [
50 87
        "width",
51 88
        "height"
52 89
      ],
53 90
      "properties": {
54 91
        "width": {
55 92
          "type": "integer",
56 93
          "minimum": 1
57 94
        },
58 95
        "height": {
59 96
          "type": "integer",
60 97
          "minimum": 1
61 98
        }
62 99
      },
63 -
      "description": "Width:height ratio of the image in pixels. Used by clients to reserve layout space."
100 +
      "description": "Image width:height in pixels."
64 101
    }
65 102
  },
66 103
  "$type": "com.atproto.lexicon.schema",
67 104
  "lexicon": 1
68 105
}

Compare Other Versions

Lexicon Garden

@