app.standard-reader.sidebarPref

standard-reader.app

Schema Diff

+22 -2

From

CID
bafyreigksjecpbi...
Indexed At
2026-07-25 03:10 UTC
View this version

To

CID
bafyreibwn5tmw2b...
Indexed At
2026-07-26 02:51 UTC
View this version

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
  "id": "app.standard-reader.sidebarPref",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "literal:self",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "updatedAt"
11 11
        ],
12 12
        "properties": {
13 13
          "collapsed": {
14 14
            "type": "array",
15 15
            "items": {
16 16
              "type": "string",
17 17
              "format": "at-uri"
18 18
            },
19 19
            "maxLength": 1000,
20 20
            "description": "AT URIs of the list groups the reader has collapsed in the sidebar."
21 21
          },
22 22
          "hiddenNav": {
23 23
            "type": "array",
24 24
            "items": {
25 25
              "type": "string",
26 26
              "maxLength": 64
27 27
            },
28 28
            "maxLength": 32,
29 29
            "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."
30 30
          },
31 31
          "listOrder": {
32 32
            "type": "array",
33 33
            "items": {
34 34
              "type": "string",
35 35
              "format": "at-uri"
36 36
            },
37 37
            "maxLength": 1000,
38 -
            "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."
38 +
            "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`."
39 +
          },
40 +
          "treeOrder": {
41 +
            "type": "array",
42 +
            "items": {
43 +
              "type": "string",
44 +
              "maxLength": 512
45 +
            },
46 +
            "maxLength": 2000,
47 +
            "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."
39 48
          },
40 49
          "updatedAt": {
41 50
            "type": "string",
42 51
            "format": "datetime",
43 52
            "description": "When these preferences were last changed."
44 53
          },
45 54
          "customizeNav": {
46 55
            "type": "boolean",
47 56
            "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`."
57 +
          },
58 +
          "subscriptionSort": {
59 +
            "type": "string",
60 +
            "maxLength": 16,
61 +
            "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'.",
62 +
            "knownValues": [
63 +
              "default",
64 +
              "recent",
65 +
              "alpha",
66 +
              "unread"
67 +
            ]
48 68
          }
49 69
        }
50 70
      },
51 -
      "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`)."
71 +
      "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`)."
52 72
    }
53 73
  },
54 74
  "$type": "com.atproto.lexicon.schema",
55 75
  "lexicon": 1
56 76
}

Compare Other Versions

Lexicon Garden

@