world.treeline.actor.preferences
Schema Diff
+30 -0
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 8 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "world.treeline.actor.preferences#sportGearDefault", src: "world.treeline.actor.preferences#sportGearDefault", tgt: "world.treeline.actor.preferences#sportGearDefault.sport", kind: "prop", name: Some("sport") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "world.treeline.actor.preferences#sportGearDefault", src: "world.treeline.actor.preferences#sportGearDefault", tgt: "world.treeline.actor.preferences#sportGearDefault.gearUri", kind: "prop", name: Some("gearUri") }
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault" }
- AddedVertex AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault.gearUri" }
- AddedVertex AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault.sport" }
- AddedVertex AddedVertex { vertex_id: "world.treeline.actor.preferences:body.defaultGear" }
- AddedVertex AddedVertex { vertex_id: "world.treeline.actor.preferences:body.defaultGear:items" }
- AddedEdge AddedEdge { src: "world.treeline.actor.preferences:body", tgt: "world.treeline.actor.preferences:body.defaultGear", kind: "prop", name: Some("defaultGear") }
- AddedEdge AddedEdge { src: "world.treeline.actor.preferences:body.defaultGear", tgt: "world.treeline.actor.preferences:body.defaultGear:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "world.treeline.actor.preferences:body.defaultGear:items", tgt: "world.treeline.actor.preferences#sportGearDefault", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault" }AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault.gearUri" }AddedVertex { vertex_id: "world.treeline.actor.preferences#sportGearDefault.sport" }AddedVertex { vertex_id: "world.treeline.actor.preferences:body.defaultGear" }AddedVertex { vertex_id: "world.treeline.actor.preferences:body.defaultGear:items" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "world.treeline.actor.preferences#sportGearDefault", src: "world.treeline.actor.preferences#sportGearDefault", tgt: "world.treeline.actor.preferences#sportGearDefault.sport", kind: "prop", name: Some("sport") }
- Breaking: RequiredEdgeAdded { vertex_id: "world.treeline.actor.preferences#sportGearDefault", src: "world.treeline.actor.preferences#sportGearDefault", tgt: "world.treeline.actor.preferences#sportGearDefault.gearUri", kind: "prop", name: Some("gearUri") }
- Non-breaking: AddedEdge { src: "world.treeline.actor.preferences:body", tgt: "world.treeline.actor.preferences:body.defaultGear", kind: "prop", name: Some("defaultGear") }
- Non-breaking: AddedEdge { src: "world.treeline.actor.preferences:body.defaultGear", tgt: "world.treeline.actor.preferences:body.defaultGear:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "world.treeline.actor.preferences:body.defaultGear:items", tgt: "world.treeline.actor.preferences#sportGearDefault", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Athlete display units, default sports, and privacy preferences for Treeline.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"allowReuse": {
10
10
"default": "coAthletes",
11
11
"description": "Who may save this athlete's public activities as their own: 'coAthletes' (tagged co-athletes and confirmed group matches, the default), 'everyone' (co-athletes save as an activity; anyone else saves as a route), or 'nobody'. Unset means 'coAthletes'.",
12
12
"knownValues": [
13
13
"everyone",
14
14
"coAthletes",
15
15
"nobody"
16
16
],
17
17
"type": "string"
18
18
},
19
+
"defaultGear": {
20
+
"description": "Per-sport default gear. Preselected in the upload and edit pickers and used as the default for the gear backfill. One entry per sport; gear that is retired or deleted is ignored.",
21
+
"items": {
22
+
"ref": "#sportGearDefault",
23
+
"type": "ref"
24
+
},
25
+
"maxLength": 32,
26
+
"type": "array"
27
+
},
19
28
"defaultHideStartEndMeters": {
20
29
"default": 0,
21
30
"description": "Default distance in meters trimmed from start and end for privacy.",
22
31
"maximum": 100000,
23
32
"minimum": 0,
24
33
"type": "integer"
25
34
},
26
35
"defaultPrivacy": {
27
36
"default": "public",
28
37
"description": "Default visibility setting for new activities ('public' or 'unlisted'). Restricted/private training logs and groups/circles belong to ATProto Permissioned Spaces (Proposal 0016). Historical values ('followers', 'private', 'permissioned') are retained for schema compatibility.",
29
38
"knownValues": [
30
39
"public",
31
40
"unlisted",
32
41
"followers",
33
42
"private",
34
43
"permissioned"
35
44
],
36
45
"type": "string"
37
46
},
38
47
"defaultSport": {
39
48
"description": "Default sport category selected when recording or uploading activities.",
40
49
"type": "string"
41
50
},
42
51
"distanceUnits": {
43
52
"default": "km",
44
53
"description": "Preferred unit of measurement for distance.",
45
54
"knownValues": [
46
55
"km",
47
56
"mi"
48
57
],
49
58
"type": "string"
50
59
},
51
60
"elevationUnits": {
52
61
"default": "m",
53
62
"description": "Preferred unit of measurement for elevation.",
54
63
"knownValues": [
55
64
"m",
56
65
"ft"
57
66
],
58
67
"type": "string"
59
68
},
60
69
"temperatureUnits": {
61
70
"default": "c",
62
71
"description": "Preferred unit of measurement for temperature.",
63
72
"knownValues": [
64
73
"c",
65
74
"f"
66
75
],
67
76
"type": "string"
68
77
},
69
78
"unitSystem": {
70
79
"description": "[Deprecated in v0.10: Use distanceUnits, elevationUnits, temperatureUnits] Legacy unit system.",
71
80
"knownValues": [
72
81
"metric",
73
82
"imperial"
74
83
],
75
84
"type": "string"
76
85
},
77
86
"updatedAt": {
78
87
"description": "Timestamp when preferences were last updated.",
79
88
"format": "datetime",
80
89
"type": "string"
81
90
}
82
91
},
83
92
"type": "object"
84
93
},
85
94
"type": "record"
95
+
},
96
+
"sportGearDefault": {
97
+
"properties": {
98
+
"gearUri": {
99
+
"description": "AT-URI of the world.treeline.gear.item to use by default for this sport.",
100
+
"format": "at-uri",
101
+
"maxLength": 512,
102
+
"type": "string"
103
+
},
104
+
"sport": {
105
+
"description": "Sport identifier, as used in activity.sport.",
106
+
"maxGraphemes": 64,
107
+
"maxLength": 64,
108
+
"type": "string"
109
+
}
110
+
},
111
+
"required": [
112
+
"sport",
113
+
"gearUri"
114
+
],
115
+
"type": "object"
86
116
}
87
117
},
88
118
"id": "world.treeline.actor.preferences",
89
119
"lexicon": 1
90
120
}