space.opendeck.session
Schema Diff
+5 -6
Compatibility Analysis
Breaking Changes Detected
5 breaking changes, 2 non-breaking changes.
Breaking Changes (5)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "space.opendeck.session:body", src: "space.opendeck.session:body", tgt: "space.opendeck.session:body.repetitions", kind: "prop", name: Some("repetitions") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "space.opendeck.session:body", src: "space.opendeck.session:body", tgt: "space.opendeck.session:body.reviews", kind: "prop", name: Some("reviews") }
- RemovedVertex RemovedVertex { vertex_id: "space.opendeck.session:body.reviews" }
- ConstraintTightened ConstraintTightened { vertex_id: "space.opendeck.session:body.deck", sort: "maxLength", old_value: "10000", new_value: "640" }
- ConstraintTightened ConstraintTightened { vertex_id: "space.opendeck.session:body.deck", sort: "maxGraphemes", old_value: "1000", new_value: "64" }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "space.opendeck.session:body.repetitions" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "space.opendeck.session:body.deck", sort: "format" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "space.opendeck.session:body.reviews" }
Added Elements
AddedVertex { vertex_id: "space.opendeck.session:body.repetitions" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "space.opendeck.session:body.deck", sort: "maxGraphemes", old_value: "1000", new_value: "64" }
- ConstraintTightened ConstraintTightened { vertex_id: "space.opendeck.session:body.deck", sort: "maxLength", old_value: "10000", new_value: "640" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "space.opendeck.session:body.deck", sort: "format" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "space.opendeck.session:body", src: "space.opendeck.session:body", tgt: "space.opendeck.session:body.repetitions", kind: "prop", name: Some("repetitions") }
- Breaking: RequiredEdgeRemoved { vertex_id: "space.opendeck.session:body", src: "space.opendeck.session:body", tgt: "space.opendeck.session:body.reviews", kind: "prop", name: Some("reviews") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "A finished study session. Written once; the source of study history and activity stats.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"activeSeconds": {
10
10
"description": "Time spent on cards, with idle gaps capped.",
11
11
"type": "integer"
12
12
},
13
13
"again": {
14
14
"type": "integer"
15
15
},
16
16
"deck": {
17
-
"description": "AT-URI of the deck that was studied.",
18
-
"format": "at-uri",
19
-
"maxGraphemes": 1000,
20
-
"maxLength": 10000,
17
+
"description": "Record key (rkey) of the studied deck.",
18
+
"maxGraphemes": 64,
19
+
"maxLength": 640,
21
20
"type": "string"
22
21
},
23
22
"direction": {
24
23
"description": "Study direction; absent means forward (front to back).",
25
24
"enum": [
26
25
"forward",
27
26
"reverse"
28
27
],
29
28
"type": "string"
30
29
},
31
30
"easy": {
32
31
"type": "integer"
33
32
},
34
33
"endedAt": {
35
34
"format": "datetime",
36
35
"type": "string"
37
36
},
38
37
"good": {
39
38
"type": "integer"
40
39
},
41
40
"hard": {
42
41
"type": "integer"
43
42
},
44
43
"newCards": {
45
44
"description": "Cards rated for the first time in this direction.",
46
45
"type": "integer"
47
46
},
48
-
"reviews": {
47
+
"repetitions": {
49
48
"type": "integer"
50
49
},
51
50
"startedAt": {
52
51
"format": "datetime",
53
52
"type": "string"
54
53
}
55
54
},
56
55
"required": [
57
56
"startedAt",
58
57
"endedAt",
59
58
"activeSeconds",
60
-
"reviews",
59
+
"repetitions",
61
60
"again",
62
61
"hard",
63
62
"good",
64
63
"easy",
65
64
"newCards"
66
65
],
67
66
"type": "object"
68
67
},
69
68
"type": "record"
70
69
}
71
70
},
72
71
"id": "space.opendeck.session",
73
72
"lexicon": 1
74
73
}