app.standard-reader.sidebarPref
Schema Diff
+22 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 6 non-breaking changes.
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.subscriptionSort" }
- AddedVertex AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.treeOrder" }
- AddedVertex AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.treeOrder:items" }
- AddedEdge AddedEdge { src: "app.standard-reader.sidebarPref:body", tgt: "app.standard-reader.sidebarPref:body.subscriptionSort", kind: "prop", name: Some("subscriptionSort") }
- AddedEdge AddedEdge { src: "app.standard-reader.sidebarPref:body", tgt: "app.standard-reader.sidebarPref:body.treeOrder", kind: "prop", name: Some("treeOrder") }
- AddedEdge AddedEdge { src: "app.standard-reader.sidebarPref:body.treeOrder", tgt: "app.standard-reader.sidebarPref:body.treeOrder:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.subscriptionSort" }AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.treeOrder" }AddedVertex { vertex_id: "app.standard-reader.sidebarPref:body.treeOrder:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.standard-reader.sidebarPref:body", tgt: "app.standard-reader.sidebarPref:body.subscriptionSort", kind: "prop", name: Some("subscriptionSort") }
- Non-breaking: AddedEdge { src: "app.standard-reader.sidebarPref:body", tgt: "app.standard-reader.sidebarPref:body.treeOrder", kind: "prop", name: Some("treeOrder") }
- Non-breaking: AddedEdge { src: "app.standard-reader.sidebarPref:body.treeOrder", tgt: "app.standard-reader.sidebarPref:body.treeOrder:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "A reader's personal sidebar preferences: the display order of their subscription list groups, which groups are collapsed, and which primary nav items are hidden. A singleton record (rkey `self`).",
5
+
"description": "A reader's personal sidebar preferences: the top-level arrangement of list groups and ungrouped subscriptions (one level deep), which groups are collapsed, how automatic sort orders subscriptions, and which primary nav items are hidden. A singleton record (rkey `self`).",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
9
"collapsed": {
10
10
"description": "AT URIs of the list groups the reader has collapsed in the sidebar.",
11
11
"items": {
12
12
"format": "at-uri",
13
13
"type": "string"
14
14
},
15
15
"maxLength": 1000,
16
16
"type": "array"
17
17
},
18
18
"customizeNav": {
19
19
"description": "Whether the reader has enabled 'Customize sidebar'. When true, the `hiddenNav` items are hidden; when false or absent, every primary nav item is shown regardless of `hiddenNav`.",
20
20
"type": "boolean"
21
21
},
22
22
"hiddenNav": {
23
23
"description": "Stable ids of the primary sidebar nav items the reader has hidden (e.g. 'home', 'latest', 'discover', 'search', 'saved', 'collections'). Subscriptions and its list groups are never hideable.",
24
24
"items": {
25
25
"maxLength": 64,
26
26
"type": "string"
27
27
},
28
28
"maxLength": 32,
29
29
"type": "array"
30
30
},
31
31
"listOrder": {
32
-
"description": "Ordered AT URIs of the reader's list groups (own + saved) as shown top-to-bottom in the sidebar. Groups not present are appended in their default order.",
32
+
"description": "Legacy: ordered AT URIs of the reader's list groups (own + saved), used as a fallback top-level list order only while `treeOrder` is empty. Superseded by `treeOrder`, which also carries ungrouped subscriptions interleaved with lists; new writes should prefer `treeOrder`.",
33
33
"items": {
34
34
"format": "at-uri",
35
35
"type": "string"
36
36
},
37
37
"maxLength": 1000,
38
38
"type": "array"
39
39
},
40
+
"subscriptionSort": {
41
+
"description": "How the sidebar's subscriptions are ordered: 'default' (the reader's manual arrangement per `treeOrder`, or natural/stored order — the default), 'recent' (most recent activity first, interleaving publications and people), 'alpha' (name), or 'unread' (highest unread count first). Absent means 'default'.",
42
+
"knownValues": [
43
+
"default",
44
+
"recent",
45
+
"alpha",
46
+
"unread"
47
+
],
48
+
"maxLength": 16,
49
+
"type": "string"
50
+
},
51
+
"treeOrder": {
52
+
"description": "Manual top-level order of the sidebar's subscriptions tree: list-group AT URIs interleaved with ungrouped publication AT URIs / person DIDs, exactly as arranged via drag-and-drop. Applies only when `subscriptionSort` is 'default'. Entries not present are appended in their natural order. Takes precedence over the legacy `listOrder` once populated.",
53
+
"items": {
54
+
"maxLength": 512,
55
+
"type": "string"
56
+
},
57
+
"maxLength": 2000,
58
+
"type": "array"
59
+
},
40
60
"updatedAt": {
41
61
"description": "When these preferences were last changed.",
42
62
"format": "datetime",
43
63
"type": "string"
44
64
}
45
65
},
46
66
"required": [
47
67
"updatedAt"
48
68
],
49
69
"type": "object"
50
70
},
51
71
"type": "record"
52
72
}
53
73
},
54
74
"id": "app.standard-reader.sidebarPref",
55
75
"lexicon": 1
56
76
}