world.treeline.actor.preferences

treeline.world

Schema Diff

+30 -0

From

CID
bafyreih4ntick7d...
Indexed At
2026-10-04 16:30 UTC
View this version

To

CID
bafyreig6hezzh73...
Indexed At
2026-10-05 16:16 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@