dev.knotless.comment

lexicons.knotless.dev

Schema Diff

+60 -2

From

CID
bafyreicxkg2d7jg...
Indexed At
2026-10-29 04:27 UTC
View this version

To

CID
bafyreih5fglybku...
Indexed At
2026-10-29 06:54 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 20 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.comment#lineRef", src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.path", kind: "prop", name: Some("path") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "dev.knotless.comment#lineRef", src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.line", kind: "prop", name: Some("line") }
Non-Breaking Changes (20)
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment#lineRef" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment#lineRef.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment#lineRef.path" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment#lineRef.side" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment#lineRef.startLine" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment:body.facets" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment:body.facets:items" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment:body.line" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment:body.reply" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.comment:body.review" }
  • AddedVertex AddedVertex { vertex_id: "dev.knotless.defs#facet" }
  • AddedEdge AddedEdge { src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.side", kind: "prop", name: Some("side") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.startLine", kind: "prop", name: Some("startLine") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.facets", kind: "prop", name: Some("facets") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.line", kind: "prop", name: Some("line") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.reply", kind: "prop", name: Some("reply") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.review", kind: "prop", name: Some("review") }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body.facets", tgt: "dev.knotless.comment:body.facets:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body.facets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "dev.knotless.comment:body.line", tgt: "dev.knotless.comment#lineRef", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "dev.knotless.comment#lineRef" }
  • AddedVertex { vertex_id: "dev.knotless.comment#lineRef.line" }
  • AddedVertex { vertex_id: "dev.knotless.comment#lineRef.path" }
  • AddedVertex { vertex_id: "dev.knotless.comment#lineRef.side" }
  • AddedVertex { vertex_id: "dev.knotless.comment#lineRef.startLine" }
  • AddedVertex { vertex_id: "dev.knotless.comment:body.facets" }
  • AddedVertex { vertex_id: "dev.knotless.comment:body.facets:items" }
  • AddedVertex { vertex_id: "dev.knotless.comment:body.line" }
  • AddedVertex { vertex_id: "dev.knotless.comment:body.reply" }
  • AddedVertex { vertex_id: "dev.knotless.comment:body.review" }
  • AddedVertex { vertex_id: "dev.knotless.defs#facet" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.comment#lineRef", src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.path", kind: "prop", name: Some("path") }
  • Breaking: RequiredEdgeAdded { vertex_id: "dev.knotless.comment#lineRef", src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.line", kind: "prop", name: Some("line") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.side", kind: "prop", name: Some("side") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment#lineRef", tgt: "dev.knotless.comment#lineRef.startLine", kind: "prop", name: Some("startLine") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.facets", kind: "prop", name: Some("facets") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.line", kind: "prop", name: Some("line") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.reply", kind: "prop", name: Some("reply") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body", tgt: "dev.knotless.comment:body.review", kind: "prop", name: Some("review") }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body.facets", tgt: "dev.knotless.comment:body.facets:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body.facets:items", tgt: "dev.knotless.defs#facet", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "dev.knotless.comment:body.line", tgt: "dev.knotless.comment#lineRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "lineRef": {
5 +
      "description": "Lines of a file in a pull's diff, as GitHub's review comments name them.",
6 +
      "properties": {
7 +
        "line": {
8 +
          "description": "The last line commented on, counting from 1.",
9 +
          "minimum": 1,
10 +
          "type": "integer"
11 +
        },
12 +
        "path": {
13 +
          "description": "The file's path on the side commented on.",
14 +
          "maxLength": 1024,
15 +
          "type": "string"
16 +
        },
17 +
        "side": {
18 +
          "description": "`new`, the side the pull brings in, or `old`, the side it leaves, for lines it removes. Absent, `new`.",
19 +
          "knownValues": [
20 +
            "old",
21 +
            "new"
22 +
          ],
23 +
          "maxLength": 16,
24 +
          "type": "string"
25 +
        },
26 +
        "startLine": {
27 +
          "description": "The first, for more than one line; no later than `line`.",
28 +
          "minimum": 1,
29 +
          "type": "integer"
30 +
        }
31 +
      },
32 +
      "required": [
33 +
        "path",
34 +
        "line"
35 +
      ],
36 +
      "type": "object"
37 +
    },
4 38
    "main": {
5 39
      "description": "Kept in the commenter's account; for a private repository, in their repo inside the repository's space.",
6 40
      "key": "tid",
7 41
      "record": {
8 42
        "properties": {
9 43
          "attachments": {
10 44
            "description": "What it carries beside its body: the pictures the body shows. Kinds unknown to a reader are passed over, and kept by a client changing it.",
11 45
            "items": {
12 46
              "refs": [
13 47
                "dev.knotless.defs#image"
14 48
              ],
15 49
              "type": "union"
16 50
            },
17 51
            "maxLength": 32,
18 52
            "type": "array"
19 53
          },
20 54
          "body": {
21 55
            "description": "Markdown.",
22 56
            "maxLength": 20000,
23 57
            "type": "string"
24 58
          },
25 59
          "commit": {
26 -
            "description": "The hex object ID of the head commit a review looked at.",
60 +
            "description": "The hex object ID of the head commit a review looked at, or that a comment's `line` is in.",
27 61
            "maxLength": 64,
28 62
            "minLength": 40,
29 63
            "type": "string"
30 64
          },
31 65
          "createdAt": {
32 66
            "format": "datetime",
33 67
            "type": "string"
34 68
          },
69 +
          "facets": {
70 +
            "description": "The accounts its body mentions, by where: written as it is, from each `@handle` outside code and links.",
71 +
            "items": {
72 +
              "ref": "dev.knotless.defs#facet",
73 +
              "type": "ref"
74 +
            },
75 +
            "maxLength": 50,
76 +
            "type": "array"
77 +
          },
78 +
          "line": {
79 +
            "description": "For a comment on a pull's diff, the lines it is on, in the file as it was at `commit` on that side.",
80 +
            "ref": "#lineRef",
81 +
            "type": "ref"
82 +
          },
83 +
          "reply": {
84 +
            "description": "The dev.knotless.comment, with a `line`, whose thread this answers. An answer has no `line` of its own.",
85 +
            "format": "at-uri",
86 +
            "type": "string"
87 +
          },
35 88
          "repo": {
36 89
            "description": "The repository the pull or issue is on.",
37 90
            "ref": "dev.knotless.defs#repoRef",
38 91
            "type": "ref"
39 92
          },
93 +
          "review": {
94 +
            "description": "The review, a dev.knotless.comment, this was sent with as one of its line comments, all in one write.",
95 +
            "format": "at-uri",
96 +
            "type": "string"
97 +
          },
40 98
          "subject": {
41 99
            "description": "The dev.knotless.pull or dev.knotless.issue commented on.",
42 100
            "format": "at-uri",
43 101
            "type": "string"
44 102
          },
45 103
          "updatedAt": {
46 104
            "description": "When its author last changed its body.",
47 105
            "format": "datetime",
48 106
            "type": "string"
49 107
          },
50 108
          "verdict": {
51 109
            "description": "Present on a review: `approve`, or `changes` to ask for changes. Readers take each reviewer's latest as where they stand, and none from the pull's author.",
52 110
            "knownValues": [
53 111
              "approve",
54 112
              "changes"
55 113
            ],
56 114
            "maxLength": 64,
57 115
            "type": "string"
58 116
          }
59 117
        },
60 118
        "required": [
61 119
          "repo",
62 120
          "subject",
63 121
          "body",
64 122
          "createdAt"
65 123
        ],
66 124
        "type": "object"
67 125
      },
68 126
      "type": "record"
69 127
    }
70 128
  },
71 -
  "description": "A comment on a pull or issue. With a verdict it is a review.",
129 +
  "description": "A comment on a pull or issue. With a verdict it is a review; with a line, a comment on lines of a pull's diff, starting a thread there; with a reply, an answer in such a thread.",
72 130
  "id": "dev.knotless.comment",
73 131
  "lexicon": 1
74 132
}

Compare Other Versions

Lexicon Garden

@