github-issue-tower-defence-management 1.112.3 → 1.112.5

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 (18) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/adapter/entry-points/console/ui-dist/assets/index-BvWrFBsC.css +1 -0
  3. package/bin/adapter/entry-points/console/ui-dist/assets/{index-BMjm7L0w.js → index-DNBjBIvK.js} +30 -30
  4. package/bin/adapter/entry-points/console/ui-dist/index.html +2 -2
  5. package/package.json +1 -1
  6. package/src/adapter/entry-points/console/ui/src/features/console/components/content/ConsoleMarkdownContent.stories.tsx +5 -0
  7. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.stories.tsx +1 -1
  8. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.test.tsx +13 -0
  9. package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.tsx +12 -13
  10. package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.test.ts +49 -0
  11. package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.ts +23 -2
  12. package/src/adapter/entry-points/console/ui/src/features/console/testing/fixtures.ts +33 -0
  13. package/src/adapter/entry-points/console/ui/src/index.css +68 -48
  14. package/src/adapter/entry-points/console/ui-dist/assets/index-BvWrFBsC.css +1 -0
  15. package/src/adapter/entry-points/console/ui-dist/assets/{index-BMjm7L0w.js → index-DNBjBIvK.js} +30 -30
  16. package/src/adapter/entry-points/console/ui-dist/index.html +2 -2
  17. package/bin/adapter/entry-points/console/ui-dist/assets/index-BNPHMdzv.css +0 -1
  18. package/src/adapter/entry-points/console/ui-dist/assets/index-BNPHMdzv.css +0 -1
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>TDPM Console</title>
7
- <script type="module" crossorigin src="/assets/index-BMjm7L0w.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BNPHMdzv.css">
7
+ <script type="module" crossorigin src="/assets/index-DNBjBIvK.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-BvWrFBsC.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.112.3",
3
+ "version": "1.112.5",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -1,6 +1,7 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react-vite';
2
2
  import { buildImageProxyUrl } from '../../lib/imageProxy';
3
3
  import {
4
+ consoleCodeFenceBodyFixture,
4
5
  consoleMarkdownBodyFixture,
5
6
  consoleMarkdownImageBodyFixture,
6
7
  consoleMermaidBodyFixture,
@@ -24,6 +25,10 @@ export const WithMermaidFence: Story = {
24
25
  args: { body: consoleMermaidBodyFixture },
25
26
  };
26
27
 
28
+ export const WithCodeFence: Story = {
29
+ args: { body: consoleCodeFenceBodyFixture },
30
+ };
31
+
27
32
  export const WithProxiedGitHubImages: Story = {
28
33
  args: {
29
34
  body: consoleMarkdownImageBodyFixture,
@@ -67,7 +67,7 @@ export const PullRequestItem: Story = {
67
67
  item: consoleListItemsFixture[0],
68
68
  storyName: 'TDPM Console port',
69
69
  storyColorEnum: 'BLUE',
70
- overlayStatus: null,
70
+ overlayStatus: { name: 'Awaiting Workspace', color: 'BLUE' },
71
71
  state: { state: 'open', merged: false, isPullRequest: true },
72
72
  body: consoleMermaidBodyFixture,
73
73
  bodyIsLoading: false,
@@ -102,4 +102,17 @@ describe('ConsoleItemDetail', () => {
102
102
  );
103
103
  expect(getByText('Awaiting Workspace')).toBeInTheDocument();
104
104
  });
105
+
106
+ it('renders the overlay status chip inside the title header', () => {
107
+ const { getByText, container } = render(
108
+ <ConsoleItemDetail
109
+ item={issueItem}
110
+ {...baseProps}
111
+ overlayStatus={{ name: 'Awaiting Workspace', color: 'BLUE' }}
112
+ />,
113
+ );
114
+ const title = container.querySelector('.console-detail-title');
115
+ expect(title).not.toBeNull();
116
+ expect(title?.contains(getByText('Awaiting Workspace'))).toBe(true);
117
+ });
105
118
  });
@@ -115,20 +115,19 @@ export const ConsoleItemDetail = ({
115
115
  </div>
116
116
  )}
117
117
 
118
- {overlayStatus !== null && statusPalette !== null && (
119
- <span
120
- className="console-detail-status-chip"
121
- style={{
122
- color: statusPalette.fg,
123
- borderColor: statusPalette.border,
124
- backgroundColor: statusPalette.bg,
125
- }}
126
- >
127
- {overlayStatus.name}
128
- </span>
129
- )}
130
-
131
118
  <h2 className="console-detail-title">
119
+ {overlayStatus !== null && statusPalette !== null && (
120
+ <span
121
+ className="console-detail-status-chip"
122
+ style={{
123
+ color: statusPalette.fg,
124
+ borderColor: statusPalette.border,
125
+ backgroundColor: statusPalette.bg,
126
+ }}
127
+ >
128
+ {overlayStatus.name}
129
+ </span>
130
+ )}
132
131
  <ConsoleItemIcon
133
132
  isPr={item.isPr}
134
133
  state={resolvedState}
@@ -82,6 +82,55 @@ describe('splitMarkdownSegments', () => {
82
82
  { kind: 'markdown', source: '```mermaid\ngraph TD; A-->B;' },
83
83
  ]);
84
84
  });
