gh-here 2.0.0 → 3.0.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.
- package/.claude/settings.local.json +20 -11
- package/README.md +30 -101
- package/SAMPLE.md +287 -0
- package/lib/constants.js +38 -0
- package/lib/error-handler.js +55 -0
- package/lib/file-tree-builder.js +81 -0
- package/lib/file-utils.js +43 -12
- package/lib/renderers.js +440 -194
- package/lib/server.js +120 -32
- package/lib/validation.js +77 -0
- package/package.json +1 -1
- package/public/app.js +199 -1825
- package/public/app.js.backup +1902 -0
- package/public/js/clipboard-utils.js +45 -0
- package/public/js/constants.js +60 -0
- package/public/js/draft-manager.js +36 -0
- package/public/js/editor-manager.js +159 -0
- package/public/js/file-tree.js +321 -0
- package/public/js/keyboard-handler.js +41 -0
- package/public/js/modal-manager.js +70 -0
- package/public/js/navigation.js +254 -0
- package/public/js/notification.js +23 -0
- package/public/js/search-handler.js +238 -0
- package/public/js/theme-manager.js +108 -0
- package/public/js/utils.js +123 -0
- package/public/styles.css +874 -570
- package/.channels_cache_v2.json +0 -10882
- package/.users_cache.json +0 -16187
- package/blog-post.md +0 -100
package/public/styles.css
CHANGED
|
@@ -35,39 +35,92 @@
|
|
|
35
35
|
html {
|
|
36
36
|
/* Set background on html to prevent flash during navigation */
|
|
37
37
|
background-color: #0d1117; /* Default dark theme background */
|
|
38
|
+
color-scheme: dark;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
[data-theme="light"]
|
|
41
|
+
html[data-theme="light"] {
|
|
41
42
|
background-color: #ffffff; /* Light theme background */
|
|
43
|
+
color-scheme: light;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* View Transitions API animations */
|
|
47
|
+
::view-transition-old(root),
|
|
48
|
+
::view-transition-new(root) {
|
|
49
|
+
animation-duration: 0.2s;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
::view-transition-old(root) {
|
|
53
|
+
animation-name: fade-out;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
::view-transition-new(root) {
|
|
57
|
+
animation-name: fade-in;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@keyframes fade-out {
|
|
61
|
+
to {
|
|
62
|
+
opacity: 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@keyframes fade-in {
|
|
67
|
+
from {
|
|
68
|
+
opacity: 0;
|
|
69
|
+
}
|
|
42
70
|
}
|
|
43
71
|
|
|
44
72
|
body {
|
|
45
|
-
font-family: -apple-system, BlinkMacSystemFont,
|
|
73
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
|
|
46
74
|
background-color: var(--bg-primary);
|
|
47
75
|
color: var(--text-primary);
|
|
48
76
|
line-height: 1.5;
|
|
49
|
-
min-height: 100vh;
|
|
77
|
+
min-height: 100vh;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* Smooth content fades for navigation */
|
|
81
|
+
.main-content-wrapper {
|
|
82
|
+
transition: opacity 160ms ease;
|
|
83
|
+
will-change: opacity;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* During navigation transition: fade out and disable clicks to prevent race conditions */
|
|
87
|
+
.main-content-wrapper.navigating {
|
|
88
|
+
opacity: 0.5;
|
|
89
|
+
pointer-events: none; /* Prevents clicks during transition - will be removed when navigation completes */
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
@media (prefers-reduced-motion: reduce) {
|
|
93
|
+
.main-content-wrapper {
|
|
94
|
+
transition: none;
|
|
95
|
+
}
|
|
50
96
|
}
|
|
51
97
|
|
|
52
98
|
header {
|
|
53
99
|
background-color: var(--bg-secondary);
|
|
54
100
|
border-bottom: 1px solid var(--border-primary);
|
|
101
|
+
position: sticky;
|
|
102
|
+
top: 0;
|
|
103
|
+
z-index: 100;
|
|
55
104
|
}
|
|
56
105
|
|
|
57
106
|
.header-content {
|
|
58
107
|
display: flex;
|
|
59
108
|
justify-content: space-between;
|
|
60
|
-
align-items:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
109
|
+
align-items: center;
|
|
110
|
+
padding: 12px 32px;
|
|
111
|
+
max-width: 100%;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.header-left {
|
|
115
|
+
flex: 0 0 auto;
|
|
64
116
|
}
|
|
65
117
|
|
|
66
118
|
.header-left h1 {
|
|
67
119
|
font-size: 20px;
|
|
68
120
|
font-weight: 600;
|
|
69
121
|
margin: 0;
|
|
70
|
-
color: var(--text-
|
|
122
|
+
color: var(--text-primary);
|
|
123
|
+
letter-spacing: -0.01em;
|
|
71
124
|
}
|
|
72
125
|
|
|
73
126
|
.header-path {
|
|
@@ -79,18 +132,21 @@ header {
|
|
|
79
132
|
.header-right {
|
|
80
133
|
display: flex;
|
|
81
134
|
align-items: center;
|
|
82
|
-
gap:
|
|
135
|
+
gap: 8px;
|
|
136
|
+
margin-left: auto;
|
|
83
137
|
}
|
|
84
138
|
|
|
85
139
|
/* GitHub-style White Canvas Section */
|
|
86
140
|
.repo-canvas {
|
|
87
141
|
background-color: var(--bg-primary);
|
|
142
|
+
flex: 1;
|
|
143
|
+
min-width: 0;
|
|
88
144
|
}
|
|
89
145
|
|
|
90
146
|
.repo-canvas-content {
|
|
91
|
-
max-width: 900px;
|
|
92
|
-
margin: 0 auto;
|
|
93
147
|
padding: 16px 24px;
|
|
148
|
+
max-width: 1280px;
|
|
149
|
+
margin: 0 auto;
|
|
94
150
|
}
|
|
95
151
|
|
|
96
152
|
.breadcrumb-section {
|
|
@@ -120,17 +176,24 @@ header {
|
|
|
120
176
|
display: flex;
|
|
121
177
|
align-items: center;
|
|
122
178
|
justify-content: space-between;
|
|
179
|
+
min-height: 40px;
|
|
123
180
|
}
|
|
124
181
|
|
|
125
182
|
.repo-controls-left {
|
|
126
183
|
display: flex;
|
|
127
184
|
align-items: center;
|
|
185
|
+
gap: 12px;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.repo-controls-left:empty {
|
|
189
|
+
display: none;
|
|
128
190
|
}
|
|
129
191
|
|
|
130
192
|
.repo-controls-right {
|
|
131
193
|
display: flex;
|
|
132
194
|
align-items: center;
|
|
133
195
|
gap: 12px;
|
|
196
|
+
margin-left: auto;
|
|
134
197
|
}
|
|
135
198
|
|
|
136
199
|
.branch-button {
|
|
@@ -142,7 +205,7 @@ header {
|
|
|
142
205
|
border: 1px solid var(--border-primary);
|
|
143
206
|
border-radius: 6px;
|
|
144
207
|
color: var(--text-primary);
|
|
145
|
-
font-size:
|
|
208
|
+
font-size: 12px;
|
|
146
209
|
font-weight: 500;
|
|
147
210
|
cursor: pointer;
|
|
148
211
|
transition: all 0.2s ease;
|
|
@@ -175,8 +238,9 @@ header {
|
|
|
175
238
|
}
|
|
176
239
|
|
|
177
240
|
.branch-name {
|
|
178
|
-
font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono",
|
|
241
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
179
242
|
font-weight: 600;
|
|
243
|
+
font-size: 12px;
|
|
180
244
|
}
|
|
181
245
|
|
|
182
246
|
.octicon-chevron {
|
|
@@ -207,6 +271,103 @@ header {
|
|
|
207
271
|
box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.3);
|
|
208
272
|
}
|
|
209
273
|
|
|
274
|
+
/* Search results overlay */
|
|
275
|
+
.search-results-overlay {
|
|
276
|
+
position: absolute;
|
|
277
|
+
top: calc(100% + 8px);
|
|
278
|
+
left: 0;
|
|
279
|
+
right: 0;
|
|
280
|
+
z-index: 1000;
|
|
281
|
+
min-width: 400px;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.search-results-container {
|
|
285
|
+
background: var(--bg-primary);
|
|
286
|
+
border: 1px solid var(--border-primary);
|
|
287
|
+
border-radius: 6px;
|
|
288
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
289
|
+
max-height: 400px;
|
|
290
|
+
overflow: hidden;
|
|
291
|
+
display: flex;
|
|
292
|
+
flex-direction: column;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.search-results-header {
|
|
296
|
+
padding: 8px 12px;
|
|
297
|
+
border-bottom: 1px solid var(--border-primary);
|
|
298
|
+
background: var(--bg-secondary);
|
|
299
|
+
font-size: 12px;
|
|
300
|
+
font-weight: 600;
|
|
301
|
+
color: var(--text-secondary);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.search-results-count {
|
|
305
|
+
color: var(--text-secondary);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.search-results-list {
|
|
309
|
+
overflow-y: auto;
|
|
310
|
+
max-height: 350px;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.search-result-item {
|
|
314
|
+
display: flex;
|
|
315
|
+
align-items: center;
|
|
316
|
+
gap: 10px;
|
|
317
|
+
padding: 8px 12px;
|
|
318
|
+
border-bottom: 1px solid var(--border-secondary);
|
|
319
|
+
text-decoration: none;
|
|
320
|
+
color: var(--text-primary);
|
|
321
|
+
transition: background-color 0.15s ease;
|
|
322
|
+
cursor: pointer;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.search-result-item:last-child {
|
|
326
|
+
border-bottom: none;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.search-result-item:hover {
|
|
330
|
+
background-color: var(--hover-bg);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.search-result-item .result-icon {
|
|
334
|
+
flex-shrink: 0;
|
|
335
|
+
fill: var(--text-secondary);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.search-result-item .result-icon.file-icon {
|
|
339
|
+
opacity: 0.7;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.search-result-content {
|
|
343
|
+
flex: 1;
|
|
344
|
+
min-width: 0;
|
|
345
|
+
display: flex;
|
|
346
|
+
flex-direction: column;
|
|
347
|
+
gap: 2px;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.search-result-path {
|
|
351
|
+
font-size: 13px;
|
|
352
|
+
color: var(--text-primary);
|
|
353
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
354
|
+
overflow: hidden;
|
|
355
|
+
text-overflow: ellipsis;
|
|
356
|
+
white-space: nowrap;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.search-highlight {
|
|
360
|
+
background-color: rgba(255, 200, 50, 0.3);
|
|
361
|
+
color: var(--text-accent);
|
|
362
|
+
border-radius: 2px;
|
|
363
|
+
padding: 0 2px;
|
|
364
|
+
font-weight: 600;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
[data-theme="light"] .search-highlight {
|
|
368
|
+
background-color: rgba(255, 200, 50, 0.4);
|
|
369
|
+
}
|
|
370
|
+
|
|
210
371
|
.search-icon {
|
|
211
372
|
position: absolute;
|
|
212
373
|
left: 8px;
|
|
@@ -233,9 +394,9 @@ header {
|
|
|
233
394
|
display: flex;
|
|
234
395
|
align-items: center;
|
|
235
396
|
gap: 6px;
|
|
236
|
-
padding:
|
|
397
|
+
padding: 5px 12px;
|
|
237
398
|
border-radius: 6px;
|
|
238
|
-
font-size:
|
|
399
|
+
font-size: 12px;
|
|
239
400
|
font-weight: 500;
|
|
240
401
|
cursor: pointer;
|
|
241
402
|
transition: all 0.2s ease;
|
|
@@ -282,62 +443,76 @@ header {
|
|
|
282
443
|
.theme-toggle,
|
|
283
444
|
.gitignore-toggle,
|
|
284
445
|
.edit-btn {
|
|
285
|
-
background:
|
|
446
|
+
background: var(--bg-primary);
|
|
286
447
|
border: 1px solid var(--border-primary);
|
|
287
448
|
border-radius: 6px;
|
|
288
|
-
padding:
|
|
449
|
+
padding: 5px 12px;
|
|
289
450
|
cursor: pointer;
|
|
290
|
-
color: var(--text-
|
|
291
|
-
transition: all 0.
|
|
451
|
+
color: var(--text-primary);
|
|
452
|
+
transition: all 0.15s ease;
|
|
292
453
|
display: flex;
|
|
293
454
|
align-items: center;
|
|
294
455
|
justify-content: center;
|
|
295
|
-
|
|
296
|
-
min-
|
|
297
|
-
margin
|
|
456
|
+
height: 32px;
|
|
457
|
+
min-width: 32px;
|
|
458
|
+
margin: 0;
|
|
459
|
+
font-size: 14px;
|
|
298
460
|
}
|
|
299
461
|
|
|
300
462
|
.theme-toggle:hover,
|
|
301
463
|
.gitignore-toggle:hover,
|
|
302
464
|
.edit-btn:hover {
|
|
303
|
-
background-color: var(--
|
|
465
|
+
background-color: var(--bg-tertiary);
|
|
304
466
|
border-color: var(--text-secondary);
|
|
305
467
|
}
|
|
306
468
|
|
|
469
|
+
.theme-toggle:active,
|
|
470
|
+
.gitignore-toggle:active,
|
|
471
|
+
.edit-btn:active {
|
|
472
|
+
background-color: var(--hover-bg);
|
|
473
|
+
transform: scale(0.97);
|
|
474
|
+
}
|
|
475
|
+
|
|
307
476
|
.gitignore-toggle.showing-ignored {
|
|
308
477
|
color: var(--link-color);
|
|
309
478
|
border-color: var(--link-color);
|
|
479
|
+
background: rgba(88, 166, 255, 0.1);
|
|
310
480
|
}
|
|
311
481
|
|
|
312
482
|
.gitignore-toggle.showing-ignored:hover {
|
|
313
|
-
background-color: rgba(88, 166, 255, 0.
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
.edit-btn {
|
|
317
|
-
margin-right: 8px;
|
|
483
|
+
background-color: rgba(88, 166, 255, 0.15);
|
|
318
484
|
}
|
|
319
485
|
|
|
320
|
-
.theme-icon
|
|
321
|
-
|
|
486
|
+
.theme-icon,
|
|
487
|
+
.gitignore-icon,
|
|
488
|
+
.edit-icon {
|
|
489
|
+
width: 16px;
|
|
490
|
+
height: 16px;
|
|
491
|
+
fill: currentColor;
|
|
322
492
|
}
|
|
323
493
|
|
|
324
494
|
.view-toggle {
|
|
325
|
-
display: flex;
|
|
495
|
+
display: inline-flex;
|
|
326
496
|
border: 1px solid var(--border-primary);
|
|
327
497
|
border-radius: 6px;
|
|
328
498
|
overflow: hidden;
|
|
499
|
+
background: var(--bg-primary);
|
|
329
500
|
}
|
|
330
501
|
|
|
331
502
|
.view-btn {
|
|
332
|
-
|
|
333
|
-
|
|
503
|
+
display: inline-flex;
|
|
504
|
+
align-items: center;
|
|
505
|
+
gap: 6px;
|
|
506
|
+
padding: 6px 12px;
|
|
507
|
+
background: transparent;
|
|
334
508
|
border: none;
|
|
335
509
|
color: var(--text-secondary);
|
|
336
510
|
text-decoration: none;
|
|
337
|
-
font-size:
|
|
511
|
+
font-size: 13px;
|
|
338
512
|
font-weight: 500;
|
|
339
|
-
transition: all 0.
|
|
513
|
+
transition: all 0.15s ease;
|
|
340
514
|
white-space: nowrap;
|
|
515
|
+
cursor: pointer;
|
|
341
516
|
}
|
|
342
517
|
|
|
343
518
|
.view-btn:hover {
|
|
@@ -350,10 +525,22 @@ header {
|
|
|
350
525
|
color: white;
|
|
351
526
|
}
|
|
352
527
|
|
|
528
|
+
.view-btn.active:hover {
|
|
529
|
+
background-color: var(--link-color);
|
|
530
|
+
opacity: 0.9;
|
|
531
|
+
}
|
|
532
|
+
|
|
353
533
|
.view-btn + .view-btn {
|
|
354
534
|
border-left: 1px solid var(--border-primary);
|
|
355
535
|
}
|
|
356
536
|
|
|
537
|
+
.view-icon {
|
|
538
|
+
width: 16px;
|
|
539
|
+
height: 16px;
|
|
540
|
+
fill: currentColor;
|
|
541
|
+
flex-shrink: 0;
|
|
542
|
+
}
|
|
543
|
+
|
|
357
544
|
.breadcrumb-item {
|
|
358
545
|
display: inline-flex;
|
|
359
546
|
align-items: center;
|
|
@@ -363,7 +550,7 @@ header {
|
|
|
363
550
|
color: var(--link-color);
|
|
364
551
|
text-decoration: none;
|
|
365
552
|
font-weight: 500;
|
|
366
|
-
padding:
|
|
553
|
+
padding: 2px 6px;
|
|
367
554
|
border-radius: 4px;
|
|
368
555
|
transition: all 0.15s ease;
|
|
369
556
|
}
|
|
@@ -380,72 +567,441 @@ header {
|
|
|
380
567
|
opacity: 0.7;
|
|
381
568
|
}
|
|
382
569
|
|
|
383
|
-
|
|
384
|
-
|
|
570
|
+
/* File Header */
|
|
571
|
+
.file-header {
|
|
572
|
+
display: flex;
|
|
573
|
+
justify-content: space-between;
|
|
574
|
+
align-items: center;
|
|
575
|
+
padding: 12px 16px;
|
|
576
|
+
margin-bottom: 12px;
|
|
577
|
+
background-color: var(--bg-secondary);
|
|
578
|
+
border: 1px solid var(--border-primary);
|
|
579
|
+
border-radius: 6px;
|
|
580
|
+
gap: 16px;
|
|
581
|
+
flex-wrap: wrap;
|
|
385
582
|
}
|
|
386
583
|
|
|
387
|
-
.main
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
584
|
+
.file-header-main {
|
|
585
|
+
flex: 1;
|
|
586
|
+
min-width: 0;
|
|
587
|
+
display: flex;
|
|
588
|
+
flex-direction: column;
|
|
589
|
+
gap: 8px;
|
|
391
590
|
}
|
|
392
591
|
|
|
393
|
-
.
|
|
592
|
+
.file-path-info {
|
|
394
593
|
display: flex;
|
|
594
|
+
align-items: center;
|
|
395
595
|
gap: 8px;
|
|
396
|
-
|
|
596
|
+
font-size: 14px;
|
|
397
597
|
}
|
|
398
598
|
|
|
399
|
-
.
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
margin-right: 6px;
|
|
404
|
-
vertical-align: text-bottom;
|
|
599
|
+
.file-path-text {
|
|
600
|
+
color: var(--link-color);
|
|
601
|
+
font-weight: 500;
|
|
602
|
+
word-break: break-all;
|
|
405
603
|
}
|
|
406
604
|
|
|
407
|
-
.file-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
605
|
+
.file-path-copy-btn {
|
|
606
|
+
display: inline-flex;
|
|
607
|
+
align-items: center;
|
|
608
|
+
justify-content: center;
|
|
609
|
+
padding: 4px;
|
|
610
|
+
background: transparent;
|
|
611
|
+
border: none;
|
|
612
|
+
border-radius: 4px;
|
|
613
|
+
cursor: pointer;
|
|
614
|
+
color: var(--text-secondary);
|
|
615
|
+
transition: all 0.15s ease;
|
|
616
|
+
flex-shrink: 0;
|
|
414
617
|
}
|
|
415
618
|
|
|
416
|
-
.file-
|
|
417
|
-
background-color: var(--bg
|
|
619
|
+
.file-path-copy-btn:hover {
|
|
620
|
+
background-color: var(--hover-bg);
|
|
621
|
+
color: var(--text-primary);
|
|
418
622
|
}
|
|
419
623
|
|
|
420
|
-
.
|
|
421
|
-
|
|
422
|
-
text-align: left;
|
|
423
|
-
font-weight: 600;
|
|
424
|
-
font-size: 12px;
|
|
425
|
-
color: var(--text-accent);
|
|
426
|
-
border-bottom: 1px solid var(--border-primary);
|
|
427
|
-
text-transform: uppercase;
|
|
428
|
-
letter-spacing: 0.5px;
|
|
624
|
+
.octicon-copy {
|
|
625
|
+
fill: currentColor;
|
|
429
626
|
}
|
|
430
627
|
|
|
431
|
-
.file-
|
|
432
|
-
|
|
628
|
+
.file-stats {
|
|
629
|
+
display: flex;
|
|
630
|
+
align-items: center;
|
|
631
|
+
gap: 4px;
|
|
632
|
+
font-size: 12px;
|
|
633
|
+
color: var(--text-secondary);
|
|
433
634
|
}
|
|
434
635
|
|
|
435
|
-
.file-
|
|
436
|
-
|
|
636
|
+
.file-stat {
|
|
637
|
+
color: var(--text-secondary);
|
|
437
638
|
}
|
|
438
639
|
|
|
439
|
-
.file-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
vertical-align: middle;
|
|
640
|
+
.file-stat-separator {
|
|
641
|
+
color: var(--text-secondary);
|
|
642
|
+
opacity: 0.5;
|
|
443
643
|
}
|
|
444
644
|
|
|
445
|
-
.file-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
645
|
+
.file-header-actions {
|
|
646
|
+
flex-shrink: 0;
|
|
647
|
+
display: flex;
|
|
648
|
+
gap: 8px;
|
|
649
|
+
align-items: center;
|
|
650
|
+
flex-wrap: wrap;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
.file-action-group {
|
|
654
|
+
display: inline-flex;
|
|
655
|
+
background-color: var(--bg-primary);
|
|
656
|
+
border: 1px solid var(--border-primary);
|
|
657
|
+
border-radius: 6px;
|
|
658
|
+
overflow: hidden;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.file-action-btn {
|
|
662
|
+
display: inline-flex;
|
|
663
|
+
align-items: center;
|
|
664
|
+
justify-content: center;
|
|
665
|
+
padding: 6px 12px;
|
|
666
|
+
background: transparent;
|
|
667
|
+
border: none;
|
|
668
|
+
color: var(--text-secondary);
|
|
669
|
+
text-decoration: none;
|
|
670
|
+
font-size: 12px;
|
|
671
|
+
font-weight: 500;
|
|
672
|
+
cursor: pointer;
|
|
673
|
+
transition: all 0.15s ease;
|
|
674
|
+
white-space: nowrap;
|
|
675
|
+
gap: 6px;
|
|
676
|
+
border-right: 1px solid var(--border-primary);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
.file-action-btn:last-child {
|
|
680
|
+
border-right: none;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
.file-action-btn:hover {
|
|
684
|
+
background-color: var(--hover-bg);
|
|
685
|
+
color: var(--text-primary);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.file-action-btn .file-action-label {
|
|
689
|
+
color: inherit;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.file-action-icon {
|
|
693
|
+
fill: currentColor;
|
|
694
|
+
flex-shrink: 0;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.copy-raw-btn {
|
|
698
|
+
padding: 6px;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.file-action-btn:first-child {
|
|
702
|
+
border-radius: 6px 0 0 6px;
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
.file-action-btn:last-child {
|
|
706
|
+
border-radius: 0 6px 6px 0;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
/* Single button case */
|
|
710
|
+
.file-action-group:has(.file-action-btn:only-child) .file-action-btn {
|
|
711
|
+
border-radius: 6px;
|
|
712
|
+
border-right: none;
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
main {
|
|
716
|
+
padding: 0;
|
|
717
|
+
display: flex;
|
|
718
|
+
min-height: calc(100vh - 57px);
|
|
719
|
+
background: var(--bg-primary);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/* File Tree Sidebar */
|
|
723
|
+
.file-tree-sidebar {
|
|
724
|
+
width: 280px;
|
|
725
|
+
min-width: 280px;
|
|
726
|
+
max-width: 280px;
|
|
727
|
+
flex-shrink: 0;
|
|
728
|
+
border-right: 1px solid var(--border-primary);
|
|
729
|
+
overflow-y: auto;
|
|
730
|
+
overflow-x: hidden;
|
|
731
|
+
background: var(--bg-secondary);
|
|
732
|
+
position: sticky;
|
|
733
|
+
top: 0;
|
|
734
|
+
height: 100vh;
|
|
735
|
+
max-height: 100vh;
|
|
736
|
+
align-self: stretch;
|
|
737
|
+
transition: opacity 0.2s ease, visibility 0.2s ease;
|
|
738
|
+
display: flex;
|
|
739
|
+
flex-direction: column;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
.file-tree-sidebar.hidden {
|
|
743
|
+
display: none;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
.file-tree-header {
|
|
747
|
+
display: flex;
|
|
748
|
+
align-items: center;
|
|
749
|
+
gap: 8px;
|
|
750
|
+
padding: 12px 16px;
|
|
751
|
+
border-bottom: 1px solid var(--border-primary);
|
|
752
|
+
background: var(--bg-secondary);
|
|
753
|
+
position: sticky;
|
|
754
|
+
top: 0;
|
|
755
|
+
z-index: 1;
|
|
756
|
+
font-size: 14px;
|
|
757
|
+
font-weight: 600;
|
|
758
|
+
color: var(--text-primary);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
.files-icon {
|
|
762
|
+
fill: var(--text-secondary);
|
|
763
|
+
flex-shrink: 0;
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
.sidebar-controls {
|
|
767
|
+
padding: 12px 12px 8px;
|
|
768
|
+
border-bottom: 1px solid var(--border-primary);
|
|
769
|
+
background: var(--bg-secondary);
|
|
770
|
+
display: flex;
|
|
771
|
+
flex-direction: column;
|
|
772
|
+
gap: 8px;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
.sidebar-branch {
|
|
776
|
+
width: 100%;
|
|
777
|
+
justify-content: flex-start;
|
|
778
|
+
font-size: 12px;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
.btn-sidebar {
|
|
782
|
+
width: 100%;
|
|
783
|
+
padding: 5px 12px;
|
|
784
|
+
background: var(--bg-primary);
|
|
785
|
+
border: 1px solid var(--border-primary);
|
|
786
|
+
border-radius: 6px;
|
|
787
|
+
cursor: pointer;
|
|
788
|
+
color: var(--text-primary);
|
|
789
|
+
transition: all 0.15s ease;
|
|
790
|
+
display: flex;
|
|
791
|
+
align-items: center;
|
|
792
|
+
justify-content: center;
|
|
793
|
+
height: 28px;
|
|
794
|
+
font-size: 14px;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
.btn-sidebar:hover {
|
|
798
|
+
background-color: var(--bg-tertiary);
|
|
799
|
+
border-color: var(--text-secondary);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
.sidebar-search {
|
|
803
|
+
width: 100%;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
.sidebar-search .search-input {
|
|
807
|
+
width: 100%;
|
|
808
|
+
font-size: 12px;
|
|
809
|
+
padding: 5px 32px 5px 28px;
|
|
810
|
+
height: 28px;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
.sidebar-search .search-hotkey {
|
|
814
|
+
font-size: 10px;
|
|
815
|
+
padding: 2px 4px;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.file-tree-container {
|
|
819
|
+
padding: 8px 0;
|
|
820
|
+
background: var(--bg-secondary);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
.tree-item {
|
|
824
|
+
display: flex;
|
|
825
|
+
align-items: center;
|
|
826
|
+
gap: 6px;
|
|
827
|
+
padding: 4px 8px;
|
|
828
|
+
cursor: pointer;
|
|
829
|
+
font-size: 14px;
|
|
830
|
+
line-height: 20px;
|
|
831
|
+
color: var(--text-primary);
|
|
832
|
+
transition: background-color 0.1s ease;
|
|
833
|
+
user-select: none;
|
|
834
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
.tree-item:hover {
|
|
838
|
+
background-color: var(--hover-bg);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
.tree-item.active {
|
|
842
|
+
background-color: var(--bg-tertiary);
|
|
843
|
+
font-weight: 600;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
.tree-toggle {
|
|
847
|
+
font-size: 10px;
|
|
848
|
+
color: var(--text-secondary);
|
|
849
|
+
width: 12px;
|
|
850
|
+
display: inline-block;
|
|
851
|
+
text-align: center;
|
|
852
|
+
flex-shrink: 0;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
.tree-spacer {
|
|
856
|
+
width: 12px;
|
|
857
|
+
flex-shrink: 0;
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
.tree-icon {
|
|
861
|
+
flex-shrink: 0;
|
|
862
|
+
fill: var(--text-secondary);
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
.tree-icon.file-icon {
|
|
866
|
+
fill: var(--text-secondary);
|
|
867
|
+
opacity: 0.7;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
.tree-item .tree-icon:not(.file-icon) {
|
|
871
|
+
fill: #7dd3fc;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
[data-theme="light"] .tree-item .tree-icon:not(.file-icon) {
|
|
875
|
+
fill: #54adf5;
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
.tree-label {
|
|
879
|
+
flex: 1;
|
|
880
|
+
overflow: hidden;
|
|
881
|
+
text-overflow: ellipsis;
|
|
882
|
+
white-space: nowrap;
|
|
883
|
+
font-weight: 400;
|
|
884
|
+
letter-spacing: normal;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.tree-children {
|
|
888
|
+
transition: none;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
/* File tree loading skeleton */
|
|
892
|
+
.tree-skeleton {
|
|
893
|
+
padding: 8px;
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
.skeleton-item {
|
|
897
|
+
height: 28px;
|
|
898
|
+
background: linear-gradient(
|
|
899
|
+
90deg,
|
|
900
|
+
var(--bg-secondary) 0%,
|
|
901
|
+
var(--hover-bg) 50%,
|
|
902
|
+
var(--bg-secondary) 100%
|
|
903
|
+
);
|
|
904
|
+
background-size: 200% 100%;
|
|
905
|
+
animation: skeleton-loading 1.5s ease-in-out infinite;
|
|
906
|
+
border-radius: 4px;
|
|
907
|
+
margin-bottom: 4px;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
.skeleton-indent {
|
|
911
|
+
margin-left: 20px;
|
|
912
|
+
width: calc(100% - 20px);
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
@keyframes skeleton-loading {
|
|
916
|
+
0% {
|
|
917
|
+
background-position: 200% 0;
|
|
918
|
+
}
|
|
919
|
+
100% {
|
|
920
|
+
background-position: -200% 0;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.main-content-wrapper {
|
|
925
|
+
flex: 1;
|
|
926
|
+
min-width: 0;
|
|
927
|
+
display: flex;
|
|
928
|
+
flex-direction: column;
|
|
929
|
+
transition: opacity 0.15s ease;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
.main-content-wrapper.no-sidebar {
|
|
933
|
+
width: 100%;
|
|
934
|
+
max-width: 1280px;
|
|
935
|
+
margin: 0 auto;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.main-content-wrapper.no-sidebar .repo-canvas-content {
|
|
939
|
+
max-width: 980px;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
.main-content {
|
|
943
|
+
max-width: 1200px;
|
|
944
|
+
margin: 0 auto;
|
|
945
|
+
padding: 16px 24px;
|
|
946
|
+
width: 100%;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
.directory-actions {
|
|
950
|
+
display: flex;
|
|
951
|
+
gap: 8px;
|
|
952
|
+
margin-bottom: 16px;
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
.btn-icon {
|
|
956
|
+
width: 14px;
|
|
957
|
+
height: 14px;
|
|
958
|
+
fill: currentColor;
|
|
959
|
+
margin-right: 6px;
|
|
960
|
+
vertical-align: text-bottom;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
.file-table {
|
|
964
|
+
width: 100%;
|
|
965
|
+
border-collapse: collapse;
|
|
966
|
+
background-color: var(--bg-primary);
|
|
967
|
+
border: 1px solid var(--border-primary);
|
|
968
|
+
border-radius: 6px;
|
|
969
|
+
overflow: hidden;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.file-table thead {
|
|
973
|
+
background-color: var(--bg-secondary);
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
.file-table th {
|
|
977
|
+
padding: 8px 16px;
|
|
978
|
+
text-align: left;
|
|
979
|
+
font-weight: 600;
|
|
980
|
+
font-size: 12px;
|
|
981
|
+
color: var(--text-accent);
|
|
982
|
+
border-bottom: 1px solid var(--border-primary);
|
|
983
|
+
text-transform: uppercase;
|
|
984
|
+
letter-spacing: 0.5px;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
.file-table tbody tr {
|
|
988
|
+
border-bottom: 1px solid var(--border-secondary);
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
.file-table tbody tr:hover {
|
|
992
|
+
background-color: var(--hover-bg);
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
.file-table td {
|
|
996
|
+
padding: 6px 16px;
|
|
997
|
+
font-size: 14px;
|
|
998
|
+
vertical-align: middle;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
.file-table .icon {
|
|
1002
|
+
width: 24px;
|
|
1003
|
+
text-align: center;
|
|
1004
|
+
font-size: 16px;
|
|
449
1005
|
}
|
|
450
1006
|
|
|
451
1007
|
.octicon-file,
|
|
@@ -462,13 +1018,41 @@ main {
|
|
|
462
1018
|
vertical-align: text-bottom;
|
|
463
1019
|
}
|
|
464
1020
|
|
|
465
|
-
/*
|
|
1021
|
+
/* Brighter, meaningful colors */
|
|
1022
|
+
/* Folders: GitHub-style baby blue */
|
|
466
1023
|
.octicon-directory {
|
|
467
1024
|
fill: #7dd3fc;
|
|
468
|
-
|
|
1025
|
+
color: #7dd3fc;
|
|
1026
|
+
}
|
|
1027
|
+
[data-theme="dark"] .file-row--added .icon .octicon-directory,
|
|
1028
|
+
[data-theme="dark"] .file-row--added .icon .octicon-file { color: #2ea043; fill: #2ea043; }
|
|
1029
|
+
[data-theme="dark"] .file-row--deleted .icon .octicon-directory,
|
|
1030
|
+
[data-theme="dark"] .file-row--deleted .icon .octicon-file { color: #f85149; fill: #f85149; }
|
|
1031
|
+
[data-theme="dark"] .file-row--modified .icon .octicon-directory,
|
|
1032
|
+
[data-theme="dark"] .file-row--modified .icon .octicon-file { color: #d29922; fill: #d29922; }
|
|
1033
|
+
[data-theme="dark"] .file-row--renamed .icon .octicon-directory,
|
|
1034
|
+
[data-theme="dark"] .file-row--renamed .icon .octicon-file { color: #1f6feb; fill: #1f6feb; }
|
|
1035
|
+
[data-theme="dark"] .file-row--untracked .icon .octicon-directory,
|
|
1036
|
+
[data-theme="dark"] .file-row--untracked .icon .octicon-file { color: #a371f7; fill: #a371f7; }
|
|
1037
|
+
[data-theme="dark"] .file-row--mixed .icon .octicon-directory,
|
|
1038
|
+
[data-theme="dark"] .file-row--mixed .icon .octicon-file { color: #db6d28; fill: #db6d28; }
|
|
1039
|
+
|
|
1040
|
+
[data-theme="light"] .file-row--added .icon .octicon-directory,
|
|
1041
|
+
[data-theme="light"] .file-row--added .icon .octicon-file { color: #1a7f37; fill: #1a7f37; }
|
|
1042
|
+
[data-theme="light"] .file-row--deleted .icon .octicon-directory,
|
|
1043
|
+
[data-theme="light"] .file-row--deleted .icon .octicon-file { color: #cf222e; fill: #cf222e; }
|
|
1044
|
+
[data-theme="light"] .file-row--modified .icon .octicon-directory,
|
|
1045
|
+
[data-theme="light"] .file-row--modified .icon .octicon-file { color: #bf8700; fill: #bf8700; }
|
|
1046
|
+
[data-theme="light"] .file-row--renamed .icon .octicon-directory,
|
|
1047
|
+
[data-theme="light"] .file-row--renamed .icon .octicon-file { color: #0969da; fill: #0969da; }
|
|
1048
|
+
[data-theme="light"] .file-row--untracked .icon .octicon-directory,
|
|
1049
|
+
[data-theme="light"] .file-row--untracked .icon .octicon-file { color: #8250df; fill: #8250df; }
|
|
1050
|
+
[data-theme="light"] .file-row--mixed .icon .octicon-directory,
|
|
1051
|
+
[data-theme="light"] .file-row--mixed .icon .octicon-file { color: #9a6700; fill: #9a6700; }
|
|
469
1052
|
|
|
470
1053
|
[data-theme="light"] .octicon-directory {
|
|
471
1054
|
fill: #54adf5;
|
|
1055
|
+
color: #54adf5;
|
|
472
1056
|
}
|
|
473
1057
|
|
|
474
1058
|
.octicon-home {
|
|
@@ -505,9 +1089,10 @@ main {
|
|
|
505
1089
|
align-items: center;
|
|
506
1090
|
gap: 8px;
|
|
507
1091
|
margin-left: 16px;
|
|
508
|
-
max-width:
|
|
509
|
-
overflow:
|
|
1092
|
+
max-width: none; /* allow full content */
|
|
1093
|
+
overflow: visible; /* avoid clipping at edges */
|
|
510
1094
|
position: relative;
|
|
1095
|
+
white-space: nowrap; /* keep in a single row like GitHub */
|
|
511
1096
|
}
|
|
512
1097
|
|
|
513
1098
|
.language-stats:hover {
|
|
@@ -592,7 +1177,9 @@ main {
|
|
|
592
1177
|
color: rgba(255, 255, 255, 0.9);
|
|
593
1178
|
}
|
|
594
1179
|
|
|
595
|
-
.file-row.hidden
|
|
1180
|
+
.file-row.hidden,
|
|
1181
|
+
.tree-item.hidden,
|
|
1182
|
+
.tree-children.hidden {
|
|
596
1183
|
display: none;
|
|
597
1184
|
}
|
|
598
1185
|
|
|
@@ -628,7 +1215,7 @@ main {
|
|
|
628
1215
|
}
|
|
629
1216
|
|
|
630
1217
|
.readme-content {
|
|
631
|
-
padding:
|
|
1218
|
+
padding: 32px;
|
|
632
1219
|
max-height: none;
|
|
633
1220
|
overflow-y: visible;
|
|
634
1221
|
}
|
|
@@ -713,7 +1300,7 @@ main {
|
|
|
713
1300
|
.file-table .name a {
|
|
714
1301
|
color: var(--link-color);
|
|
715
1302
|
text-decoration: none;
|
|
716
|
-
font-weight:
|
|
1303
|
+
font-weight: 600;
|
|
717
1304
|
}
|
|
718
1305
|
|
|
719
1306
|
.file-table .name a:hover {
|
|
@@ -731,20 +1318,22 @@ main {
|
|
|
731
1318
|
background-color: var(--bg-primary);
|
|
732
1319
|
border: 1px solid var(--border-primary);
|
|
733
1320
|
border-radius: 6px;
|
|
734
|
-
overflow:
|
|
1321
|
+
overflow: auto;
|
|
735
1322
|
}
|
|
736
1323
|
|
|
737
1324
|
.file-content pre {
|
|
738
1325
|
margin: 0;
|
|
739
|
-
padding:
|
|
1326
|
+
padding: 0;
|
|
740
1327
|
overflow-x: auto;
|
|
741
1328
|
font-size: 12px;
|
|
742
|
-
line-height:
|
|
1329
|
+
line-height: 20px;
|
|
743
1330
|
background-color: var(--bg-primary);
|
|
744
1331
|
}
|
|
745
1332
|
|
|
746
1333
|
.file-content code {
|
|
747
|
-
font-family:
|
|
1334
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1335
|
+
font-size: 12px;
|
|
1336
|
+
font-weight: 400;
|
|
748
1337
|
}
|
|
749
1338
|
|
|
750
1339
|
/* Image viewing styles */
|
|
@@ -828,31 +1417,31 @@ main {
|
|
|
828
1417
|
.with-line-numbers {
|
|
829
1418
|
counter-reset: line;
|
|
830
1419
|
display: block;
|
|
1420
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1421
|
+
font-weight: 400;
|
|
831
1422
|
}
|
|
832
1423
|
|
|
833
1424
|
.line-container {
|
|
834
1425
|
display: block;
|
|
835
1426
|
position: relative;
|
|
836
|
-
transition: background-color 0.
|
|
837
|
-
padding:
|
|
838
|
-
line-height:
|
|
1427
|
+
transition: background-color 0.12s ease;
|
|
1428
|
+
padding: 0;
|
|
1429
|
+
line-height: 20px;
|
|
1430
|
+
min-height: 20px;
|
|
839
1431
|
}
|
|
840
1432
|
|
|
841
|
-
|
|
842
|
-
content: '\A';
|
|
843
|
-
white-space: pre;
|
|
844
|
-
}
|
|
1433
|
+
/* Remove pseudo-newline that created extra blank lines */
|
|
845
1434
|
|
|
846
1435
|
.line-container:hover {
|
|
847
|
-
background-color:
|
|
1436
|
+
background-color: rgba(110, 118, 129, 0.1); /* subtle hover like GH */
|
|
848
1437
|
}
|
|
849
1438
|
|
|
850
1439
|
.line-container.selected {
|
|
851
|
-
background-color: #
|
|
1440
|
+
background-color: #fffbdd; /* GH light selection */
|
|
852
1441
|
}
|
|
853
1442
|
|
|
854
1443
|
[data-theme="dark"] .line-container.selected {
|
|
855
|
-
background-color:
|
|
1444
|
+
background-color: rgba(187, 128, 9, 0.18); /* GH-ish dark yellow */
|
|
856
1445
|
}
|
|
857
1446
|
|
|
858
1447
|
/* Editor */
|
|
@@ -1006,20 +1595,21 @@ main {
|
|
|
1006
1595
|
gap: 8px;
|
|
1007
1596
|
}
|
|
1008
1597
|
|
|
1009
|
-
|
|
1010
|
-
/* No additional styling needed - uses existing .file-editor */
|
|
1011
|
-
}
|
|
1598
|
+
|
|
1012
1599
|
|
|
1013
1600
|
.line-number {
|
|
1014
1601
|
display: inline-block;
|
|
1015
|
-
width:
|
|
1602
|
+
width: 56px;
|
|
1016
1603
|
text-align: right;
|
|
1017
|
-
margin-right:
|
|
1018
|
-
padding
|
|
1604
|
+
margin-right: 0;
|
|
1605
|
+
padding: 0 10px;
|
|
1019
1606
|
color: var(--text-secondary);
|
|
1020
|
-
|
|
1607
|
+
background: transparent;
|
|
1608
|
+
border-right: 1px solid var(--border-primary);
|
|
1021
1609
|
font-size: 12px;
|
|
1022
|
-
line-height:
|
|
1610
|
+
line-height: 20px;
|
|
1611
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1612
|
+
font-weight: 400;
|
|
1023
1613
|
user-select: none;
|
|
1024
1614
|
-webkit-user-select: none;
|
|
1025
1615
|
text-decoration: none;
|
|
@@ -1033,8 +1623,17 @@ main {
|
|
|
1033
1623
|
|
|
1034
1624
|
.line-content {
|
|
1035
1625
|
white-space: pre;
|
|
1626
|
+
display: inline-block;
|
|
1627
|
+
padding: 0 10px;
|
|
1628
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1629
|
+
font-size: 12px;
|
|
1630
|
+
line-height: 20px;
|
|
1631
|
+
font-weight: 400;
|
|
1632
|
+
letter-spacing: normal;
|
|
1036
1633
|
}
|
|
1037
1634
|
|
|
1635
|
+
/* Keep gutter simple: only border-right, no per-line background */
|
|
1636
|
+
|
|
1038
1637
|
/* GitHub syntax highlighting - Dark theme */
|
|
1039
1638
|
.hljs-comment,
|
|
1040
1639
|
.hljs-quote {
|
|
@@ -1306,7 +1905,7 @@ main {
|
|
|
1306
1905
|
padding: 3px 6px;
|
|
1307
1906
|
border-radius: 6px;
|
|
1308
1907
|
font-size: 85%;
|
|
1309
|
-
font-family:
|
|
1908
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1310
1909
|
color: var(--text-accent);
|
|
1311
1910
|
border: 1px solid var(--border-primary);
|
|
1312
1911
|
}
|
|
@@ -1376,47 +1975,45 @@ main {
|
|
|
1376
1975
|
.main-content {
|
|
1377
1976
|
padding: 12px 16px;
|
|
1378
1977
|
}
|
|
1379
|
-
|
|
1978
|
+
|
|
1380
1979
|
.repo-canvas-content {
|
|
1381
1980
|
padding: 12px 16px;
|
|
1382
1981
|
}
|
|
1383
|
-
|
|
1982
|
+
|
|
1384
1983
|
.header-content {
|
|
1385
|
-
padding:
|
|
1386
|
-
|
|
1387
|
-
|
|
1984
|
+
padding: 8px 16px;
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
.header-left h1 {
|
|
1988
|
+
font-size: 14px;
|
|
1388
1989
|
}
|
|
1389
|
-
|
|
1990
|
+
|
|
1390
1991
|
.file-table .size,
|
|
1391
1992
|
.file-table .modified {
|
|
1392
1993
|
display: none;
|
|
1393
1994
|
}
|
|
1394
|
-
|
|
1995
|
+
|
|
1395
1996
|
.repo-controls {
|
|
1396
1997
|
flex-direction: column;
|
|
1397
1998
|
gap: 12px;
|
|
1398
1999
|
align-items: stretch;
|
|
1399
2000
|
}
|
|
1400
|
-
|
|
2001
|
+
|
|
1401
2002
|
.repo-controls-right {
|
|
1402
2003
|
flex-direction: column;
|
|
1403
2004
|
gap: 8px;
|
|
1404
2005
|
}
|
|
1405
|
-
|
|
1406
|
-
.header-right {
|
|
1407
|
-
align-self: flex-end;
|
|
1408
|
-
}
|
|
1409
|
-
|
|
2006
|
+
|
|
1410
2007
|
.keyboard-help-content {
|
|
1411
2008
|
margin: 20px;
|
|
1412
2009
|
max-width: calc(100% - 40px);
|
|
1413
2010
|
}
|
|
1414
|
-
|
|
2011
|
+
|
|
1415
2012
|
.keyboard-shortcuts-grid {
|
|
1416
2013
|
grid-template-columns: 1fr;
|
|
1417
2014
|
gap: 24px;
|
|
1418
2015
|
}
|
|
1419
|
-
|
|
2016
|
+
|
|
1420
2017
|
.keyboard-help-body {
|
|
1421
2018
|
padding: 20px;
|
|
1422
2019
|
}
|
|
@@ -1573,7 +2170,7 @@ main {
|
|
|
1573
2170
|
border-radius: 4px;
|
|
1574
2171
|
padding: 4px 8px;
|
|
1575
2172
|
font-size: 11px;
|
|
1576
|
-
font-family:
|
|
2173
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1577
2174
|
color: var(--text-primary);
|
|
1578
2175
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
1579
2176
|
white-space: nowrap;
|
|
@@ -1628,52 +2225,53 @@ main {
|
|
|
1628
2225
|
vertical-align: middle;
|
|
1629
2226
|
}
|
|
1630
2227
|
|
|
2228
|
+
/* Git status colors - brighter palette */
|
|
1631
2229
|
.git-status-M {
|
|
1632
|
-
color: #
|
|
2230
|
+
color: #d29922; /* modified - amber */
|
|
1633
2231
|
}
|
|
1634
2232
|
|
|
1635
2233
|
.git-status-A {
|
|
1636
|
-
color: #
|
|
2234
|
+
color: #2ea043; /* added - green */
|
|
1637
2235
|
}
|
|
1638
2236
|
|
|
1639
2237
|
.git-status-D {
|
|
1640
|
-
color: #
|
|
2238
|
+
color: #f85149; /* deleted - red */
|
|
1641
2239
|
}
|
|
1642
2240
|
|
|
1643
2241
|
.git-status-R {
|
|
1644
|
-
color: #
|
|
2242
|
+
color: #1f6feb; /* renamed - blue */
|
|
1645
2243
|
}
|
|
1646
2244
|
|
|
1647
|
-
.git-status
|
|
1648
|
-
color:
|
|
2245
|
+
.git-status-\?\? {
|
|
2246
|
+
color: #a371f7; /* untracked - purple */
|
|
1649
2247
|
}
|
|
1650
2248
|
|
|
1651
2249
|
.git-status-MM,
|
|
1652
2250
|
.git-status-AM,
|
|
1653
2251
|
.git-status-AD {
|
|
1654
|
-
color: #
|
|
2252
|
+
color: #db6d28; /* mixed - orange */
|
|
1655
2253
|
}
|
|
1656
2254
|
|
|
1657
2255
|
[data-theme="light"] .git-status-M {
|
|
1658
|
-
color: #
|
|
2256
|
+
color: #bf8700;
|
|
1659
2257
|
}
|
|
1660
2258
|
|
|
1661
2259
|
[data-theme="light"] .git-status-A {
|
|
1662
|
-
color: #
|
|
2260
|
+
color: #1a7f37;
|
|
1663
2261
|
}
|
|
1664
2262
|
|
|
1665
2263
|
[data-theme="light"] .git-status-D {
|
|
1666
|
-
color: #
|
|
2264
|
+
color: #cf222e;
|
|
1667
2265
|
}
|
|
1668
2266
|
|
|
1669
2267
|
[data-theme="light"] .git-status-R {
|
|
1670
|
-
color: #
|
|
2268
|
+
color: #0969da;
|
|
1671
2269
|
}
|
|
1672
2270
|
|
|
1673
2271
|
[data-theme="light"] .git-status-MM,
|
|
1674
2272
|
[data-theme="light"] .git-status-AM,
|
|
1675
2273
|
[data-theme="light"] .git-status-AD {
|
|
1676
|
-
color: #
|
|
2274
|
+
color: #9a6700;
|
|
1677
2275
|
}
|
|
1678
2276
|
|
|
1679
2277
|
/* Git Diff Viewer */
|
|
@@ -1775,9 +2373,10 @@ main {
|
|
|
1775
2373
|
.diff-side-content {
|
|
1776
2374
|
flex: 1;
|
|
1777
2375
|
overflow: auto;
|
|
1778
|
-
font-family:
|
|
2376
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
1779
2377
|
font-size: 12px;
|
|
1780
|
-
line-height:
|
|
2378
|
+
line-height: 20px;
|
|
2379
|
+
font-weight: 400;
|
|
1781
2380
|
}
|
|
1782
2381
|
|
|
1783
2382
|
.diff-line {
|
|
@@ -1798,517 +2397,221 @@ main {
|
|
|
1798
2397
|
}
|
|
1799
2398
|
|
|
1800
2399
|
.diff-line-content {
|
|
1801
|
-
padding: 0 8px;
|
|
1802
|
-
flex: 1;
|
|
1803
|
-
overflow-x: auto;
|
|
1804
|
-
}
|
|
1805
|
-
|
|
1806
|
-
.diff-line-added {
|
|
1807
|
-
background: #0f5132;
|
|
1808
|
-
color: #75b798;
|
|
1809
|
-
}
|
|
1810
|
-
|
|
1811
|
-
.diff-line-added .diff-line-number {
|
|
1812
|
-
background: #0a4027;
|
|
1813
|
-
}
|
|
1814
|
-
|
|
1815
|
-
.diff-line-removed {
|
|
1816
|
-
background: #67060c;
|
|
1817
|
-
color: #f8d7da;
|
|
1818
|
-
}
|
|
1819
|
-
|
|
1820
|
-
.diff-line-removed .diff-line-number {
|
|
1821
|
-
background: #4a0409;
|
|
1822
|
-
}
|
|
1823
|
-
|
|
1824
|
-
.diff-line-context {
|
|
1825
|
-
background: var(--bg-primary);
|
|
1826
|
-
color: var(--text-primary);
|
|
1827
|
-
}
|
|
1828
|
-
|
|
1829
|
-
[data-theme="light"] .diff-line-added {
|
|
1830
|
-
background: #d1e7dd;
|
|
1831
|
-
color: #055160;
|
|
1832
|
-
}
|
|
1833
|
-
|
|
1834
|
-
[data-theme="light"] .diff-line-added .diff-line-number {
|
|
1835
|
-
background: #badbcc;
|
|
1836
|
-
}
|
|
1837
|
-
|
|
1838
|
-
[data-theme="light"] .diff-line-removed {
|
|
1839
|
-
background: #f8d7da;
|
|
1840
|
-
color: #721c24;
|
|
1841
|
-
}
|
|
1842
|
-
|
|
1843
|
-
[data-theme="light"] .diff-line-removed .diff-line-number {
|
|
1844
|
-
background: #f1aeb5;
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
|
-
.diff-stats {
|
|
1848
|
-
display: flex;
|
|
1849
|
-
gap: 16px;
|
|
1850
|
-
align-items: center;
|
|
1851
|
-
font-size: 12px;
|
|
1852
|
-
}
|
|
1853
|
-
|
|
1854
|
-
.diff-stat {
|
|
1855
|
-
display: flex;
|
|
1856
|
-
align-items: center;
|
|
1857
|
-
gap: 4px;
|
|
1858
|
-
}
|
|
1859
|
-
|
|
1860
|
-
.diff-stat-added {
|
|
1861
|
-
color: #28a745;
|
|
1862
|
-
}
|
|
1863
|
-
|
|
1864
|
-
.diff-stat-removed {
|
|
1865
|
-
color: #dc3545;
|
|
1866
|
-
}
|
|
1867
|
-
|
|
1868
|
-
/* Beautiful raw diff styles */
|
|
1869
|
-
.diff-container {
|
|
1870
|
-
max-width: 100%;
|
|
1871
|
-
margin: 0;
|
|
1872
|
-
padding: 0;
|
|
1873
|
-
background: var(--bg-primary);
|
|
1874
|
-
border-radius: 8px;
|
|
1875
|
-
border: 1px solid var(--border-primary);
|
|
1876
|
-
overflow: hidden;
|
|
1877
|
-
}
|
|
1878
|
-
|
|
1879
|
-
.diff-content {
|
|
1880
|
-
padding: 0;
|
|
1881
|
-
}
|
|
1882
|
-
|
|
1883
|
-
.raw-diff-container {
|
|
1884
|
-
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
|
|
1885
|
-
font-size: 14px;
|
|
1886
|
-
line-height: 1.5;
|
|
1887
|
-
overflow-x: auto;
|
|
1888
|
-
}
|
|
1889
|
-
|
|
1890
|
-
.diff-line {
|
|
1891
|
-
display: flex;
|
|
1892
|
-
align-items: stretch;
|
|
1893
|
-
min-height: 24px;
|
|
1894
|
-
border-bottom: 1px solid rgba(0, 0, 0, 0.03);
|
|
1895
|
-
transition: background-color 0.1s ease;
|
|
1896
|
-
}
|
|
1897
|
-
|
|
1898
|
-
.diff-line:hover {
|
|
1899
|
-
background-color: rgba(255, 255, 255, 0.02) !important;
|
|
1900
|
-
}
|
|
1901
|
-
|
|
1902
|
-
.diff-line-number {
|
|
1903
|
-
padding: 4px 12px;
|
|
1904
|
-
background: var(--bg-secondary);
|
|
1905
|
-
color: var(--text-secondary);
|
|
1906
|
-
text-align: right;
|
|
1907
|
-
min-width: 60px;
|
|
1908
|
-
user-select: none;
|
|
1909
|
-
border-right: 1px solid var(--border-primary);
|
|
1910
|
-
flex-shrink: 0;
|
|
1911
|
-
font-size: 12px;
|
|
1912
|
-
display: flex;
|
|
1913
|
-
align-items: center;
|
|
1914
|
-
justify-content: flex-end;
|
|
1915
|
-
}
|
|
1916
|
-
|
|
1917
|
-
.diff-line-content {
|
|
1918
|
-
padding: 4px 16px;
|
|
1919
|
-
flex: 1;
|
|
1920
|
-
white-space: pre;
|
|
1921
|
-
overflow-x: auto;
|
|
1922
|
-
display: flex;
|
|
1923
|
-
align-items: center;
|
|
1924
|
-
}
|
|
1925
|
-
|
|
1926
|
-
/* Different line types */
|
|
1927
|
-
.diff-line-added {
|
|
1928
|
-
background: rgba(46, 160, 67, 0.12);
|
|
1929
|
-
border-left: 3px solid #2ea043;
|
|
1930
|
-
}
|
|
1931
|
-
|
|
1932
|
-
.diff-line-added .diff-line-number {
|
|
1933
|
-
background: rgba(46, 160, 67, 0.2);
|
|
1934
|
-
color: #2ea043;
|
|
1935
|
-
font-weight: 600;
|
|
1936
|
-
}
|
|
1937
|
-
|
|
1938
|
-
.diff-line-removed {
|
|
1939
|
-
background: rgba(248, 81, 73, 0.12);
|
|
1940
|
-
border-left: 3px solid #f85149;
|
|
1941
|
-
}
|
|
1942
|
-
|
|
1943
|
-
.diff-line-removed .diff-line-number {
|
|
1944
|
-
background: rgba(248, 81, 73, 0.2);
|
|
1945
|
-
color: #f85149;
|
|
1946
|
-
font-weight: 600;
|
|
1947
|
-
}
|
|
1948
|
-
|
|
1949
|
-
.diff-line-context {
|
|
1950
|
-
background: var(--bg-primary);
|
|
1951
|
-
color: var(--text-primary);
|
|
1952
|
-
}
|
|
1953
|
-
|
|
1954
|
-
.diff-line-hunk {
|
|
1955
|
-
background: rgba(88, 166, 255, 0.08);
|
|
1956
|
-
border-left: 3px solid #58a6ff;
|
|
1957
|
-
font-weight: 600;
|
|
1958
|
-
}
|
|
1959
|
-
|
|
1960
|
-
.diff-line-hunk .diff-line-number {
|
|
1961
|
-
background: rgba(88, 166, 255, 0.2);
|
|
1962
|
-
color: #58a6ff;
|
|
1963
|
-
}
|
|
1964
|
-
|
|
1965
|
-
.diff-line-hunk .diff-line-content {
|
|
1966
|
-
color: #58a6ff;
|
|
1967
|
-
}
|
|
1968
|
-
|
|
1969
|
-
.diff-line-header {
|
|
1970
|
-
background: var(--bg-secondary);
|
|
1971
|
-
color: var(--text-secondary);
|
|
1972
|
-
font-weight: 500;
|
|
1973
|
-
border-left: 3px solid var(--text-secondary);
|
|
1974
|
-
opacity: 0.8;
|
|
1975
|
-
}
|
|
1976
|
-
|
|
1977
|
-
.diff-line-header .diff-line-number {
|
|
1978
|
-
background: var(--bg-tertiary);
|
|
1979
|
-
}
|
|
1980
|
-
|
|
1981
|
-
/* Light theme adjustments */
|
|
1982
|
-
[data-theme="light"] .diff-line-added {
|
|
1983
|
-
background: rgba(46, 160, 67, 0.1);
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
|
-
[data-theme="light"] .diff-line-removed {
|
|
1987
|
-
background: rgba(248, 81, 73, 0.1);
|
|
1988
|
-
}
|
|
1989
|
-
|
|
1990
|
-
[data-theme="light"] .diff-line-hunk {
|
|
1991
|
-
background: rgba(9, 105, 218, 0.1);
|
|
1992
|
-
border-left-color: #0969da;
|
|
1993
|
-
}
|
|
1994
|
-
|
|
1995
|
-
[data-theme="light"] .diff-line-hunk .diff-line-number {
|
|
1996
|
-
background: rgba(9, 105, 218, 0.15);
|
|
1997
|
-
color: #0969da;
|
|
1998
|
-
}
|
|
1999
|
-
|
|
2000
|
-
[data-theme="light"] .diff-line-hunk .diff-line-content {
|
|
2001
|
-
color: #0969da;
|
|
2002
|
-
}
|
|
2003
|
-
|
|
2004
|
-
.no-changes {
|
|
2005
|
-
padding: 40px;
|
|
2006
|
-
text-align: center;
|
|
2007
|
-
color: var(--text-secondary);
|
|
2008
|
-
font-style: italic;
|
|
2400
|
+
padding: 0 8px;
|
|
2401
|
+
flex: 1;
|
|
2402
|
+
overflow-x: auto;
|
|
2009
2403
|
}
|
|
2010
2404
|
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
color: var(--text-primary);
|
|
2015
|
-
border: 1px solid var(--border-primary);
|
|
2016
|
-
border-radius: 6px;
|
|
2017
|
-
padding: 6px 12px;
|
|
2018
|
-
font-size: 13px;
|
|
2019
|
-
font-weight: 500;
|
|
2020
|
-
cursor: pointer;
|
|
2021
|
-
transition: all 0.15s ease;
|
|
2022
|
-
display: flex;
|
|
2023
|
-
align-items: center;
|
|
2024
|
-
gap: 4px;
|
|
2025
|
-
margin-right: 8px;
|
|
2405
|
+
.diff-line-added {
|
|
2406
|
+
background: #0f5132;
|
|
2407
|
+
color: #75b798;
|
|
2026
2408
|
}
|
|
2027
2409
|
|
|
2028
|
-
.
|
|
2029
|
-
background:
|
|
2030
|
-
border-color: var(--text-secondary);
|
|
2410
|
+
.diff-line-added .diff-line-number {
|
|
2411
|
+
background: #0a4027;
|
|
2031
2412
|
}
|
|
2032
2413
|
|
|
2033
|
-
.
|
|
2034
|
-
|
|
2035
|
-
|
|
2414
|
+
.diff-line-removed {
|
|
2415
|
+
background: #67060c;
|
|
2416
|
+
color: #f8d7da;
|
|
2036
2417
|
}
|
|
2037
2418
|
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
position: fixed;
|
|
2041
|
-
top: 0;
|
|
2042
|
-
left: 0;
|
|
2043
|
-
right: 0;
|
|
2044
|
-
bottom: 0;
|
|
2045
|
-
background: rgba(0, 0, 0, 0.7);
|
|
2046
|
-
display: flex;
|
|
2047
|
-
align-items: center;
|
|
2048
|
-
justify-content: center;
|
|
2049
|
-
z-index: 1000;
|
|
2419
|
+
.diff-line-removed .diff-line-number {
|
|
2420
|
+
background: #4a0409;
|
|
2050
2421
|
}
|
|
2051
2422
|
|
|
2052
|
-
.
|
|
2423
|
+
.diff-line-context {
|
|
2053
2424
|
background: var(--bg-primary);
|
|
2054
|
-
|
|
2055
|
-
border-radius: 8px;
|
|
2056
|
-
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
|
|
2057
|
-
padding: 20px;
|
|
2058
|
-
max-width: 90vw;
|
|
2059
|
-
max-height: 90vh;
|
|
2060
|
-
overflow-y: auto;
|
|
2425
|
+
color: var(--text-primary);
|
|
2061
2426
|
}
|
|
2062
2427
|
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
top: 0;
|
|
2067
|
-
left: 0;
|
|
2068
|
-
right: 0;
|
|
2069
|
-
bottom: 0;
|
|
2070
|
-
background: rgba(0, 0, 0, 0.7);
|
|
2071
|
-
display: flex;
|
|
2072
|
-
align-items: center;
|
|
2073
|
-
justify-content: center;
|
|
2074
|
-
z-index: 1000;
|
|
2428
|
+
[data-theme="light"] .diff-line-added {
|
|
2429
|
+
background: #d1e7dd;
|
|
2430
|
+
color: #055160;
|
|
2075
2431
|
}
|
|
2076
2432
|
|
|
2077
|
-
.
|
|
2078
|
-
background:
|
|
2079
|
-
border: 1px solid var(--border-primary);
|
|
2080
|
-
border-radius: 8px;
|
|
2081
|
-
width: 500px;
|
|
2082
|
-
max-width: 90vw;
|
|
2083
|
-
max-height: 80vh;
|
|
2084
|
-
overflow: hidden;
|
|
2085
|
-
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
|
|
2433
|
+
[data-theme="light"] .diff-line-added .diff-line-number {
|
|
2434
|
+
background: #badbcc;
|
|
2086
2435
|
}
|
|
2087
2436
|
|
|
2088
|
-
.
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
background: var(--bg-secondary);
|
|
2092
|
-
display: flex;
|
|
2093
|
-
align-items: center;
|
|
2094
|
-
justify-content: space-between;
|
|
2437
|
+
[data-theme="light"] .diff-line-removed {
|
|
2438
|
+
background: #f8d7da;
|
|
2439
|
+
color: #721c24;
|
|
2095
2440
|
}
|
|
2096
2441
|
|
|
2097
|
-
.
|
|
2098
|
-
|
|
2099
|
-
font-size: 16px;
|
|
2100
|
-
font-weight: 600;
|
|
2101
|
-
color: var(--text-primary);
|
|
2442
|
+
[data-theme="light"] .diff-line-removed .diff-line-number {
|
|
2443
|
+
background: #f1aeb5;
|
|
2102
2444
|
}
|
|
2103
2445
|
|
|
2104
|
-
.
|
|
2105
|
-
background: none;
|
|
2106
|
-
border: none;
|
|
2107
|
-
font-size: 20px;
|
|
2108
|
-
color: var(--text-secondary);
|
|
2109
|
-
cursor: pointer;
|
|
2110
|
-
padding: 0;
|
|
2111
|
-
width: 24px;
|
|
2112
|
-
height: 24px;
|
|
2446
|
+
.diff-stats {
|
|
2113
2447
|
display: flex;
|
|
2448
|
+
gap: 16px;
|
|
2114
2449
|
align-items: center;
|
|
2115
|
-
|
|
2116
|
-
border-radius: 4px;
|
|
2450
|
+
font-size: 12px;
|
|
2117
2451
|
}
|
|
2118
2452
|
|
|
2119
|
-
.
|
|
2120
|
-
|
|
2121
|
-
|
|
2453
|
+
.diff-stat {
|
|
2454
|
+
display: flex;
|
|
2455
|
+
align-items: center;
|
|
2456
|
+
gap: 4px;
|
|
2122
2457
|
}
|
|
2123
2458
|
|
|
2124
|
-
.
|
|
2125
|
-
|
|
2126
|
-
max-height: 50vh;
|
|
2127
|
-
overflow-y: auto;
|
|
2459
|
+
.diff-stat-added {
|
|
2460
|
+
color: #28a745;
|
|
2128
2461
|
}
|
|
2129
2462
|
|
|
2130
|
-
.
|
|
2131
|
-
|
|
2132
|
-
font-size: 14px;
|
|
2133
|
-
font-weight: 600;
|
|
2134
|
-
color: var(--text-primary);
|
|
2463
|
+
.diff-stat-removed {
|
|
2464
|
+
color: #dc3545;
|
|
2135
2465
|
}
|
|
2136
2466
|
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2467
|
+
/* Clean GitHub-style diff */
|
|
2468
|
+
.diff-container {
|
|
2469
|
+
width: 100%;
|
|
2470
|
+
margin: 0;
|
|
2140
2471
|
padding: 0;
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
overflow:
|
|
2472
|
+
background: var(--bg-primary);
|
|
2473
|
+
overflow-x: auto;
|
|
2474
|
+
overflow-y: visible;
|
|
2144
2475
|
}
|
|
2145
2476
|
|
|
2146
|
-
.
|
|
2477
|
+
.diff-content {
|
|
2147
2478
|
padding: 0;
|
|
2148
|
-
|
|
2149
|
-
|
|
2479
|
+
min-width: 100%;
|
|
2480
|
+
display: block;
|
|
2150
2481
|
}
|
|
2151
2482
|
|
|
2152
|
-
.
|
|
2153
|
-
|
|
2483
|
+
.raw-diff-container {
|
|
2484
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
2485
|
+
font-size: 12px;
|
|
2486
|
+
line-height: 20px;
|
|
2487
|
+
font-weight: 400;
|
|
2488
|
+
min-width: max-content;
|
|
2154
2489
|
}
|
|
2155
2490
|
|
|
2156
|
-
|
|
2491
|
+
/* Diff line with two line number columns + content */
|
|
2492
|
+
.diff-line {
|
|
2157
2493
|
display: flex;
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2494
|
+
min-height: 20px;
|
|
2495
|
+
line-height: 20px;
|
|
2496
|
+
color: var(--text-primary);
|
|
2497
|
+
transition: background-color 0.1s ease;
|
|
2498
|
+
align-items: stretch;
|
|
2163
2499
|
}
|
|
2164
2500
|
|
|
2165
|
-
.
|
|
2166
|
-
background: var(--bg
|
|
2501
|
+
.diff-line:hover {
|
|
2502
|
+
background-color: var(--hover-bg);
|
|
2167
2503
|
}
|
|
2168
2504
|
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
width: 16px;
|
|
2172
|
-
height: 16px;
|
|
2173
|
-
border: 2px solid var(--border-primary);
|
|
2174
|
-
border-radius: 3px;
|
|
2175
|
-
background: var(--bg-primary);
|
|
2176
|
-
cursor: pointer;
|
|
2177
|
-
position: relative;
|
|
2178
|
-
transition: all 0.15s ease;
|
|
2505
|
+
/* Line number columns - two side by side */
|
|
2506
|
+
.diff-line-number {
|
|
2179
2507
|
display: inline-block;
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2508
|
+
min-width: 50px;
|
|
2509
|
+
max-width: 50px;
|
|
2510
|
+
padding: 0 8px;
|
|
2511
|
+
text-align: right;
|
|
2512
|
+
color: var(--text-secondary);
|
|
2185
2513
|
background: var(--bg-secondary);
|
|
2514
|
+
user-select: none;
|
|
2515
|
+
flex-shrink: 0;
|
|
2516
|
+
font-variant-numeric: tabular-nums;
|
|
2517
|
+
border-right: 1px solid var(--border-primary);
|
|
2186
2518
|
}
|
|
2187
2519
|
|
|
2188
|
-
.
|
|
2189
|
-
|
|
2190
|
-
outline-offset: 2px;
|
|
2520
|
+
.diff-line-number.old {
|
|
2521
|
+
border-right: none;
|
|
2191
2522
|
}
|
|
2192
2523
|
|
|
2193
|
-
.
|
|
2194
|
-
|
|
2195
|
-
border-color: var(--link-color);
|
|
2524
|
+
.diff-line-number.new {
|
|
2525
|
+
border-right: 1px solid var(--border-primary);
|
|
2196
2526
|
}
|
|
2197
2527
|
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
left: 50%;
|
|
2202
|
-
top: 50%;
|
|
2203
|
-
transform: translate(-50%, -50%) rotate(45deg);
|
|
2204
|
-
width: 3px;
|
|
2205
|
-
height: 6px;
|
|
2206
|
-
border: solid white;
|
|
2207
|
-
border-width: 0 2px 2px 0;
|
|
2208
|
-
display: block;
|
|
2528
|
+
/* Empty line numbers for headers/hunks */
|
|
2529
|
+
.diff-line-number:empty::before {
|
|
2530
|
+
content: '\00a0'; /* Non-breaking space to maintain height */
|
|
2209
2531
|
}
|
|
2210
2532
|
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2533
|
+
/* Content area - takes remaining space */
|
|
2534
|
+
.diff-line-content {
|
|
2535
|
+
padding: 0 10px;
|
|
2536
|
+
white-space: pre;
|
|
2537
|
+
overflow-x: auto;
|
|
2538
|
+
flex: 1;
|
|
2539
|
+
min-width: 0;
|
|
2215
2540
|
}
|
|
2216
2541
|
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
flex: 1;
|
|
2542
|
+
/* Different line types - GitHub-style subtle backgrounds */
|
|
2543
|
+
.diff-line-added {
|
|
2544
|
+
background: rgba(46, 160, 67, 0.15);
|
|
2221
2545
|
}
|
|
2222
2546
|
|
|
2223
|
-
.
|
|
2224
|
-
|
|
2225
|
-
background: var(--bg-secondary);
|
|
2226
|
-
color: var(--text-primary);
|
|
2227
|
-
font-size: 12px;
|
|
2228
|
-
font-weight: 600;
|
|
2229
|
-
border-bottom: none;
|
|
2547
|
+
.diff-line-added .diff-line-number {
|
|
2548
|
+
background: rgba(46, 160, 67, 0.1);
|
|
2230
2549
|
}
|
|
2231
2550
|
|
|
2232
|
-
.
|
|
2233
|
-
|
|
2234
|
-
height: 14px;
|
|
2235
|
-
margin-right: 6px;
|
|
2236
|
-
vertical-align: middle;
|
|
2237
|
-
fill: var(--text-secondary);
|
|
2551
|
+
.diff-line-removed {
|
|
2552
|
+
background: rgba(248, 81, 73, 0.15);
|
|
2238
2553
|
}
|
|
2239
2554
|
|
|
2240
|
-
.
|
|
2241
|
-
|
|
2555
|
+
.diff-line-removed .diff-line-number {
|
|
2556
|
+
background: rgba(248, 81, 73, 0.1);
|
|
2242
2557
|
}
|
|
2243
2558
|
|
|
2244
|
-
|
|
2245
|
-
width: 100%;
|
|
2246
|
-
min-height: 80px;
|
|
2247
|
-
padding: 12px;
|
|
2248
|
-
border: 1px solid var(--border-primary);
|
|
2249
|
-
border-radius: 6px;
|
|
2559
|
+
.diff-line-context {
|
|
2250
2560
|
background: var(--bg-primary);
|
|
2251
|
-
color: var(--text-primary);
|
|
2252
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
2253
|
-
font-size: 14px;
|
|
2254
|
-
line-height: 1.4;
|
|
2255
|
-
resize: vertical;
|
|
2256
|
-
box-sizing: border-box;
|
|
2257
2561
|
}
|
|
2258
2562
|
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2563
|
+
.diff-line-hunk {
|
|
2564
|
+
background: rgba(88, 166, 255, 0.1);
|
|
2565
|
+
font-weight: 600;
|
|
2566
|
+
color: #58a6ff;
|
|
2263
2567
|
}
|
|
2264
2568
|
|
|
2265
|
-
.
|
|
2266
|
-
|
|
2267
|
-
|
|
2569
|
+
.diff-line-hunk .diff-line-number {
|
|
2570
|
+
background: rgba(88, 166, 255, 0.05);
|
|
2571
|
+
}
|
|
2572
|
+
|
|
2573
|
+
.diff-line-header {
|
|
2268
2574
|
background: var(--bg-secondary);
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
gap: 12px;
|
|
2575
|
+
color: var(--text-secondary);
|
|
2576
|
+
font-weight: 500;
|
|
2577
|
+
opacity: 0.9;
|
|
2273
2578
|
}
|
|
2274
2579
|
|
|
2275
|
-
.
|
|
2276
|
-
background:
|
|
2277
|
-
border: 1px solid var(--border-primary);
|
|
2278
|
-
color: var(--text-primary);
|
|
2279
|
-
border-radius: 6px;
|
|
2280
|
-
padding: 8px 16px;
|
|
2281
|
-
font-size: 14px;
|
|
2282
|
-
cursor: pointer;
|
|
2283
|
-
transition: all 0.15s ease;
|
|
2580
|
+
.diff-line-header .diff-line-number {
|
|
2581
|
+
background: var(--bg-secondary);
|
|
2284
2582
|
}
|
|
2285
2583
|
|
|
2286
|
-
|
|
2287
|
-
|
|
2584
|
+
/* Light theme adjustments */
|
|
2585
|
+
[data-theme="light"] .diff-line-added {
|
|
2586
|
+
background: rgba(46, 160, 67, 0.1);
|
|
2288
2587
|
}
|
|
2289
2588
|
|
|
2290
|
-
.
|
|
2291
|
-
background:
|
|
2292
|
-
color: var(--text-primary);
|
|
2293
|
-
border: 1px solid var(--border-primary);
|
|
2294
|
-
border: none;
|
|
2295
|
-
border-radius: 6px;
|
|
2296
|
-
padding: 8px 16px;
|
|
2297
|
-
font-size: 14px;
|
|
2298
|
-
font-weight: 500;
|
|
2299
|
-
cursor: pointer;
|
|
2300
|
-
transition: all 0.15s ease;
|
|
2589
|
+
[data-theme="light"] .diff-line-added .diff-line-number {
|
|
2590
|
+
background: rgba(46, 160, 67, 0.08);
|
|
2301
2591
|
}
|
|
2302
2592
|
|
|
2303
|
-
.
|
|
2304
|
-
background:
|
|
2305
|
-
border-color: var(--text-secondary);
|
|
2593
|
+
[data-theme="light"] .diff-line-removed {
|
|
2594
|
+
background: rgba(248, 81, 73, 0.1);
|
|
2306
2595
|
}
|
|
2307
2596
|
|
|
2308
|
-
.
|
|
2309
|
-
background:
|
|
2597
|
+
[data-theme="light"] .diff-line-removed .diff-line-number {
|
|
2598
|
+
background: rgba(248, 81, 73, 0.08);
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
[data-theme="light"] .diff-line-hunk {
|
|
2602
|
+
background: rgba(9, 105, 218, 0.1);
|
|
2603
|
+
color: #0969da;
|
|
2604
|
+
}
|
|
2605
|
+
|
|
2606
|
+
[data-theme="light"] .diff-line-hunk .diff-line-number {
|
|
2607
|
+
background: rgba(9, 105, 218, 0.05);
|
|
2608
|
+
}
|
|
2609
|
+
|
|
2610
|
+
.no-changes {
|
|
2611
|
+
padding: 40px;
|
|
2612
|
+
text-align: center;
|
|
2310
2613
|
color: var(--text-secondary);
|
|
2311
|
-
|
|
2614
|
+
font-style: italic;
|
|
2312
2615
|
}
|
|
2313
2616
|
|
|
2314
2617
|
/* Git status column - minimal spacing */
|
|
@@ -2339,6 +2642,7 @@ main {
|
|
|
2339
2642
|
position: relative !important;
|
|
2340
2643
|
display: block !important;
|
|
2341
2644
|
border-radius: 0 0 6px 6px;
|
|
2645
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
2342
2646
|
}
|
|
2343
2647
|
|
|
2344
2648
|
.monaco-editor-container .monaco-editor {
|