pics.2bit.actor.profile

2bit.pics

Schema Diff

+22 -8

From

CID
bafyreigpn7aym2k...
Indexed At
2026-08-15 16:46 UTC
View this version

To

CID
bafyreidiv6zozyy...
Indexed At
2026-08-15 21:28 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 6 non-breaking changes.

Breaking Changes (3)
  • KindChanged KindChanged { vertex_id: "pics.2bit.actor.profile:body.avatar", old_kind: "blob", new_kind: "bytes" }
  • ConstraintAdded ConstraintAdded { vertex_id: "pics.2bit.actor.profile:body.avatar", sort: "maxLength", value: "3584" }
  • ConstraintAdded ConstraintAdded { vertex_id: "pics.2bit.actor.profile:body.avatar", sort: "minLength", value: "3584" }
Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "pics.2bit.actor.profile:body.avatarColors" }
  • AddedVertex AddedVertex { vertex_id: "pics.2bit.actor.profile:body.avatarColors:items" }
  • AddedVertex AddedVertex { vertex_id: "pics.2bit.actor.profile:body.updatedAt" }
  • AddedEdge AddedEdge { src: "pics.2bit.actor.profile:body", tgt: "pics.2bit.actor.profile:body.avatarColors", kind: "prop", name: Some("avatarColors") }
  • AddedEdge AddedEdge { src: "pics.2bit.actor.profile:body", tgt: "pics.2bit.actor.profile:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • AddedEdge AddedEdge { src: "pics.2bit.actor.profile:body.avatarColors", tgt: "pics.2bit.actor.profile:body.avatarColors:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "pics.2bit.actor.profile:body.avatarColors" }
  • AddedVertex { vertex_id: "pics.2bit.actor.profile:body.avatarColors:items" }
  • AddedVertex { vertex_id: "pics.2bit.actor.profile:body.updatedAt" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "pics.2bit.actor.profile:body.avatar", sort: "minLength", value: "3584" }
  • ConstraintAdded ConstraintAdded { vertex_id: "pics.2bit.actor.profile:body.avatar", sort: "maxLength", value: "3584" }

Additional Notes

  • Breaking: KindChanged { vertex_id: "pics.2bit.actor.profile:body.avatar", old_kind: "blob", new_kind: "bytes" }
  • Non-breaking: AddedEdge { src: "pics.2bit.actor.profile:body", tgt: "pics.2bit.actor.profile:body.avatarColors", kind: "prop", name: Some("avatarColors") }
  • Non-breaking: AddedEdge { src: "pics.2bit.actor.profile:body", tgt: "pics.2bit.actor.profile:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • Non-breaking: AddedEdge { src: "pics.2bit.actor.profile:body.avatarColors", tgt: "pics.2bit.actor.profile:body.avatarColors:items", kind: "items", name: None }
1 1
{
2 2
  "id": "pics.2bit.actor.profile",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "literal:self",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "properties": {
10 10
          "gear": {
11 11
            "type": "string",
12 12
            "maxLength": 100,
13 13
            "description": "Main rig flex slot."
14 14
          },
15 15
          "avatar": {
16 -
            "type": "blob",
17 -
            "accept": [
18 -
              "image/png",
19 -
              "image/jpeg"
20 -
            ],
21 -
            "maxSize": 1000000,
22 -
            "description": "Ideally also dithered."
16 +
            "type": "bytes",
17 +
            "maxLength": 3584,
18 +
            "minLength": 3584,
19 +
            "description": "128x112 2bpp Game Boy Camera tile data, same layout as pics.2bit.feed.photo#image. Square avatars are produced by cropping at render time, not on write."
23 20
          },
24 21
          "createdAt": {
25 22
            "type": "string",
26 -
            "format": "datetime"
23 +
            "format": "datetime",
24 +
            "description": "When this profile record was first published."
25 +
          },
26 +
          "updatedAt": {
27 +
            "type": "string",
28 +
            "format": "datetime",
29 +
            "description": "When this profile record was last edited. Unset on a profile that has never been edited since creation."
27 30
          },
28 31
          "description": {
29 32
            "type": "string",
30 33
            "maxLength": 2560,
31 34
            "maxGraphemes": 256
32 35
          },
33 36
          "displayName": {
34 37
            "type": "string",
35 38
            "maxLength": 640,
36 39
            "maxGraphemes": 64
40 +
          },
41 +
          "avatarColors": {
42 +
            "type": "array",
43 +
            "items": {
44 +
              "type": "integer",
45 +
              "maximum": 16777215,
46 +
              "minimum": 0
47 +
            },
48 +
            "maxLength": 4,
49 +
            "minLength": 4,
50 +
            "description": "Four 24-bit RGB colors (0 to 0xFFFFFF) corresponding to the avatar's 2bpp pixel values 0 through 3, where 0 is lightest and 3 is darkest."
37 51
          }
38 52
        }
39 53
      },
40 54
      "description": "A 2bit.pics profile."
41 55
    }
42 56
  },
43 57
  "$type": "com.atproto.lexicon.schema",
44 58
  "lexicon": 1
45 59
}

Compare Other Versions

Lexicon Garden

@