85
+
86
+ it('keeps a regular fenced code block as a single markdown segment', () => {
87
+ const segments = splitMarkdownSegments('```ts\nconst answer = 42;\n```');
88
+ expect(segments.map(stripKey)).toEqual([
89
+ { kind: 'markdown', source: '```ts\nconst answer = 42;\n```' },
90
+ ]);
91
+ const html = renderMarkdownToSafeHtml(
92
+ (segments[0] as { source: string }).source,
93
+ );
94
+ expect(html).toContain('<pre>');
95
+ expect(html).toContain('<code');
96
+ expect(html).toContain('const answer = 42;');
97
+ expect(html).not.toContain('```');
98
+ });
99
+
100
+ it('does not treat a mermaid fence inside a regular code block as a diagram', () => {
101
+ const segments = splitMarkdownSegments(
102
+ '```text\n```mermaid\ngraph TD; A-->B;\n```\n```',
103
+ );
104
+ expect(segments.map(stripKey)).toEqual([
105
+ {
106
+ kind: 'markdown',
107
+ source: '```text\n```mermaid\ngraph TD; A-->B;\n```\n```',
108
+ },
109
+ ]);
110
+ });
111
+
112
+ it('separates a mermaid fence from a following regular code fence', () => {
113
+ const segments = splitMarkdownSegments(
114
+ 'intro\n\n```mermaid\ngraph TD; A-->B;\n```\n\n```ts\nconst answer = 42;\n```',
115
+ );
116
+ expect(segments.map(stripKey)).toEqual([
117
+ { kind: 'markdown', source: 'intro\n' },
118
+ { kind: 'mermaid', code: 'graph TD; A-->B;' },
119
+ { kind: 'markdown', source: '\n```ts\nconst answer = 42;\n```' },
120
+ ]);
121
+ const codeSegment = segments[2] as { source: string };
122
+ const html = renderMarkdownToSafeHtml(codeSegment.source);
123
+ expect(html).toContain('<pre>');
124
+ expect(html).toContain('<code');
125
+ expect(html).not.toContain('```');
126
+ });
127
+
128
+ it('keeps an unterminated regular fence as markdown', () => {
129
+ const segments = splitMarkdownSegments('```ts\nconst answer = 42;');
130
+ expect(segments.map(stripKey)).toEqual([
131
+ { kind: 'markdown', source: '```ts\nconst answer = 42;' },
132
+ ]);
133
+ });
85
134
  });
86
135
 
