dev.knotless.comment
Schema Diff
+61 -3
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
-
"description": "Present on a review: `approve`, or `changes` to ask for changes.",
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
}