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.
- package/CHANGELOG.md +14 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/index-BvWrFBsC.css +1 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-BMjm7L0w.js → index-DNBjBIvK.js} +30 -30
- package/bin/adapter/entry-points/console/ui-dist/index.html +2 -2
- package/package.json +1 -1
- package/src/adapter/entry-points/console/ui/src/features/console/components/content/ConsoleMarkdownContent.stories.tsx +5 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.stories.tsx +1 -1
- package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.test.tsx +13 -0
- package/src/adapter/entry-points/console/ui/src/features/console/components/detail/ConsoleItemDetail.tsx +12 -13
- package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.test.ts +49 -0
- package/src/adapter/entry-points/console/ui/src/features/console/lib/markdown.ts +23 -2
- package/src/adapter/entry-points/console/ui/src/features/console/testing/fixtures.ts +33 -0
- package/src/adapter/entry-points/console/ui/src/index.css +68 -48
- package/src/adapter/entry-points/console/ui-dist/assets/index-BvWrFBsC.css +1 -0
- package/src/adapter/entry-points/console/ui-dist/assets/{index-BMjm7L0w.js → index-DNBjBIvK.js} +30 -30
- package/src/adapter/entry-points/console/ui-dist/index.html +2 -2
- package/bin/adapter/entry-points/console/ui-dist/assets/index-BNPHMdzv.css +0 -1
- 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-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
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,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:
|
|
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 (
|
|
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
|
|
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
|

|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1067
|
+
font-size: 0.6875rem;
|
|
1048
1068
|
color: #8b949e;
|
|
1049
1069
|
}
|