87
136
  describe('hasMermaidFence', () => {
@@ -27,6 +27,14 @@ export type ConsoleMarkdownSegment =
27
27
 
28
28
  const MERMAID_FENCE = /^```mermaid[^\n]*\n([\s\S]*?)\n```$/;
29
29
 
30
+ const isMermaidFenceOpen = (line: string): boolean =>
31
+ /^```mermaid\s*$/.test(line.trim());
32
+
33
+ const isCodeFenceOpen = (line: string): boolean =>
34
+ /^```/.test(line.trim()) && !isMermaidFenceOpen(line);
35
+
36
+ const isFenceClose = (line: string): boolean => line.trim() === '```';
37
+
30
38
  export const splitMarkdownSegments = (
31
39
  source: string,
32
40
  ): ConsoleMarkdownSegment[] => {
@@ -34,6 +42,7 @@ export const splitMarkdownSegments = (
34
42
  const segments: ConsoleMarkdownSegment[] = [];
35
43
  let markdownBuffer: string[] = [];
36
44
  let mermaidBuffer: string[] | null = null;
45
+ let insideCodeFence = false;
37
46
  let sequence = 0;
38
47
 
39
48
  const flushMarkdown = (): void => {
@@ -49,13 +58,20 @@ export const splitMarkdownSegments = (
49
58
  };
50
59
 
51
60
  for (const line of lines) {
52
- if (mermaidBuffer === null && /^```mermaid\s*$/.test(line.trim())) {
61
+ if (insideCodeFence) {
62
+ markdownBuffer.push(line);
63
+ if (isFenceClose(line)) {
64
+ insideCodeFence = false;
65
+ }
66
+ continue;
67
+ }
68
+ if (mermaidBuffer === null && isMermaidFenceOpen(line)) {
53
69
  flushMarkdown();
54
70
  mermaidBuffer = [];
55
71
  continue;
56
72
  }
57
73
  if (mermaidBuffer !== null) {
58
- if (line.trim() === '```') {
74
+ if (isFenceClose(line)) {
59
75
  segments.push({
60
76
  kind: 'mermaid',
61
77
  key: `mermaid:${sequence}`,
@@ -68,6 +84,11 @@ export const splitMarkdownSegments = (
68
84
  mermaidBuffer.push(line);
69
85
  continue;
70
86
  }
87
+ if (isCodeFenceOpen(line)) {
88
+ markdownBuffer.push(line);
89
+ insideCodeFence = true;
90
+ continue;
91
+ }
71
92
  markdownBuffer.push(line);
72
93
  }
73
94
 
@@ -166,6 +166,39 @@ For reference, the avatar comes from an external host:
166
166
  ![external avatar](https://example.com/avatar.png)
167
167
  `;
168
168
 
169
+ export const consoleCodeFenceBodyFixture = `## Reproduction
170
+
171
+ A TypeScript fenced code block MUST render as a styled code box rather than
172
+ literal backticks:
173
+
174
+ \`\`\`ts
175
+ export const splitMarkdownSegments = (source: string): ConsoleMarkdownSegment[] => {
176
+ const lines = source.split('\\n');
177
+ return lines.length > 0 ? parse(lines) : [];
178
+ };
179
+ \`\`\`
180
+
181
+ A code block that documents a mermaid fence MUST stay literal text and MUST NOT
182
+ be turned into a diagram:
183
+
184
+ \`\`\`text
185
+ \`\`\`mermaid
186
+ graph TD; A-->B;
187
+ \`\`\`
188
+
189
+ The diagram below MUST still render as an actual diagram:
190
+
191
+ \`\`\`mermaid
192
+ sequenceDiagram
193
+ participant Browser
194
+ participant ConsoleServer
195
+ Browser->>ConsoleServer: GET /api/itembody?url=...
196
+ ConsoleServer-->>Browser: { body }
197
+ \`\`\`
198
+
199
+ Inline \`code\` spans are unaffected.
200
+ `;
201
+
169
202
  export const consoleMermaidBodyFixture = `Here is the request flow:
170
203
 
171
204
  \`\`\`mermaid
@@ -21,6 +21,16 @@
21
21
  --radius: 0.5rem;
22
22
  }
23
23
 
24
+ html {
25
+ font-size: 16px;
26
+ }
27
+
28
+ @media (min-width: 1024px) {
29
+ html {
30
+ font-size: 8px;
31
+ }
32
+ }
33
+
24
34
  body {
25
35
  margin: 0;
26
36
  background-color: #0d1117;
@@ -59,7 +69,7 @@ body {
59
69
  margin-bottom: -2px;
60
70
  background: transparent;
61
71
  color: #8b949e;
62
- font-size: 13px;
72
+ font-size: 0.8125rem;
63
73
  font-weight: 500;
64
74
  line-height: 1.2;
65
75
  white-space: nowrap;
@@ -84,7 +94,7 @@ body {
84
94
  background: #484f58;
85
95
  color: #e6edf3;
86
96
  padding: 1px 7px;
87
- font-size: 11px;
97
+ font-size: 0.6875rem;
88
98
  font-weight: 700;
89
99
  line-height: 1.5;
90
100
  }
@@ -99,14 +109,14 @@ body {
99
109
  align-self: center;
100
110
  padding: 0 8px;
101
111
  color: #8b949e;
102
- font-size: 11.5px;
112
+ font-size: 0.7188rem;
103
113
  }
104
114
 
105
115
  .console-tab-geninfo {
106
116
  align-self: center;
107
117
  padding: 0 4px;
108
118
  color: #8b949e;
109
- font-size: 11px;
119
+ font-size: 0.6875rem;
110
120
  }
111
121
 
112
122
  .console-list {
@@ -137,7 +147,7 @@ body {
137
147
  display: inline-flex;
138
148
  align-items: center;
139
149
  gap: 8px;
140
- font-size: 13px;
150
+ font-size: 0.8125rem;
141
151
  font-weight: 700;
142
152
  }
143
153
 
@@ -150,7 +160,7 @@ body {
150
160
 
151
161
  .console-group-count {
152
162
  color: #8b949e;
153
- font-size: 12px;
163
+ font-size: 0.75rem;
154
164
  }
155
165
 
156
166
  .console-item-row {
@@ -186,14 +196,14 @@ body {
186
196
  .console-item-title {
187
197
  display: block;
188
198
  font-weight: 600;
189
- font-size: 14.5px;
199
+ font-size: 0.9063rem;
190
200
  }
191
201
 
192
202
  .console-item-sub {
193
203
  display: block;
194
204
  margin-top: 3px;
195
205
  color: #8b949e;
196
- font-size: 12.5px;
206
+ font-size: 0.7813rem;
197
207
  }
198
208
 
199
209
  .console-item-pill {
@@ -201,7 +211,7 @@ body {
201
211
  border: 1px solid #30363d;
202
212
  border-radius: 20px;
203
213
  padding: 1px 8px;
204
- font-size: 11px;
214
+ font-size: 0.6875rem;
205
215
  color: #8b949e;
206
216
  margin-right: 6px;
207
217
  }
@@ -216,7 +226,7 @@ body {
216
226
  flex-wrap: wrap;
217
227
  gap: 4px 10px;
218
228
  margin-top: 4px;
219
- font-size: 11.5px;
229
+ font-size: 0.7188rem;
220
230
  color: #adbac7;
221
231
  }
222
232
 
@@ -230,7 +240,7 @@ body {
230
240
 
231
241
  .console-item-field-label {
232
242
  color: #6e7681;
233
- font-size: 10px;
243
+ font-size: 0.625rem;
234
244
  text-transform: uppercase;
235
245
  letter-spacing: 0.03em;
236
246
  }
@@ -238,14 +248,14 @@ body {
238
248
  .console-list-message {
239
249
  padding: 16px;
240
250
  color: #8b949e;
241
- font-size: 14px;
251
+ font-size: 0.875rem;
242
252
  }
243
253
 
244
254
  .console-list-empty {
245
255
  padding: 40px;
246
256
  text-align: center;
247
257
  color: #8b949e;
248
- font-size: 14px;
258
+ font-size: 0.875rem;
249
259
  }
250
260
 
251
261
  .console-list-error,
@@ -267,7 +277,7 @@ body {
267
277
  display: flex;
268
278
  align-items: center;
269
279
  gap: 8px;
270
- font-size: 20px;
280
+ font-size: 1.25rem;
271
281
  margin: 0;
272
282
  }
273
283
 
@@ -282,14 +292,14 @@ body {
282
292
 
283
293
  .console-detail-closed-label {
284
294
  color: #a371f7;
285
- font-size: 13px;
295
+ font-size: 0.8125rem;
286
296
  }
287
297
 
288
298
  .console-detail-subbar {
289
299
  display: flex;
290
300
  align-items: center;
291
301
  gap: 12px;
292
- font-size: 13px;
302
+ font-size: 0.8125rem;
293
303
  }
294
304
 
295
305
  .console-detail-link {
@@ -307,7 +317,7 @@ body {
307
317
  border: 1px solid #30363d;
308
318
  border-radius: 6px;
309
319
  color: #c9d1d9;
310
- font-size: 12px;
320
+ font-size: 0.75rem;
311
321
  }
312
322
 
313
323
  .console-copy-url-button:hover {
@@ -322,7 +332,7 @@ body {
322
332
  padding: 2px 8px;
323
333
  border-radius: 999px;
324
334
  border: 1px solid #30363d;
325
- font-size: 12px;
335
+ font-size: 0.75rem;
326
336
  }
327
337
 
328
338
  .console-detail-labels {
@@ -333,7 +343,7 @@ body {
333
343
 
334
344
  .console-detail-createdat {
335
345
  color: #8b949e;
336
- font-size: 12px;
346
+ font-size: 0.75rem;
337
347
  }
338
348
 
339
349
  .console-panel {
@@ -347,27 +357,37 @@ body {
347
357
  align-items: center;
348
358
  justify-content: space-between;
349
359
  background: #161b22;
350
- padding: 6px 12px;
351
360
  }
352
361
 
353
362
  .console-panel-toggle {
354
- display: inline-flex;
363
+ display: flex;
364
+ flex: 1;
355
365
  align-items: center;
356
366
  gap: 8px;
367
+ padding: 6px 12px;
357
368
  background: transparent;
358
369
  border: none;
359
370
  color: #e6edf3;
360
- font-size: 14px;
371
+ font-size: 0.875rem;
361
372
  font-weight: 600;
373
+ text-align: left;
362
374
  cursor: pointer;
363
375
  }
364
376
 
377
+ .console-panel-toggle:hover {
378
+ background: #1a2029;
379
+ }
380
+
381
+ .console-panel-action {
382
+ padding: 6px 12px;
383
+ }
384
+
365
385
  .console-panel-body {
366
386
  padding: 12px;
367
387
  }
368
388
 
369
389
  .console-markdown {
370
- font-size: 14px;
390
+ font-size: 0.875rem;
371
391
  line-height: 1.5;
372
392
  word-break: break-word;
373
393
  }
@@ -447,7 +467,7 @@ body {
447
467
  margin: 0.5em 0;
448
468
  overflow-x: auto;
449
469
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
450
- font-size: 13px;
470
+ font-size: 0.8125rem;
451
471
  line-height: 1.45;
452
472
  }
453
473
 
@@ -490,7 +510,7 @@ body {
490
510
 
491
511
  .console-mermaid-error {
492
512
  color: #f85149;
493
- font-size: 13px;
513
+ font-size: 0.8125rem;
494
514
  }
495
515
 
496
516
  .console-comment {
@@ -501,7 +521,7 @@ body {
501
521
  .console-comment-header {
502
522
  display: flex;
503
523
  gap: 8px;
504
- font-size: 12px;
524
+ font-size: 0.75rem;
505
525
  color: #8b949e;
506
526
  }
507
527
 
@@ -522,13 +542,13 @@ body {
522
542
  align-items: center;
523
543
  gap: 8px;
524
544
  padding: 4px 0;
525
- font-size: 13px;
545
+ font-size: 0.8125rem;
526
546
  }
527
547
 
528
548
  .console-file {
529
549
  display: flex;
530
550
  flex-direction: column;
531
- font-size: 13px;
551
+ font-size: 0.8125rem;
532
552
  }
533
553
 
534
554
  .console-file-badge {
@@ -536,7 +556,7 @@ body {
536
556
  text-align: center;
537
557
  border: 1px solid;
538
558
  border-radius: 4px;
539
- font-size: 11px;
559
+ font-size: 0.6875rem;
540
560
  }
541
561
 
542
562
  .console-file-path,
@@ -600,7 +620,7 @@ body {
600
620
  border-radius: 6px;
601
621
  background: #21262d;
602
622
  color: #e6edf3;
603
- font-size: 13px;
623
+ font-size: 0.8125rem;
604
624
  font-weight: 600;
605
625
  white-space: nowrap;
606
626
  cursor: pointer;
@@ -652,7 +672,7 @@ body {
652
672
  .console-pr-statbar {
653
673
  display: flex;
654
674
  gap: 12px;
655
- font-size: 12px;
675
+ font-size: 0.75rem;
656
676
  color: #8b949e;
657
677
  }
658
678
 
@@ -663,7 +683,7 @@ body {
663
683
  .console-panel-open-link {
664
684
  color: #4493f8;
665
685
  font-weight: 400;
666
- font-size: 13px;
686
+ font-size: 0.8125rem;
667
687
  }
668
688
 
669
689
  .console-composer {
@@ -674,7 +694,7 @@ body {
674
694
  background: none;
675
695
  border: none;
676
696
  color: #8b949e;
677
- font-size: 12.5px;
697
+ font-size: 0.7813rem;
678
698
  padding: 2px 0;
679
699
  cursor: pointer;
680
700
  }
@@ -702,7 +722,7 @@ body {
702
722
  border-radius: 6px;
703
723
  color: #e6edf3;
704
724
  font: inherit;
705
- font-size: 14px;
725
+ font-size: 0.875rem;
706
726
  padding: 8px;
707
727
  resize: vertical;
708
728
  }
@@ -720,7 +740,7 @@ body {
720
740
  border-radius: 6px;
721
741
  background: #238636;
722
742
  color: #ffffff;
723
- font-size: 13px;
743
+ font-size: 0.8125rem;
724
744
  font-weight: 600;
725
745
  cursor: pointer;
726
746
  }
@@ -731,7 +751,7 @@ body {
731
751
  }
732
752
 
733
753
  .console-composer-status {
734
- font-size: 12px;
754
+ font-size: 0.75rem;
735
755
  color: #8b949e;
736
756
  }
737
757
 
@@ -751,7 +771,7 @@ body {
751
771
  gap: 12px;
752
772
  padding: 12px 18px;
753
773
  border-radius: 10px;
754
- font-size: 13.5px;
774
+ font-size: 0.8438rem;
755
775
  white-space: nowrap;
756
776
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6);
757
777
  }
@@ -807,7 +827,7 @@ body {
807
827
  border-radius: 6px;
808
828
  padding: 4px 12px;
809
829
  cursor: pointer;
810
- font-size: 13px;
830
+ font-size: 0.8125rem;
811
831
  color: inherit;
812
832
  }
813
833
 
@@ -817,7 +837,7 @@ body {
817
837
 
818
838
  .console-undo-toast-countdown {
819
839
  flex: 0 0 auto;
820
- font-size: 11px;
840
+ font-size: 0.6875rem;
821
841
  opacity: 0.7;
822
842
  }
823
843
 
@@ -842,7 +862,7 @@ body {
842
862
  border: none;
843
863
  color: inherit;
844
864
  font: inherit;
845
- font-size: 13px;
865
+ font-size: 0.8125rem;
846
866
  text-align: left;
847
867
  cursor: pointer;
848
868
  }
@@ -862,7 +882,7 @@ body {
862
882
  border-collapse: collapse;
863
883
  margin: 4px 0 8px;
864
884
  font:
865
- 13px / 1.6 ui-monospace,
885
+ 0.8125rem / 1.6 ui-monospace,
866
886
  SFMono-Regular,
867
887
  Menlo,
868
888
  monospace;
@@ -919,7 +939,7 @@ body {
919
939
  .console-file-diff-empty {
920
940
  padding: 8px 14px;
921
941
  color: #8b949e;
922
- font-size: 12px;
942
+ font-size: 0.75rem;
923
943
  }
924
944
 
925
945
  .console-diff-comment-cell {
@@ -938,7 +958,7 @@ body {
938
958
  border-radius: 4px;
939
959
  background: transparent;
940
960
  color: #6e7681;
941
- font-size: 14px;
961
+ font-size: 0.875rem;
942
962
  cursor: pointer;
943
963
  opacity: 0;
944
964
  }
@@ -967,7 +987,7 @@ body {
967
987
  }
968
988
 
969
989
  .console-diff-composer-anchor {
970
- font-size: 11px;
990
+ font-size: 0.6875rem;
971
991
  color: #8b949e;
972
992
  }
973
993
 
@@ -1012,7 +1032,7 @@ body {
1012
1032
  }
1013
1033
 
1014
1034
  .console-diff-composer-status {
1015
- font-size: 12px;
1035
+ font-size: 0.75rem;
1016
1036
  color: #8b949e;
1017
1037
  }
1018
1038
 
@@ -1022,7 +1042,7 @@ body {
1022
1042
 
1023
1043
  .console-diff-composer-posted {
1024
1044
  margin: 0;
1025
- font-size: 12px;
1045
+ font-size: 0.75rem;
1026
1046
  color: #3fb950;
1027
1047
  }
1028
1048
 
@@ -1037,13 +1057,13 @@ body {
1037
1057
  .console-pr-section-title {
1038
1058
  color: #e6edf3;
1039
1059
  font-weight: 600;
1040
- font-size: 15px;
1060
+ font-size: 0.9375rem;
1041
1061
  }
1042
1062
 
1043
1063
  .console-pr-section-state {
1044
1064
  border: 1px solid #6e7681;
1045
1065
  border-radius: 999px;
1046
1066
  padding: 1px 8px;
1047
- font-size: 11px;
1067
+ font-size: 0.6875rem;
1048
1068
  color: #8b949e;
1049
1069
  }