@vintasoftware/pr-review-canvas 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +9 -3
  2. package/docs/reference.md +99 -99
  3. package/package.json +12 -3
  4. package/pr-review.config.example.yml +4 -4
  5. package/skills/pr-review-canvas/SKILL.md +8 -1
  6. package/src/acpx/acpx.ts +21 -4
  7. package/src/acpx/events.ts +5 -1
  8. package/src/acpx/ndjson.ts +3 -1
  9. package/src/acpx/preflight.ts +5 -1
  10. package/src/canvas/export.ts +11 -2
  11. package/src/canvas/zip.ts +4 -1
  12. package/src/chat/chat-manager.ts +16 -3
  13. package/src/chat/context.ts +10 -3
  14. package/src/chat/seed.ts +3 -1
  15. package/src/cli.ts +12 -2
  16. package/src/commands.ts +41 -9
  17. package/src/config.ts +15 -3
  18. package/src/contract/comments.ts +3 -1
  19. package/src/contract/generation-context.ts +3 -1
  20. package/src/contract/review-artifact.ts +14 -8
  21. package/src/contract/state.ts +3 -1
  22. package/src/git/diff-collector.ts +2 -1
  23. package/src/git/git.ts +9 -4
  24. package/src/github/capabilities.ts +5 -1
  25. package/src/github/comments.ts +6 -3
  26. package/src/github/gh.ts +18 -3
  27. package/src/github/post-comment.ts +4 -1
  28. package/src/github/pr.ts +4 -1
  29. package/src/github/threads.ts +5 -1
  30. package/src/project-config.ts +12 -9
  31. package/src/prompt-files.ts +4 -3
  32. package/src/review/doctor.ts +9 -2
  33. package/src/review/normalize.ts +3 -1
  34. package/src/review/prepare.ts +24 -8
  35. package/src/review/prompt.ts +8 -2
  36. package/src/review/publish.ts +15 -3
  37. package/src/review/trim-caps.ts +10 -6
  38. package/src/review/validate.ts +65 -13
  39. package/src/server/app.ts +12 -4
  40. package/src/server/bundle.ts +17 -4
  41. package/src/server/context.ts +14 -2
  42. package/src/server/errors.ts +26 -2
  43. package/src/server/html.ts +2 -2
  44. package/src/server/node-server.ts +4 -2
  45. package/src/server/routes/api.ts +29 -5
  46. package/src/server/routes/chat-routes.ts +30 -9
  47. package/src/server/routes/pages.ts +3 -1
  48. package/src/server/routes/review-routes.ts +19 -4
  49. package/src/server/sse.ts +3 -1
  50. package/src/store/atomic-json.ts +5 -1
  51. package/src/store/canvas-store.ts +20 -6
  52. package/src/store/derived-store.ts +5 -1
  53. package/src/store/pr-store.ts +2 -1
  54. package/src/store/state-store.ts +2 -1
  55. package/static/brand.svg +19 -0
  56. package/static/js/api.js +15 -3
  57. package/static/js/app.js +8 -2
  58. package/static/js/chat-panel.js +93 -0
  59. package/static/js/chat.js +38 -15
  60. package/static/js/composer.js +6 -3
  61. package/static/js/diagram.js +2 -1
  62. package/static/js/diff-decorations.js +5 -3
  63. package/static/js/diff-renderer.js +6 -1
  64. package/static/js/dom.js +5 -7
  65. package/static/js/empty-state.js +3 -1
  66. package/static/js/header.js +1 -1
  67. package/static/js/interactions.js +55 -15
  68. package/static/js/keyboard.js +7 -2
  69. package/static/js/layers.js +23 -11
  70. package/static/js/links.js +8 -2
  71. package/static/js/nav.js +5 -2
  72. package/static/js/overview.js +32 -4
  73. package/static/js/points.js +3 -2
  74. package/static/js/progress.js +2 -1
  75. package/static/js/proposed-comment.js +4 -1
  76. package/static/js/quick-questions.js +2 -1
  77. package/static/js/regenerate.js +4 -1
  78. package/static/js/signoff.js +6 -2
  79. package/static/styles/base.css +16 -6
  80. package/static/styles/chat-panel.css +81 -0
  81. package/static/styles/chat-tools.css +28 -0
  82. package/static/styles/chat.css +1 -1
  83. package/static/styles/commands.css +4 -4
  84. package/static/styles/diff.css +1 -1
  85. package/static/styles/header.css +18 -4
  86. package/static/styles/layout.css +4 -4
  87. package/static/styles/responsive.css +1 -15
  88. package/static/styles/review.css +24 -3
  89. package/static/styles/skin-github.css +93 -100
  90. package/static/styles.css +13 -12
