space.opendeck.profile
Schema Diff
+6 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "space.opendeck.profile:body.newCardsPerDay" }
- AddedEdge AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.newCardsPerDay", kind: "prop", name: Some("newCardsPerDay") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "space.opendeck.profile:body.newCardsPerDay" }
Additional Notes
- Non-breaking: AddedEdge { src: "space.opendeck.profile:body", tgt: "space.opendeck.profile:body.newCardsPerDay", kind: "prop", name: Some("newCardsPerDay") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "OpenDeck profile and synced preferences.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"accentColor": {
10
10
"description": "Hex accent color, e.g. #3b82f6.",
11
11
"maxGraphemes": 9,
12
12
"maxLength": 90,
13
13
"type": "string"
14
14
},
15
15
"bio": {
16
16
"maxGraphemes": 2000,
17
17
"maxLength": 20000,
18
18
"type": "string"
19
19
},
20
20
"breakReminders": {
21
21
"description": "Suggest breaks after long study sessions or days; absent means on.",
22
22
"type": "boolean"
23
23
},
24
24
"creditStyle": {
25
25
"description": "How shown credit roles look: theme styles the whole profile, badges only lists them; absent means theme.",
26
26
"enum": [
27
27
"theme",
28
28
"badges"
29
29
],
30
30
"type": "string"
31
31
},
32
32
"defaultVisibility": {
33
33
"enum": [
34
34
"public",
35
35
"private"
36
36
],
37
37
"type": "string"
38
38
},
39
+
"newCardsPerDay": {
40
+
"description": "How many new cards to introduce per deck each day; absent means no limit.",
41
+
"maximum": 1000,
42
+
"minimum": 1,
43
+
"type": "integer"
44
+
},
39
45
"publicStats": {
40
46
"description": "Summary of your study stats without deck or card details; only present while showStats is everyone.",
41
47
"ref": "space.opendeck.profile#publicStats",
42
48
"type": "ref"
43
49
},
44
50
"reminderDays": {
45
51
"description": "Weekdays 0-6 (Sun-Sat); absent means Monday to Friday.",
46
52
"items": {
47
53
"maximum": 6,
48
54
"minimum": 0,
49
55
"type": "integer"
50
56
},
51
57
"maxLength": 7,
52
58
"type": "array"
53
59
},
54
60
"reminderEnabled": {
55
61
"type": "boolean"
56
62
},
57
63
"reminderHour": {
58
64
"description": "Local hour (0-23) of the study reminder; absent means 19.",
59
65
"maximum": 23,
60
66
"minimum": 0,
61
67
"type": "integer"
62
68
},
63
69
"shortTermIntervals": {
64
70
"description": "Default short-term intervals preset; absent means auto.",
65
71
"enum": [
66
72
"auto",
67
73
"quick",
68
74
"balanced",
69
75
"relaxed",
70
76
"spaced"
71
77
],
72
78
"type": "string"
73
79
},
74
80
"showActivityOnProfile": {
75
81
"type": "boolean"
76
82
},
77
83
"showCredits": {
78
84
"description": "Who sees your OpenDeck credit roles on your profile; absent means everyone.",
79
85
"enum": [
80
86
"nobody",
81
87
"me",
82
88
"everyone"
83
89
],
84
90
"type": "string"
85
91
},
86
92
"showDecksOnProfile": {
87
93
"type": "boolean"
88
94
},
89
95
"showFollowsOnProfile": {
90
96
"type": "boolean"
91
97
},
92
98
"showMotivation": {
93
99
"description": "Who sees tier progress boxes: nobody hides them, me shows them on the home, study and profile pages, everyone also shows the profile box to visitors (only while showTier is everyone); absent means me.",
94
100
"enum": [
95
101
"nobody",
96
102
"me",
97
103
"everyone"
98
104
],
99
105
"type": "string"
100
106
},
101
107
"showProgressOnProfile": {
102
108
"type": "boolean"
103
109
},
104
110
"showStats": {
105
111
"description": "Who sees your study stats on your profile; absent means me.",
106
112
"enum": [
107
113
"nobody",
108
114
"me",
109
115
"everyone"
110
116
],
111
117
"type": "string"
112
118
},
113
119
"showTier": {
114
120
"description": "Who sees your study tier on your profile, and with everyone also in battles; absent means me.",
115
121
"enum": [
116
122
"nobody",
117
123
"me",
118
124
"everyone"
119
125
],
120
126
"type": "string"
121
127
},
122
128
"studyDays": {
123
129
"description": "Study sessions per day (capped at 3) for the 84 days up to studyDaysEnd, oldest first; only present while the motivation box is public.",
124
130
"items": {
125
131
"maximum": 3,
126
132
"minimum": 0,
127
133
"type": "integer"
128
134
},
129
135
"maxLength": 84,
130
136
"type": "array"
131
137
},
132
138
"studyDaysEnd": {
133
139
"description": "Local date (YYYY-MM-DD) of the last entry in studyDays.",
134
140
"maxGraphemes": 10,
135
141
"maxLength": 100,
136
142
"type": "string"
137
143
},
138
144
"studyTier": {
139
145
"description": "Study tier from the days studied in the last four weeks; only present while it is shown publicly.",
140
146
"enum": [
141
147
"bronze",
142
148
"silver",
143
149
"gold",
144
150
"platinum",
145
151
"diamond",
146
152
"champion",
147
153
"grandChampion",
148
154
"supernova"
149
155
],
150
156
"type": "string"
151
157
},
152
158
"studyTierAt": {
153
159
"description": "When studyTier was last computed.",
154
160
"format": "datetime",
155
161
"type": "string"
156
162
},
157
163
"tierStyle": {
158
164
"description": "How a shown tier looks: theme styles the whole profile, badge only adds a badge; absent means theme.",
159
165
"enum": [
160
166
"theme",
161
167
"badge"
162
168
],
163
169
"type": "string"
164
170
},
165
171
"uiLanguage": {
166
172
"description": "BCP-47 language tag for the OpenDeck interface.",
167
173
"maxGraphemes": 20,
168
174
"maxLength": 200,
169
175
"type": "string"
170
176
},
171
177
"updatedAt": {
172
178
"format": "datetime",
173
179
"type": "string"
174
180
}
175
181
},
176
182
"type": "object"
177
183
},
178
184
"type": "record"
179
185
},
180
186
"publicStats": {
181
187
"properties": {
182
188
"activity": {
183
189
"description": "Repetitions per day for the days up to activityEnd, oldest first.",
184
190
"items": {
185
191
"minimum": 0,
186
192
"type": "integer"
187
193
},
188
194
"maxLength": 371,
189
195
"type": "array"
190
196
},
191
197
"activityEnd": {
192
198
"description": "Local date (YYYY-MM-DD) of the last entry in activity.",
193
199
"maxGraphemes": 10,
194
200
"maxLength": 100,
195
201
"type": "string"
196
202
},
197
203
"firstStudiedOn": {
198
204
"description": "Local date (YYYY-MM-DD) of the first study day.",
199
205
"maxGraphemes": 10,
200
206
"maxLength": 100,
201
207
"type": "string"
202
208
},
203
209
"lastStudiedAt": {
204
210
"format": "datetime",
205
211
"type": "string"
206
212
},
207
213
"learned": {
208
214
"description": "Cards in review.",
209
215
"type": "integer"
210
216
},
211
217
"learning": {
212
218
"description": "Cards in learning or relearning.",
213
219
"type": "integer"
214
220
},
215
221
"repetitions": {
216
222
"description": "All ratings ever given.",
217
223
"type": "integer"
218
224
},
219
225
"retention": {
220
226
"description": "Percent of ratings in the last 30 days that were not again.",
221
227
"maximum": 100,
222
228
"minimum": 0,
223
229
"type": "integer"
224
230
},
225
231
"secondsStudied": {
226
232
"description": "Active study time in the last 365 days.",
227
233
"type": "integer"
228
234
},
229
235
"updatedAt": {
230
236
"format": "datetime",
231
237
"type": "string"
232
238
}
233
239
},
234
240
"required": [
235
241
"learned",
236
242
"learning",
237
243
"repetitions",
238
244
"secondsStudied",
239
245
"activity",
240
246
"activityEnd",
241
247
"updatedAt"
242
248
],
243
249
"type": "object"
244
250
}
245
251
},
246
252
"id": "space.opendeck.profile",
247
253
"lexicon": 1
248
254
}