app.bulleted.outline

lexicons.bulleted.app

Schema Diff

+23 -1

From

CID
bafyreiem3rxz7qc...
Indexed At
2026-08-06 10:43 UTC
View this version

To

CID
bafyreiebpctvcmm...
Indexed At
2026-08-16 00:07 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

1 breaking change, 7 non-breaking changes.

Breaking Changes (1)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.bulleted.outline#contributor", src: "app.bulleted.outline#contributor", tgt: "app.bulleted.outline#contributor.did", kind: "prop", name: Some("did") }
Non-Breaking Changes (7)
  • AddedVertex AddedVertex { vertex_id: "app.bulleted.outline#contributor" }
  • AddedVertex AddedVertex { vertex_id: "app.bulleted.outline#contributor.did" }
  • AddedVertex AddedVertex { vertex_id: "app.bulleted.outline:body.contributors" }
  • AddedVertex AddedVertex { vertex_id: "app.bulleted.outline:body.contributors:items" }
  • AddedEdge AddedEdge { src: "app.bulleted.outline:body", tgt: "app.bulleted.outline:body.contributors", kind: "prop", name: Some("contributors") }
  • AddedEdge AddedEdge { src: "app.bulleted.outline:body.contributors", tgt: "app.bulleted.outline:body.contributors:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "app.bulleted.outline:body.contributors:items", tgt: "app.bulleted.outline#contributor", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.bulleted.outline#contributor" }
  • AddedVertex { vertex_id: "app.bulleted.outline#contributor.did" }
  • AddedVertex { vertex_id: "app.bulleted.outline:body.contributors" }
  • AddedVertex { vertex_id: "app.bulleted.outline:body.contributors:items" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "app.bulleted.outline#contributor", src: "app.bulleted.outline#contributor", tgt: "app.bulleted.outline#contributor.did", kind: "prop", name: Some("did") }
  • Non-breaking: AddedEdge { src: "app.bulleted.outline:body", tgt: "app.bulleted.outline:body.contributors", kind: "prop", name: Some("contributors") }
  • Non-breaking: AddedEdge { src: "app.bulleted.outline:body.contributors", tgt: "app.bulleted.outline:body.contributors:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "app.bulleted.outline:body.contributors:items", tgt: "app.bulleted.outline#contributor", kind: "ref", name: None }
1 1
{
2 2
  "id": "app.bulleted.outline",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "any",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 10
          "createdAt"
11 11
        ],
12 12
        "properties": {
13 13
          "root": {
14 14
            "type": "string",
15 15
            "format": "at-uri",
16 16
            "description": "The node at the top of this outline. Absent means the whole forest; present if and only if the record key is not 'self'. The Lexicon cannot express that conditional, so the application enforces it."
17 17
          },
18 18
          "image": {
19 19
            "type": "blob",
20 20
            "accept": [
21 21
              "image/png",
22 22
              "image/jpeg",
23 23
              "image/webp"
24 24
            ],
25 25
            "maxSize": 1000000,
26 26
            "description": "Preview image for link cards and og:image. SVG is deliberately excluded because it can carry script."
27 27
          },
28 28
          "title": {
29 29
            "type": "string",
30 30
            "maxLength": 1000,
31 31
            "description": "Display title for the outline.",
32 32
            "maxGraphemes": 200
33 33
          },
34 34
          "imageAlt": {
35 35
            "type": "string",
36 36
            "maxLength": 2000,
37 37
            "description": "Alt text for image. Required whenever image is present; enforced by the application."
38 38
          },
39 39
          "createdAt": {
40 40
            "type": "string",
41 41
            "format": "datetime",
42 42
            "description": "When the outline was created."
43 43
          },
44 44
          "description": {
45 45
            "type": "string",
46 46
            "maxLength": 3000,
47 47
            "description": "Longer summary of the outline.",
48 48
            "maxGraphemes": 600
49 +
          },
50 +
          "contributors": {
51 +
            "type": "array",
52 +
            "items": {
53 +
              "ref": "#contributor",
54 +
              "type": "ref"
55 +
            },
56 +
            "description": "Identities whose records render inside this outline at this level and below, interleaved with the author's own. Absent inherits the nearest ancestor record's list; an empty array grants nobody and stops inheriting. How many are rendered is bounded by the application, not here. The Lexicon cannot express any of that, so the application enforces all of it."
49 57
          }
50 58
        }
51 59
      },
52 -
      "description": "Titles and describes an outline. Record key 'self' means the identity's whole forest; any other key names the subtree at 'root'. The key is 'any' rather than 'tid' because 'self' is not a TID."
60 +
      "description": "Titles and describes an outline, and names who may contribute to it. Record key 'self' means the identity's whole forest; any other key names the subtree at 'root'. The key is 'any' rather than 'tid' because 'self' is not a TID."
61 +
    },
62 +
    "contributor": {
63 +
      "type": "object",
64 +
      "required": [
65 +
        "did"
66 +
      ],
67 +
      "properties": {
68 +
        "did": {
69 +
          "type": "string",
70 +
          "format": "did",
71 +
          "description": "The contributing identity. A DID and never a handle: a handle is a lease, and a grant that followed one would move when the name did."
72 +
        }
73 +
      },
74 +
      "description": "One identity admitted to this level. An object rather than a bare DID string so an entry can gain a field — a role, a colour, a grant timestamp — without a breaking change."
53 75
    }
54 76
  },
55 77
  "$type": "com.atproto.lexicon.schema",
56 78
  "lexicon": 1
57 79
}

Compare Other Versions

Lexicon Garden

@