world.treeline.actor.preferences

treeline.world

Schema Diff

+40 -0

From

CID
bafyreibhr5y4zzm...
Indexed At
2026-09-25 14:12 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, 10 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 (10)
  • 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.allowReuse" }
  • 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.allowReuse", kind: "prop", name: Some("allowReuse") }
  • 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.allowReuse" }
  • 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.allowReuse", kind: "prop", name: Some("allowReuse") }
  • 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 +
          "allowReuse": {
10 +
            "default": "coAthletes",
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 +
            "knownValues": [
13 +
              "everyone",
14 +
              "coAthletes",
15 +
              "nobody"
16 +
            ],
17 +
            "type": "string"
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 +
          },
9 28
          "defaultHideStartEndMeters": {
10 29
            "default": 0,
11 30
            "description": "Default distance in meters trimmed from start and end for privacy.",
12 31
            "maximum": 100000,
13 32
            "minimum": 0,
14 33
            "type": "integer"
15 34
          },
16 35
          "defaultPrivacy": {
17 36
            "default": "public",
18 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.",
19 38
            "knownValues": [
20 39
              "public",
21 40
              "unlisted",
22 41
              "followers",
23 42
              "private",
24 43
              "permissioned"
25 44
            ],
26 45
            "type": "string"
27 46
          },
28 47
          "defaultSport": {
29 48
            "description": "Default sport category selected when recording or uploading activities.",
30 49
            "type": "string"
31 50
          },
32 51
          "distanceUnits": {
33 52
            "default": "km",
34 53
            "description": "Preferred unit of measurement for distance.",
35 54
            "knownValues": [
36 55
              "km",
37 56
              "mi"
38 57
            ],
39 58
            "type": "string"
40 59
          },
41 60
          "elevationUnits": {
42 61
            "default": "m",
43 62
            "description": "Preferred unit of measurement for elevation.",
44 63
            "knownValues": [
45 64
              "m",
46 65
              "ft"
47 66
            ],
48 67
            "type": "string"
49 68
          },
50 69
          "temperatureUnits": {
51 70
            "default": "c",
52 71
            "description": "Preferred unit of measurement for temperature.",
53 72
            "knownValues": [
54 73
              "c",
55 74
              "f"
56 75
            ],
57 76
            "type": "string"
58 77
          },
59 78
          "unitSystem": {
60 79
            "description": "[Deprecated in v0.10: Use distanceUnits, elevationUnits, temperatureUnits] Legacy unit system.",
61 80
            "knownValues": [
62 81
              "metric",
63 82
              "imperial"
64 83
            ],
65 84
            "type": "string"
66 85
          },
67 86
          "updatedAt": {
68 87
            "description": "Timestamp when preferences were last updated.",
69 88
            "format": "datetime",
70 89
            "type": "string"
71 90
          }
72 91
        },
73 92
        "type": "object"
74 93
      },
75 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"
76 116
    }
77 117
  },
78 118
  "id": "world.treeline.actor.preferences",
79 119
  "lexicon": 1
80 120
}

Compare Other Versions

Lexicon Garden

@