fm.leadsheet.sheet

leadsheet.fm

Schema Diff

+13 -2

From

CID
bafyreid7jaqdfev...
Indexed At
2026-09-25 00:14 UTC
View this version

To

CID
bafyreicojhfx5dc...
Indexed At
2026-09-25 02:00 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 4 non-breaking changes.

Breaking Changes (1)
  • ConstraintTightened ConstraintTightened { vertex_id: "fm.leadsheet.sheet:body.kind", sort: "knownValues", old_value: "[\"chords\",\"tab\",\"ukulele\",\"bass\"]", new_value: "[\"chords\",\"tab\",\"ukulele\",\"bass\",\"piano\"]" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links" }
  • AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links:items" }
  • AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.links", kind: "prop", name: Some("links") }
  • AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body.links", tgt: "fm.leadsheet.sheet:body.links:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links" }
  • AddedVertex { vertex_id: "fm.leadsheet.sheet:body.links:items" }

Constraint Changes

  • ConstraintTightened ConstraintTightened { vertex_id: "fm.leadsheet.sheet:body.kind", sort: "knownValues", old_value: "[\"chords\",\"tab\",\"ukulele\",\"bass\"]", new_value: "[\"chords\",\"tab\",\"ukulele\",\"bass\",\"piano\"]" }

Additional Notes

  • Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.links", kind: "prop", name: Some("links") }
  • Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body.links", tgt: "fm.leadsheet.sheet:body.links:items", kind: "items", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "A chord sheet or tab for a song, written in ChordPro.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "album": {
10 10
            "maxGraphemes": 200,
11 11
            "maxLength": 1000,
12 12
            "type": "string"
13 13
          },
14 14
          "artist": {
15 15
            "description": "Performing artist, as credited on the recording this sheet follows.",
16 16
            "maxGraphemes": 200,
17 17
            "maxLength": 1000,
18 18
            "type": "string"
19 19
          },
20 20
          "capo": {
21 21
            "maximum": 12,
22 22
            "minimum": 0,
23 23
            "type": "integer"
24 24
          },
25 25
          "content": {
26 26
            "maxGraphemes": 50000,
27 27
            "maxLength": 100000,
28 28
            "type": "string"
29 29
          },
30 30
          "createdAt": {
31 31
            "format": "datetime",
32 32
            "type": "string"
33 33
          },
34 34
          "description": {
35 35
            "description": "Author's notes: strumming pattern, how the intro is played, etc.",
36 36
            "maxGraphemes": 3000,
37 37
            "maxLength": 10000,
38 38
            "type": "string"
39 39
          },
40 40
          "difficulty": {
41 41
            "knownValues": [
42 42
              "beginner",
43 43
              "intermediate",
44 44
              "advanced"
45 45
            ],
46 46
            "maxLength": 32,
47 47
            "type": "string"
48 48
          },
49 49
          "draft": {
50 50
            "default": false,
51 51
            "description": "Not published yet: apps list and search only published sheets, and show a draft only to its author. Like any record, a draft is still publicly readable from the author's repo.",
52 52
            "type": "boolean"
53 53
          },
54 54
          "forkOf": {
55 55
            "description": "The sheet this one was derived from, as it was when forked.",
56 56
            "ref": "com.atproto.repo.strongRef",
57 57
            "type": "ref"
58 58
          },
59 59
          "format": {
60 60
            "default": "chordpro",
61 61
            "description": "Markup of `content`. ChordPro: inline [C]hords, {directives}, and {start_of_tab} blocks.",
62 62
            "knownValues": [
63 63
              "chordpro"
64 64
            ],
65 65
            "maxLength": 64,
66 66
            "type": "string"
67 67
          },
68 68
          "key": {
69 69
            "description": "Key the sheet is written in, e.g. 'G' or 'F#m'.",
70 70
            "maxLength": 16,
71 71
            "type": "string"
72 72
          },
73 73
          "kind": {
74 74
            "default": "chords",
75 -
            "description": "What the sheet is for: chords over lyrics, guitar tablature, ukulele chords, or bass.",
75 +
            "description": "What the sheet is for: chords over lyrics (guitar), guitar tablature, ukulele chords, bass, or piano.",
76 76
            "knownValues": [
77 77
              "chords",
78 78
              "tab",
79 79
              "ukulele",
80 -
              "bass"
80 +
              "bass",
81 +
              "piano"
81 82
            ],
82 83
            "maxLength": 64,
83 84
            "type": "string"
84 85
          },
86 +
          "links": {
87 +
            "description": "Where to hear the recording this sheet follows: YouTube, Bandcamp, SoundCloud, a streaming service. http(s) URLs.",
88 +
            "items": {
89 +
              "format": "uri",
90 +
              "maxLength": 2000,
91 +
              "type": "string"
92 +
            },
93 +
            "maxLength": 5,
94 +
            "type": "array"
95 +
          },
85 96
          "tags": {
86 97
            "items": {
87 98
              "maxGraphemes": 64,
88 99
              "maxLength": 640,
89 100
              "type": "string"
90 101
            },
91 102
            "maxLength": 10,
92 103
            "type": "array"
93 104
          },
94 105
          "title": {
95 106
            "description": "Song title.",
96 107
            "maxGraphemes": 200,
97 108
            "maxLength": 1000,
98 109
            "type": "string"
99 110
          },
100 111
          "tuning": {
101 112
            "description": "How the instrument (see `kind`) is tuned. Unset or 'standard' is that instrument's standard: EADGBE guitar, GCEA ukulele, EADG bass.",
102 113
            "knownValues": [
103 114
              "standard",
104 115
              "eb-standard",
105 116
              "d-standard",
106 117
              "drop-d",
107 118
              "drop-c",
108 119
              "dadgad",
109 120
              "open-d",
110 121
              "open-g",
111 122
              "open-e",
112 123
              "open-c",
113 124
              "low-g",
114 125
              "baritone",
115 126
              "five-string"
116 127
            ],
117 128
            "maxLength": 64,
118 129
            "type": "string"
119 130
          },
120 131
          "updatedAt": {
121 132
            "format": "datetime",
122 133
            "type": "string"
123 134
          },
124 135
          "voicings": {
125 136
            "description": "Chord shapes the author chose, at most one per chord. Readers see these instead of the shapes the app would pick.",
126 137
            "items": {
127 138
              "ref": "#voicing",
128 139
              "type": "ref"
129 140
            },
130 141
            "maxLength": 100,
131 142
            "type": "array"
132 143
          }
133 144
        },
