dev.tsunagite.chart

tsunagite.dev

Schema Diff

+9 -1

From

CID
bafyreiaopkleedv...
Indexed At
2026-02-18 19:14 UTC
View this version

To

CID
bafyreibgsnympz2...
Indexed At
2026-04-30 03:22 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 5 non-breaking changes.

Breaking Changes (1)
  • RemovedEdge RemovedEdge { src: "dev.tsunagite.chart:body.difficulty", tgt: "dev.tsunagite.chart:body.difficulty:variant1", kind: "variant", name: Some("dev.tsunagite.types#typedRef") }
Non-Breaking Changes (5)
  • AddedVertex AddedVertex { vertex_id: "dev.tsunagite.chart:body.createdAt" }
  • AddedVertex AddedVertex { vertex_id: "dev.tsunagite.chart:body.updatedAt" }
  • AddedEdge AddedEdge { src: "dev.tsunagite.chart:body", tgt: "dev.tsunagite.chart:body.createdAt", kind: "prop", name: Some("createdAt") }
  • AddedEdge AddedEdge { src: "dev.tsunagite.chart:body", tgt: "dev.tsunagite.chart:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • AddedEdge AddedEdge { src: "dev.tsunagite.chart:body.difficulty", tgt: "dev.tsunagite.chart:body.difficulty:variant1", kind: "variant", name: Some("dev.tsunagite.defs#typedRef") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.tsunagite.chart:body.createdAt" }
  • AddedVertex { vertex_id: "dev.tsunagite.chart:body.updatedAt" }

Additional Notes

  • Breaking: RemovedEdge { src: "dev.tsunagite.chart:body.difficulty", tgt: "dev.tsunagite.chart:body.difficulty:variant1", kind: "variant", name: Some("dev.tsunagite.types#typedRef") }
  • Non-breaking: AddedEdge { src: "dev.tsunagite.chart:body", tgt: "dev.tsunagite.chart:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Non-breaking: AddedEdge { src: "dev.tsunagite.chart:body", tgt: "dev.tsunagite.chart:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • Non-breaking: AddedEdge { src: "dev.tsunagite.chart:body.difficulty", tgt: "dev.tsunagite.chart:body.difficulty:variant1", kind: "variant", name: Some("dev.tsunagite.defs#typedRef") }
1 1
{
2 2
  "id": "dev.tsunagite.chart",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "game",
11 11
          "song",
12 12
          "difficulty",
13 13
          "rating"
14 14
        ],
15 15
        "properties": {
16 16
          "game": {
17 17
            "type": "string",
18 18
            "format": "at-uri",
19 19
            "description": "The game this chart is included in. URI must point to a record of type `dev.tsunagite.game`."
20 20
          },
21 21
          "song": {
22 22
            "type": "string",
23 23
            "format": "at-uri",
24 24
            "description": "The song this chart is for. URI must point to a record of type `dev.tsunagite.song`."
25 25
          },
26 26
          "jacket": {
27 27
            "type": "blob",
28 28
            "accept": [
29 29
              "image/png",
30 30
              "image/jpeg",
31 31
              "image/jxl",
32 32
              "image/webp"
33 33
            ],
34 34
            "maxSize": 8000000,
35 35
            "description": "The jacket or banner art of this chart, for display in UI. Will fall back to the song jacket if not present"
36 36
          },
37 37
          "rating": {
38 38
            "type": "string",
39 39
            "description": "The numeric difficulty rating displayed to players, formatted as a string to support decimal or + difficulties."
40 40
          },
41 +
          "createdAt": {
42 +
            "type": "string",
43 +
            "format": "datetime"
44 +
          },
45 +
          "updatedAt": {
46 +
            "type": "string",
47 +
            "format": "datetime"
48 +
          },
41 49
          "difficulty": {
42 50
            "refs": [
43 51
              "dev.tsunagite.difficulty",
44 -
              "dev.tsunagite.types#typedRef"
52 +
              "dev.tsunagite.defs#typedRef"
45 53
            ],
46 54
            "type": "union",
47 55
            "description": "The difficulty slot this chart is placed in. Can be an inline definition or a reference to a standard-defined difficulty slot."
48 56
          },
49 57
          "jacketArtist": {
50 58
            "ref": "dev.tsunagite.translatable",
51 59
            "type": "ref",
52 60
            "description": "The name of the jacket artist for this chart."
53 61
          },
54 62
          "rankedVersions": {
55 63
            "type": "array",
56 64
            "items": {
57 65
              "type": "bytes",
58 66
              "maxLength": 16,
59 67
              "minLength": 16
60 68
            },
61 69
            "description": "The md5 hashes of any versions of the chart that are up-to-date enough to be leaderboard-legal. Optional if you will not perform leaderboard resets upon any chart changes."
62 70
          }
63 71
        }
64 72
      },
65 73
      "description": "A chart included in a game hosting leaderboards via Tsunagite."
66 74
    }
67 75
  },
68 76
  "$type": "com.atproto.lexicon.schema",
69 77
  "lexicon": 1,
70 78
  "description": "Definitions related to charts included in games hosting leaderboards via Tsunagite."
71 79
}

Compare Other Versions

Lexicon Garden

@