fm.leadsheet.sheet

leadsheet.fm

Schema Diff

+5 -0

From

CID
bafyreieboitqtc3...
Indexed At
2026-09-25 00:05 UTC
View this version

To

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

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "fm.leadsheet.sheet:body.draft" }
  • AddedEdge AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.draft", kind: "prop", name: Some("draft") }

Migration Guidance

Added Elements

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

Additional Notes

  • Non-breaking: AddedEdge { src: "fm.leadsheet.sheet:body", tgt: "fm.leadsheet.sheet:body.draft", kind: "prop", name: Some("draft") }
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 +
          "draft": {
50 +
            "default": false,
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 +
            "type": "boolean"
53 +
          },
49 54
          "forkOf": {
50 55
            "description": "The sheet this one was derived from, as it was when forked.",
51 56
            "ref": "com.atproto.repo.strongRef",
52 57
            "type": "ref"
53 58
          },
54 59
          "format": {
55 60
            "default": "chordpro",
56 61
            "description": "Markup of `content`. ChordPro: inline [C]hords, {directives}, and {start_of_tab} blocks.",
57 62
            "knownValues": [
58 63
              "chordpro"
59 64
            ],
60 65
            "maxLength": 64,
61 66
            "type": "string"
62 67
          },
63 68
          "key": {
64 69
            "description": "Key the sheet is written in, e.g. 'G' or 'F#m'.",
65 70
            "maxLength": 16,
66 71
            "type": "string"
67 72
          },
68 73
          "kind": {
69 74
            "default": "chords",
70 75
            "description": "What the sheet is for: chords over lyrics, guitar tablature, ukulele chords, or bass.",
71 76
            "knownValues": [
72 77
              "chords",
73 78
              "tab",
74 79
              "ukulele",
75 80
              "bass"
76 81
            ],
77 82
            "maxLength": 64,
78 83
            "type": "string"
79 84
          },
80 85
          "tags": {
81 86
            "items": {
82 87
              "maxGraphemes": 64,
83 88
              "maxLength": 640,
84 89
              "type": "string"
85 90
            },
86 91
            "maxLength": 10,
87 92
            "type": "array"
88 93
          },
89 94
          "title": {
90 95
            "description": "Song title.",
91 96
            "maxGraphemes": 200,
92 97
            "maxLength": 1000,
93 98
            "type": "string"
94 99
          },
95 100
          "tuning": {
96 101
            "description": "How the instrument (see `kind`) is tuned. Unset or 'standard' is that instrument's standard: EADGBE guitar, GCEA ukulele, EADG bass.",
97 102
            "knownValues": [
98 103
              "standard",
99 104
              "eb-standard",
100 105
              "d-standard",
101 106
              "drop-d",
102 107
              "drop-c",
103 108
              "dadgad",
104 109
              "open-d",
105 110
              "open-g",
106 111
              "open-e",
107 112
              "open-c",
108 113
              "low-g",
109 114
              "baritone",
110 115
              "five-string"
111 116
            ],
112 117
            "maxLength": 64,
113 118
            "type": "string"
114 119
          },
115 120
          "updatedAt": {
116 121
            "format": "datetime",
117 122
            "type": "string"
118 123
          },
119 124
          "voicings": {
120 125
            "description": "Chord shapes the author chose, at most one per chord. Readers see these instead of the shapes the app would pick.",
121 126
            "items": {
122 127
              "ref": "#voicing",
123 128
              "type": "ref"
124 129
            },
125 130
            "maxLength": 100,
126 131
            "type": "array"
127 132
          }
128 133
        },
129 134
        "required": [
130 135
          "title",
131 136
          "artist",
132 137
          "content",
133 138
          "createdAt"
134 139
        ],
135 140
        "type": "object"
136 141
      },
137 142
      "type": "record"
138 143
    },
139 144
    "voicing": {
140 145
      "description": "How to play one chord of the sheet.",
141 146
      "properties": {
142 147
        "chord": {
143 148
          "description": "The chord as written in `content`, e.g. 'C' or 'F#m7'.",
144 149
          "maxLength": 64,
145 150
          "type": "string"
146 151
        },
147 152
        "frets": {
148 153
          "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.",
149 154
          "items": {
150 155
            "maximum": 24,
151 156
            "minimum": -1,
152 157
            "type": "integer"
153 158
          },
154 159
          "maxLength": 12,
155 160
          "minLength": 1,
156 161
          "type": "array"
157 162
        }
158 163
      },
159 164
      "required": [
160 165
        "chord",
161 166
        "frets"
162 167
      ],
163 168
      "type": "object"
164 169
    }
165 170
  },
166 171
  "description": "A chord sheet or tab for a song, written in ChordPro.",
167 172
  "id": "fm.leadsheet.sheet",
168 173
  "lexicon": 1
169 174
}

Compare Other Versions

Lexicon Garden

@