space.dailygame.profile

dailygame.space

Schema Diff

+67 -0

From

CID
bafyreidiqw7ojga...
Indexed At
2026-04-17 23:36 UTC
View this version

To

CID
bafyreigu4njcvn4...
Indexed At
2026-04-24 01:49 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 14 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.earnedAt", kind: "prop", name: Some("earnedAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.id", kind: "prop", name: Some("id") }
Non-Breaking Changes (14)
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.category" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.earnedAt" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile#badge.id" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.badges" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.badges:items" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.favorites" }
  • AddedVertex AddedVertex { vertex_id: "space.dailygame.profile:body.favorites:items" }
  • AddedEdge AddedEdge { src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.category", kind: "prop", name: Some("category") }
  • AddedEdge AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.badges", kind: "prop", name: Some("badges") }
  • AddedEdge AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.favorites", kind: "prop", name: Some("favorites") }
  • AddedEdge AddedEdge { src: "space.dailygame.profile:body.badges", tgt: "space.dailygame.profile:body.badges:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "space.dailygame.profile:body.badges:items", tgt: "space.dailygame.profile#badge", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "space.dailygame.profile:body.favorites", tgt: "space.dailygame.profile:body.favorites:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "space.dailygame.profile#badge" }
  • AddedVertex { vertex_id: "space.dailygame.profile#badge.category" }
  • AddedVertex { vertex_id: "space.dailygame.profile#badge.earnedAt" }
  • AddedVertex { vertex_id: "space.dailygame.profile#badge.id" }
  • AddedVertex { vertex_id: "space.dailygame.profile:body.badges" }
  • AddedVertex { vertex_id: "space.dailygame.profile:body.badges:items" }
  • AddedVertex { vertex_id: "space.dailygame.profile:body.favorites" }
  • AddedVertex { vertex_id: "space.dailygame.profile:body.favorites:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.earnedAt", kind: "prop", name: Some("earnedAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "space.dailygame.profile#badge", src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.id", kind: "prop", name: Some("id") }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile#badge", tgt: "space.dailygame.profile#badge.category", kind: "prop", name: Some("category") }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.badges", kind: "prop", name: Some("badges") }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile:body", tgt: "space.dailygame.profile:body.favorites", kind: "prop", name: Some("favorites") }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile:body.badges", tgt: "space.dailygame.profile:body.badges:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile:body.badges:items", tgt: "space.dailygame.profile#badge", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "space.dailygame.profile:body.favorites", tgt: "space.dailygame.profile:body.favorites:items", kind: "items", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "badge": {
5 +
      "description": "A user accomplishment. `id` is a stable identifier from the app's badge catalog; `earnedAt` is the date the user first met the criteria.",
6 +
      "properties": {
7 +
        "category": {
8 +
          "description": "Grouping used by the app UI.",
9 +
          "knownValues": [
10 +
            "streak",
11 +
            "variety",
12 +
            "breadth",
13 +
            "category-expert"
14 +
          ],
15 +
          "type": "string"
16 +
        },
17 +
        "earnedAt": {
18 +
          "description": "When the badge was first earned (date of earliest play that satisfied the criteria).",
19 +
          "format": "datetime",
20 +
          "type": "string"
21 +
        },
22 +
        "id": {
23 +
          "description": "Badge id. Known values cover the app's published badge catalog; unknown values are accepted for forward compatibility.",
24 +
          "knownValues": [
25 +
            "streak-10",
26 +
            "streak-25",
27 +
            "streak-50",
28 +
            "streak-100",
29 +
            "streak-250",
30 +
            "streak-365",
31 +
            "games-10",
32 +
            "games-15",
33 +
            "games-20",
34 +
            "games-30",
35 +
            "games-50",
36 +
            "5x5",
37 +
            "10x10",
38 +
            "category-expert-word",
39 +
            "category-expert-logic",
40 +
            "category-expert-geography",
41 +
            "category-expert-trivia"
42 +
          ],
43 +
          "maxLength": 64,
44 +
          "type": "string"
45 +
        }
46 +
      },
47 +
      "required": [
48 +
        "id",
49 +
        "earnedAt"
50 +
      ],
51 +
      "type": "object"
52 +
    },
4 53
    "main": {
5 54
      "description": "A user's daily-games profile. Singleton per repo (rkey = 'self').",
6 55
      "key": "literal:self",
7 56
      "record": {
8 57
        "properties": {
58 +
          "badges": {
59 +
            "description": "Badges the user has earned. Once earned, a badge stays earned.",
60 +
            "items": {
61 +
              "ref": "#badge",
62 +
              "type": "ref"
63 +
            },
64 +
            "maxLength": 256,
65 +
            "type": "array"
66 +
          },
9 67
          "createdAt": {
10 68
            "description": "When this profile record was first created.",
11 69
            "format": "datetime",
12 70
            "type": "string"
13 71
          },
14 72
          "displayName": {
15 73
            "description": "Optional override of the user's Bluesky display name for this app.",
16 74
            "maxGraphemes": 64,
17 75
            "maxLength": 640,
18 76
            "type": "string"
19 77
          },
20 78
          "displayOrder": {
21 79
            "description": "Optional user-preferred ordering of game ids.",
22 80
            "items": {
23 81
              "maxLength": 64,
24 82
              "type": "string"
25 83
            },
26 84
            "maxLength": 256,
27 85
            "type": "array"
28 86
          },
87 +
          "favorites": {
88 +
            "description": "Game ids that the user has favorited. Shown in a dedicated group on the home page.",
89 +
            "items": {
90 +
              "maxLength": 64,
91 +
              "type": "string"
92 +
            },
93 +
            "maxLength": 256,
94 +
            "type": "array"
95 +
          },
29 96
          "games": {
30 97
            "description": "Game ids from the app catalog that the user plays.",
31 98
            "items": {
32 99
              "maxLength": 64,
33 100
              "type": "string"
34 101
            },
35 102
            "maxLength": 256,
36 103
            "type": "array"
37 104
          },
38 105
          "timezone": {
39 106
            "description": "IANA timezone name used to compute daily resets for this user.",
40 107
            "maxLength": 128,
41 108
            "type": "string"
42 109
          }
43 110
        },
44 111
        "required": [
45 112
          "createdAt"
46 113
        ],
47 114
        "type": "object"
48 115
      },
49 116
      "type": "record"
50 117
    }
51 118
  },
52 119
  "id": "space.dailygame.profile",
53 120
  "lexicon": 1
54 121
}

Compare Other Versions

Lexicon Garden

@