134 145
        "required": [
135 146
          "title",
136 147
          "artist",
137 148
          "content",
138 149
          "createdAt"
139 150
        ],
140 151
        "type": "object"
141 152
      },
142 153
      "type": "record"
143 154
    },
144 155
    "voicing": {
145 156
      "description": "How to play one chord of the sheet.",
146 157
      "properties": {
147 158
        "chord": {
148 159
          "description": "The chord as written in `content`, e.g. 'C' or 'F#m7'.",
149 160
          "maxLength": 64,
150 161
          "type": "string"
151 162
        },
152 163
        "frets": {
153 164
          "description": "Fret for each string, in chart order (low E side first on guitar and bass, G first on ukulele), in the sheet's tuning and relative to its capo: -1 = not played, 0 = open.",
154 165
          "items": {
155 166
            "maximum": 24,
156 167
            "minimum": -1,
157 168
            "type": "integer"
158 169
          },
159 170
          "maxLength": 12,
160 171
          "minLength": 1,
161 172
          "type": "array"
162 173
        }
163 174
      },
164 175
      "required": [
165 176
        "chord",
166 177
        "frets"
167 178
      ],
168 179
      "type": "object"
169 180
    }
170 181
  },
171 182
  "description": "A chord sheet or tab for a song, written in ChordPro.",
172 183
  "id": "fm.leadsheet.sheet",
173 184
  "lexicon": 1
174 185
}

Compare Other Versions

Lexicon Garden

@