@@ -14,10 +14,10 @@
14
14
  line-height: inherit;
15
15
  }
16
16
  .cmd::before {
17
- content: "[ ";
17
+ content: '[ ';
18
18
  }
19
19
  .cmd::after {
20
- content: " ]";
20
+ content: ' ]';
21
21
  }
22
22
  .cmd:hover {
23
23
  text-decoration: underline;
@@ -25,12 +25,12 @@
25
25
  text-decoration-thickness: 2px;
26
26
  }
27
27
  .cmd:disabled,
28
- .cmd[aria-disabled="true"] {
28
+ .cmd[aria-disabled='true'] {
29
29
  color: var(--fg-dim);
30
30
  cursor: not-allowed;
31
31
  text-decoration: none;
32
32
  }
33
- .cmd[aria-busy="true"] {
33
+ .cmd[aria-busy='true'] {
34
34
  color: var(--fg-muted);
35
35
  cursor: progress;
36
36
  }
@@ -127,7 +127,7 @@ tr.thread.hidden-thread .x {
127
127
  font-size: 12px;
128
128
  }
129
129
  tr.is-approx .x::before {
130
- content: "near line ";
130
+ content: 'near line ';
131
131
  color: var(--fg-muted);
132
132
  font-size: 11px;
133
133
  }
@@ -20,12 +20,26 @@
20
20
  text-transform: uppercase;
21
21
  font-size: 12px;
22
22
  }
23
- .brand .box {
24
- border: 2px solid var(--ink);
25
- padding: 2px 8px;
26
- box-shadow: 3px 3px 0 var(--shadow);
23
+ .brand-wordmark {
24
+ position: relative;
25
+ display: inline-flex;
26
+ align-items: center;
27
+ min-height: 32px;
28
+ padding-left: 40px;
29
+ white-space: nowrap;
27
30
  color: var(--fg);
28
31
  }
32
+ .brand-icon {
33
+ position: absolute;
34
+ left: 0;
35
+ top: 50%;
36
+ transform: translateY(-50%);
37
+ width: 32px;
38
+ height: 32px;
39
+ }
40
+ .brand {
41
+ flex-wrap: wrap;
42
+ }
29
43
  .hdr-actions {
30
44
  display: flex;
31
45
  flex-wrap: wrap;
@@ -31,8 +31,8 @@
31
31
  display: grid;
32
32
  grid-template-columns: auto auto minmax(0, 1fr);
33
33
  grid-template-areas:
34
- "d n t"
35
- "d n m";
34
+ 'd n t'
35
+ 'd n m';
36
36
  column-gap: 8px;
37
37
  padding: 6px 14px 6px 12px;
38
38
  color: var(--fg);
@@ -44,8 +44,8 @@
44
44
  .tree a:not(:has(.dot)) {
45
45
  grid-template-columns: minmax(0, 1fr);
46
46
  grid-template-areas:
47
- "t"
48
- "m";
47
+ 't'
48
+ 'm';
49
49
  }
50
50
  .tree a:hover {
51
51
  background: var(--panel-2);
@@ -4,25 +4,11 @@
4
4
  grid-template-columns: var(--rail-w) minmax(0, 1fr);
5
5
  background: linear-gradient(var(--ink), var(--ink)) calc(var(--rail-w) - 1px) 0 / 1px 100% no-repeat;
6
6
  }
7
- .chat {
8
- grid-column: 2;
9
- position: static;
10
- align-self: auto;
11
- height: auto;
12
- border-top: 2px solid var(--ink);
13
- padding: 0;
14
- }
15
- .transcript {
16
- max-height: 50vh;
17
- }
18
7
  .handle {
19
8
  display: none;
20
9
  }
21
10
  }
22
11
  @media (max-width: 1000px) {
23
- .chat {
24
- grid-column: 1 / -1;
25
- }
26
12
  .layout,
27
13
  .layout.no-chat {
28
14
  grid-template-columns: minmax(0, 1fr);
@@ -53,7 +39,7 @@
53
39
  }
54
40
  .tree a,
55
41
  .tree a:not(:has(.dot)) {
56
- grid-template-areas: "d n t";
42
+ grid-template-areas: 'd n t';
57
43
  grid-template-columns: auto auto minmax(0, 1fr);
58
44
  align-items: center;
59
45
  border: 1px solid var(--ink);
@@ -52,7 +52,7 @@
52
52
  cursor: pointer;
53
53
  transition: transform 0.12s ease-out;
54
54
  }
55
- .chev[aria-expanded="true"] {
55
+ .chev[aria-expanded='true'] {
56
56
  transform: rotate(90deg);
57
57
  }
58
58
  .body {
@@ -323,6 +323,21 @@
323
323
  .pr-desc {
324
324
  border-top: 1px solid var(--ink);
325
325
  }
326
+ .review-history {
327
+ border-top: 1px solid var(--line);
328
+ }
329
+ .review-entry > .pill {
330
+ margin-bottom: 10px;
331
+ }
332
+ .review-entry .cmt {
333
+ row-gap: 8px;
334
+ }
335
+ .review-entry .who {
336
+ display: flex;
337
+ flex-wrap: wrap;
338
+ align-items: baseline;
339
+ gap: 4px 10px;
340
+ }
326
341
  /* A <details> summary reads like a card header: the chevron before the title is its toggle. The row
327
342
  itself keeps the default cursor and no hover background; the native <details> handles the click. */
328
343
  summary {
@@ -469,5 +484,11 @@ details[open] > summary .chev {
469
484
  margin: 0;
470
485
  }
471
486
 
472
- .prose img { max-width: 100%; height: auto; }
473
- img.av { object-fit: cover; border-radius: 50%; }
487
+ .prose img {
488
+ max-width: 100%;
489
+ height: auto;
490
+ }
491
+ img.av {
492
+ object-fit: cover;
493
+ border-radius: 50%;
494
+ }
@@ -9,7 +9,7 @@
9
9
 
10
10
  Dark is GitHub's "dark dimmed": a softer grey-blue ground rather than the near-black one. */
11
11
 
12
- :root[data-skin="github"] {
12
+ :root[data-skin='github'] {
13
13
  --r: 6px;
14
14
  --gap: 16px;
15
15
  --main-pad: 16px 16px 40px;
@@ -70,45 +70,38 @@
70
70
  }
71
71
 
72
72
  /* ---- Header ---- */
73
- [data-skin="github"] .hdr-bar {
73
+ [data-skin='github'] .hdr-bar {
74
74
  background: light-dark(#ffffff, #151b23);
75
75
  }
76
76
 
77
- [data-skin="github"] .brand {
77
+ [data-skin='github'] .brand {
78
78
  text-transform: none;
79
79
  letter-spacing: normal;
80
80
  font-size: 14px;
81
- align-items: center;
82
- }
83
- [data-skin="github"] .brand .box {
84
- border-width: 1px;
85
- border-radius: var(--r);
86
- background: var(--panel-2);
87
- padding: 3px 8px;
88
81
  }
89
82
  /* The rainbow bar becomes the hairline that runs under GitHub's page header. */
90
- [data-skin="github"] .stripe {
83
+ [data-skin='github'] .stripe {
91
84
  height: 1px;
92
85
  background: var(--ink);
93
86
  }
94
- [data-skin="github"] .hdr-actions {
87
+ [data-skin='github'] .hdr-actions {
95
88
  gap: 8px;
96
89
  align-items: center;
97
90
  }
98
- [data-skin="github"] .hdr-title {
91
+ [data-skin='github'] .hdr-title {
99
92
  padding-bottom: 16px;
100
93
  }
101
94
 
102
95
  /* ---- Commands ---- */
103
- [data-skin="github"] .cmd::before,
104
- [data-skin="github"] .cmd::after {
96
+ [data-skin='github'] .cmd::before,
97
+ [data-skin='github'] .cmd::after {
105
98
  content: none;
106
99
  }
107
- [data-skin="github"] .cmd {
100
+ [data-skin='github'] .cmd {
108
101
  font-weight: 500;
109
102
  }
110
103
  /* The header's commands read as GitHub's toolbar buttons; commands inside the page stay links. */
111
- [data-skin="github"] .hdr-actions .cmd {
104
+ [data-skin='github'] .hdr-actions .cmd {
112
105
  padding: 3px 12px;
113
106
  border: 1px solid var(--line);
114
107
  border-radius: var(--r);
@@ -117,16 +110,16 @@
117
110
  font-size: 12px;
118
111
  line-height: 20px;
119
112
  }
120
- [data-skin="github"] .hdr-actions .cmd:hover {
113
+ [data-skin='github'] .hdr-actions .cmd:hover {
121
114
  background: var(--btn-bg-hover);
122
115
  text-decoration: none;
123
116
  }
124
- [data-skin="github"] .hdr-actions .cmd:disabled,
125
- [data-skin="github"] .hdr-actions .cmd[aria-disabled="true"] {
117
+ [data-skin='github'] .hdr-actions .cmd:disabled,
118
+ [data-skin='github'] .hdr-actions .cmd[aria-disabled='true'] {
126
119
  color: var(--fg-dim);
127
120
  }
128
- [data-skin="github"] .cmd.fill,
129
- [data-skin="github"] .cmd.big {
121
+ [data-skin='github'] .cmd.fill,
122
+ [data-skin='github'] .cmd.big {
130
123
  border: 1px solid transparent;
131
124
  border-radius: var(--r);
132
125
  background: var(--btn-primary);
@@ -134,56 +127,56 @@
134
127
  box-shadow: none;
135
128
  padding: 5px 16px;
136
129
  }
137
- [data-skin="github"] .cmd.big {
130
+ [data-skin='github'] .cmd.big {
138
131
  padding: 8px 20px;
139
132
  font-size: 14px;
140
133
  }
141
- [data-skin="github"] .cmd.fill:hover,
142
- [data-skin="github"] .cmd.big:hover,
143
- [data-skin="github"] .cmd.fill:active {
134
+ [data-skin='github'] .cmd.fill:hover,
135
+ [data-skin='github'] .cmd.big:hover,
136
+ [data-skin='github'] .cmd.fill:active {
144
137
  background: var(--btn-primary-hover);
145
138
  transform: none;
146
139
  box-shadow: none;
147
140
  }
148
- [data-skin="github"] .chat-composer .cmd.fill {
141
+ [data-skin='github'] .chat-composer .cmd.fill {
149
142
  box-shadow: none;
150
143
  }
151
144
 
152
145
  /* ---- Pills: GitHub's rounded labels, with the state ones filled ---- */
153
- [data-skin="github"] .pill {
146
+ [data-skin='github'] .pill {
154
147
  border-radius: 2em;
155
148
  padding: 0 8px;
156
149
  font-size: 12px;
157
150
  line-height: 20px;
158
151
  border-color: var(--line);
159
152
  }
160
- [data-skin="github"] .pill.open,
161
- [data-skin="github"] .pill.merged,
162
- [data-skin="github"] .pill.closed,
163
- [data-skin="github"] .pill.draft {
153
+ [data-skin='github'] .pill.open,
154
+ [data-skin='github'] .pill.merged,
155
+ [data-skin='github'] .pill.closed,
156
+ [data-skin='github'] .pill.draft {
164
157
  border-color: transparent;
165
158
  color: #ffffff;
166
159
  }
167
- [data-skin="github"] .pill.open {
160
+ [data-skin='github'] .pill.open {
168
161
  background: light-dark(#1f883d, #347d39);
169
162
  }
170
- [data-skin="github"] .pill.merged {
163
+ [data-skin='github'] .pill.merged {
171
164
  background: light-dark(#8250df, #8256d0);
172
165
  }
173
- [data-skin="github"] .pill.closed {
166
+ [data-skin='github'] .pill.closed {
174
167
  background: light-dark(#cf222e, #c93c37);
175
168
  }
176
- [data-skin="github"] .pill.draft {
169
+ [data-skin='github'] .pill.draft {
177
170
  background: light-dark(#6e7781, #636e7b);
178
171
  }
179
- [data-skin="github"] .pill.risk,
180
- [data-skin="github"] .pill.kind,
181
- [data-skin="github"] .pill.agent {
172
+ [data-skin='github'] .pill.risk,
173
+ [data-skin='github'] .pill.kind,
174
+ [data-skin='github'] .pill.agent {
182
175
  background: var(--panel-2);
183
176
  color: var(--fg-muted);
184
177
  font-weight: 500;
185
178
  }
186
- [data-skin="github"] .pill.test-tag {
179
+ [data-skin='github'] .pill.test-tag {
187
180
  background: var(--accent-bg);
188
181
  color: var(--accent);
189
182
  border-color: transparent;
@@ -193,164 +186,164 @@
193
186
  }
194
187
 
195
188
  /* ---- Cards ---- */
196
- [data-skin="github"] .panel,
197
- [data-skin="github"] .layer,
198
- [data-skin="github"] .diagram {
189
+ [data-skin='github'] .panel,
190
+ [data-skin='github'] .layer,
191
+ [data-skin='github'] .diagram {
199
192
  border-radius: var(--r);
200
193
  }
201
- [data-skin="github"] .panel-h,
202
- [data-skin="github"] .layer-h,
203
- [data-skin="github"] .diagram-h {
194
+ [data-skin='github'] .panel-h,
195
+ [data-skin='github'] .layer-h,
196
+ [data-skin='github'] .diagram-h {
204
197
  border-radius: calc(var(--r) - 1px) calc(var(--r) - 1px) 0 0;
205
198
  }
206
- [data-skin="github"] .chev {
199
+ [data-skin='github'] .chev {
207
200
  color: var(--fg-muted);
208
201
  }
209
- [data-skin="github"] .summary h3,
210
- [data-skin="github"] .judgment .lbl,
211
- [data-skin="github"] .role,
212
- [data-skin="github"] .diff th {
202
+ [data-skin='github'] .summary h3,
203
+ [data-skin='github'] .judgment .lbl,
204
+ [data-skin='github'] .role,
205
+ [data-skin='github'] .diff th {
213
206
  text-transform: none;
214
207
  letter-spacing: normal;
215
208
  }
216
- [data-skin="github"] .summary h3 {
209
+ [data-skin='github'] .summary h3 {
217
210
  font-size: 14px;
218
211
  color: var(--fg);
219
212
  }
220
- [data-skin="github"] .prose ul {
213
+ [data-skin='github'] .prose ul {
221
214
  list-style: disc;
222
215
  }
223
- [data-skin="github"] .sq {
216
+ [data-skin='github'] .sq {
224
217
  border-radius: 2px;
225
218
  }
226
- [data-skin="github"] .sevsum > .legend {
219
+ [data-skin='github'] .sevsum > .legend {
227
220
  border-radius: var(--r);
228
221
  box-shadow: var(--drop-shadow);
229
222
  }
230
223
  /* GitHub draws progress as a filled track rather than a hairline. */
231
- [data-skin="github"] .pline {
224
+ [data-skin='github'] .pline {
232
225
  background: var(--line);
233
226
  border-radius: var(--r);
234
227
  }
235
- [data-skin="github"] .pline span {
228
+ [data-skin='github'] .pline span {
236
229
  border-radius: var(--r);
237
230
  }
238
231
 
239
232
  /* ---- Rail ---- */
240
- [data-skin="github"] .tree a {
233
+ [data-skin='github'] .tree a {
241
234
  margin: 0 8px;
242
235
  padding: 6px 8px;
243
236
  border-radius: var(--r);
244
237
  }
245
- [data-skin="github"] .tree .layers a {
238
+ [data-skin='github'] .tree .layers a {
246
239
  padding-left: 20px;
247
240
  }
248
- [data-skin="github"] .tree a[aria-current] {
241
+ [data-skin='github'] .tree a[aria-current] {
249
242
  background: var(--accent-bg);
250
243
  box-shadow: inset 3px 0 0 var(--accent);
251
244
  }
252
245
 
253
246
  /* ---- Diff ---- */
254
- [data-skin="github"] .plus {
247
+ [data-skin='github'] .plus {
255
248
  border: 0;
256
249
  border-radius: var(--r);
257
250
  background: var(--accent);
258
251
  color: #ffffff;
259
252
  }
260
- [data-skin="github"] .av {
253
+ [data-skin='github'] .av {
261
254
  border-radius: 50%;
262
255
  border-color: var(--line);
263
256
  background: var(--panel-2);
264
257
  }
265
- [data-skin="github"] tr.hunk td {
258
+ [data-skin='github'] tr.hunk td {
266
259
  color: light-dark(#0550ae, #9198a1);
267
260
  }
268
261
 
269
- [data-skin="github"] .diff .ln {
262
+ [data-skin='github'] .diff .ln {
270
263
  border-right-color: light-dark(#d1d9e0, transparent);
271
264
  }
272
- [data-skin="github"] tr.add .ln {
265
+ [data-skin='github'] tr.add .ln {
273
266
  background: light-dark(#e6ffec, #31503d);
274
267
  color: light-dark(#818b98, #d1d7e0);
275
268
  }
276
- [data-skin="github"] tr.del .ln {
269
+ [data-skin='github'] tr.del .ln {
277
270
  background: light-dark(#ffebe9, rgba(229, 83, 75, 0.3));
278
271
  color: light-dark(#818b98, #d1d7e0);
279
272
  }
280
273
 
281
274
  /* ---- Boxes, menus, and overlays ---- */
282
- [data-skin="github"] code,
283
- [data-skin="github"] .snip,
284
- [data-skin="github"] .ctx-chip,
285
- [data-skin="github"] .diagram-src,
286
- [data-skin="github"] .cmdbox code,
287
- [data-skin="github"] .notice,
288
- [data-skin="github"] .callout,
289
- [data-skin="github"] .stale-bar,
290
- [data-skin="github"] .proposed,
291
- [data-skin="github"] .proposed-invalid,
292
- [data-skin="github"] .drop,
293
- [data-skin="github"] .prose pre,
294
- [data-skin="github"] dialog.settings .panel-ro {
275
+ [data-skin='github'] code,
276
+ [data-skin='github'] .snip,
277
+ [data-skin='github'] .ctx-chip,
278
+ [data-skin='github'] .diagram-src,
279
+ [data-skin='github'] .cmdbox code,
280
+ [data-skin='github'] .notice,
281
+ [data-skin='github'] .callout,
282
+ [data-skin='github'] .stale-bar,
283
+ [data-skin='github'] .proposed,
284
+ [data-skin='github'] .proposed-invalid,
285
+ [data-skin='github'] .drop,
286
+ [data-skin='github'] .prose pre,
287
+ [data-skin='github'] dialog.settings .panel-ro {
295
288
  border-radius: var(--r);
296
289
  }
297
- [data-skin="github"] code {
290
+ [data-skin='github'] code {
298
291
  border: 0;
299
292
  background: light-dark(rgba(129, 139, 152, 0.2), rgba(99, 110, 123, 0.4));
300
293
  padding: 0.2em 0.4em;
301
294
  }
302
- [data-skin="github"] .cmdbox code,
303
- [data-skin="github"] .diagram-src {
295
+ [data-skin='github'] .cmdbox code,
296
+ [data-skin='github'] .diagram-src {
304
297
  background: var(--panel-2);
305
298
  border: 1px solid var(--line);
306
299
  }
307
- [data-skin="github"] .drop {
300
+ [data-skin='github'] .drop {
308
301
  border-width: 1px;
309
302
  background: var(--panel-2);
310
303
  }
311
- [data-skin="github"] .drop:hover,
312
- [data-skin="github"] .drop.over {
304
+ [data-skin='github'] .drop:hover,
305
+ [data-skin='github'] .drop.over {
313
306
  transform: none;
314
307
  background: var(--accent-bg);
315
308
  }
316
- [data-skin="github"] .proposed,
317
- [data-skin="github"] .cmd.unseen,
318
- [data-skin="github"] .qq-menu {
309
+ [data-skin='github'] .proposed,
310
+ [data-skin='github'] .cmd.unseen,
311
+ [data-skin='github'] .qq-menu {
319
312
  border-width: 1px;
320
313
  }
321
- [data-skin="github"] .cmd.unseen,
322
- [data-skin="github"] .qq-menu,
323
- [data-skin="github"] .toast {
314
+ [data-skin='github'] .cmd.unseen,
315
+ [data-skin='github'] .qq-menu,
316
+ [data-skin='github'] .toast {
324
317
  border-radius: var(--r);
325
318
  box-shadow: var(--drop-shadow);
326
319
  }
327
- [data-skin="github"] select,
328
- [data-skin="github"] input,
329
- [data-skin="github"] textarea,
330
- [data-skin="github"] .composer-box textarea,
331
- [data-skin="github"] dialog.signoff-dialog textarea {
320
+ [data-skin='github'] select,
321
+ [data-skin='github'] input,
322
+ [data-skin='github'] textarea,
323
+ [data-skin='github'] .composer-box textarea,
324
+ [data-skin='github'] dialog.signoff-dialog textarea {
332
325
  border-width: 1px;
333
326
  border-color: var(--line);
334
327
  border-radius: var(--r);
335
328
  padding: 5px 12px;
336
329
  }
337
- [data-skin="github"] dialog {
330
+ [data-skin='github'] dialog {
338
331
  border-width: 1px;
339
332
  border-color: var(--line);
340
333
  border-radius: 12px;
341
334
  box-shadow: var(--drop-shadow);
342
335
  }
343
- [data-skin="github"] dialog::backdrop {
336
+ [data-skin='github'] dialog::backdrop {
344
337
  background: rgba(28, 33, 40, 0.6);
345
338
  }
346
339
 
347
340
  @media (max-width: 1000px) {
348
341
  /* The rail is a strip of chips at this width; the current one is underlined, not filled. */
349
- [data-skin="github"] .tree a {
342
+ [data-skin='github'] .tree a {
350
343
  margin: 0;
351
344
  border-radius: var(--r);
352
345
  }
353
- [data-skin="github"] .tree a[aria-current] {
346
+ [data-skin='github'] .tree a[aria-current] {
354
347
  box-shadow: inset 0 -3px 0 var(--accent);
355
348
  }
356
349
  }
package/static/styles.css CHANGED
@@ -1,14 +1,15 @@
1
1
  /* Keep this order: shared styles, components, responsive rules, interaction controls, and the
2
2
  github skin last, because it repaints the rules above it. */
3
- @import "./styles/base.css";
4
- @import "./styles/commands.css";
5
- @import "./styles/header.css";
6
- @import "./styles/layout.css";
7
- @import "./styles/review.css";
8
- @import "./styles/diff.css";
9
- @import "./styles/chat.css";
10
- @import "./styles/panels.css";
11
- @import "./styles/responsive.css";
12
- @import "./styles/review-actions.css";
13
- @import "./styles/chat-tools.css";
14
- @import "./styles/skin-github.css";
3
+ @import './styles/base.css';
4
+ @import './styles/commands.css';
5
+ @import './styles/header.css';
6
+ @import './styles/layout.css';
7
+ @import './styles/review.css';
8
+ @import './styles/diff.css';
9
+ @import './styles/chat.css';
10
+ @import './styles/panels.css';
11
+ @import './styles/responsive.css';
12
+ @import './styles/review-actions.css';
13
+ @import './styles/chat-tools.css';
14
+ @import './styles/skin-github.css';
15
+ @import './styles/chat-panel.css';