codexmate 0.0.13 → 0.0.14
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/README.en.md +429 -0
- package/README.md +231 -215
- package/cli.js +2450 -137
- package/doc/CHANGELOG.md +10 -3
- package/doc/CHANGELOG.zh-CN.md +7 -0
- package/lib/cli-utils.js +16 -0
- package/lib/workflow-engine.js +340 -0
- package/package.json +11 -4
- package/web-ui/app.js +515 -5
- package/web-ui/index.html +242 -19
- package/web-ui/logic.mjs +147 -1
- package/web-ui/styles.css +648 -10
- package/README.zh-CN.md +0 -419
package/web-ui/styles.css
CHANGED
|
@@ -130,36 +130,106 @@ body {
|
|
|
130
130
|
.fab-install {
|
|
131
131
|
position: fixed;
|
|
132
132
|
left: 16px;
|
|
133
|
-
bottom: 16px;
|
|
133
|
+
bottom: calc(16px + env(safe-area-inset-bottom, 0px));
|
|
134
134
|
z-index: 90;
|
|
135
|
-
|
|
135
|
+
display: inline-grid;
|
|
136
|
+
place-items: center;
|
|
137
|
+
width: 50px;
|
|
138
|
+
height: 50px;
|
|
139
|
+
min-width: 44px;
|
|
140
|
+
min-height: 44px;
|
|
141
|
+
padding: 0;
|
|
136
142
|
border-radius: var(--radius-full);
|
|
137
|
-
border:
|
|
138
|
-
background:
|
|
143
|
+
border: 1px solid rgba(255, 255, 255, 0.28);
|
|
144
|
+
background:
|
|
145
|
+
linear-gradient(135deg, rgba(255, 255, 255, 0.18) 0%, rgba(255, 255, 255, 0.04) 100%),
|
|
146
|
+
linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
|
|
139
147
|
color: #fff;
|
|
148
|
+
font-size: var(--font-size-secondary);
|
|
140
149
|
font-weight: var(--font-weight-secondary);
|
|
141
|
-
letter-spacing: 0.
|
|
150
|
+
letter-spacing: 0.015em;
|
|
142
151
|
box-shadow: var(--shadow-float);
|
|
143
152
|
cursor: pointer;
|
|
144
|
-
|
|
153
|
+
overflow: hidden;
|
|
154
|
+
transition:
|
|
155
|
+
transform var(--transition-fast) var(--ease-spring),
|
|
156
|
+
box-shadow var(--transition-fast) var(--ease-spring),
|
|
157
|
+
filter var(--transition-fast) var(--ease-smooth);
|
|
158
|
+
animation: fabPulse 3.2s ease-in-out infinite;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.fab-install::after {
|
|
162
|
+
content: "";
|
|
163
|
+
position: absolute;
|
|
164
|
+
inset: 1px;
|
|
165
|
+
border-radius: inherit;
|
|
166
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
167
|
+
pointer-events: none;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.fab-install-icon {
|
|
171
|
+
width: 20px;
|
|
172
|
+
height: 20px;
|
|
173
|
+
display: inline-grid;
|
|
174
|
+
place-items: center;
|
|
175
|
+
color: #fff;
|
|
176
|
+
background: transparent;
|
|
177
|
+
box-shadow: none;
|
|
178
|
+
flex-shrink: 0;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.fab-install-icon svg {
|
|
182
|
+
width: 18px;
|
|
183
|
+
height: 18px;
|
|
145
184
|
}
|
|
146
185
|
|
|
147
186
|
.fab-install:hover {
|
|
148
187
|
transform: translateY(-1px);
|
|
149
188
|
box-shadow: var(--shadow-raised);
|
|
189
|
+
filter: saturate(1.04);
|
|
150
190
|
}
|
|
151
191
|
|
|
152
192
|
.fab-install:active {
|
|
153
193
|
transform: translateY(0);
|
|
194
|
+
filter: saturate(0.98);
|
|
154
195
|
}
|
|
155
196
|
|
|
156
197
|
@media (max-width: 640px) {
|
|
157
198
|
.fab-install {
|
|
158
199
|
left: 12px;
|
|
159
|
-
bottom: 12px;
|
|
160
|
-
|
|
200
|
+
bottom: calc(12px + env(safe-area-inset-bottom, 0px));
|
|
201
|
+
width: 44px;
|
|
202
|
+
height: 44px;
|
|
203
|
+
padding: 0;
|
|
161
204
|
font-size: var(--font-size-secondary);
|
|
162
205
|
}
|
|
206
|
+
|
|
207
|
+
.fab-install-icon {
|
|
208
|
+
width: 18px;
|
|
209
|
+
height: 18px;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.fab-install-icon svg {
|
|
213
|
+
width: 16px;
|
|
214
|
+
height: 16px;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
@keyframes fabPulse {
|
|
219
|
+
0%,
|
|
220
|
+
100% {
|
|
221
|
+
box-shadow: var(--shadow-float);
|
|
222
|
+
}
|
|
223
|
+
50% {
|
|
224
|
+
box-shadow: 0 14px 30px rgba(31, 26, 23, 0.14);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
@media (prefers-reduced-motion: reduce) {
|
|
229
|
+
.fab-install {
|
|
230
|
+
animation: none;
|
|
231
|
+
transition: none;
|
|
232
|
+
}
|
|
163
233
|
}
|
|
164
234
|
|
|
165
235
|
/* ============================================
|
|
@@ -209,7 +279,7 @@ body::after {
|
|
|
209
279
|
============================================ */
|
|
210
280
|
.app-shell {
|
|
211
281
|
display: grid;
|
|
212
|
-
grid-template-columns:
|
|
282
|
+
grid-template-columns: 260px minmax(0, 1fr) 340px;
|
|
213
283
|
gap: 16px;
|
|
214
284
|
align-items: flex-start;
|
|
215
285
|
}
|
|
@@ -355,6 +425,129 @@ body::after {
|
|
|
355
425
|
line-height: 1.45;
|
|
356
426
|
}
|
|
357
427
|
|
|
428
|
+
.github-badge {
|
|
429
|
+
grid-column: 2;
|
|
430
|
+
display: inline-flex;
|
|
431
|
+
align-items: center;
|
|
432
|
+
justify-content: space-between;
|
|
433
|
+
gap: 10px;
|
|
434
|
+
margin-top: 6px;
|
|
435
|
+
padding: 6px 10px;
|
|
436
|
+
border-radius: 999px;
|
|
437
|
+
border: 1px solid var(--color-border-soft);
|
|
438
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.92) 0%, rgba(255, 255, 255, 0.72) 100%);
|
|
439
|
+
color: var(--color-text-secondary);
|
|
440
|
+
font-size: var(--font-size-caption);
|
|
441
|
+
text-decoration: none;
|
|
442
|
+
box-shadow: var(--shadow-subtle);
|
|
443
|
+
transition: all var(--transition-fast) var(--ease-spring);
|
|
444
|
+
min-width: 0;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.github-badge-rail {
|
|
448
|
+
width: 100%;
|
|
449
|
+
align-items: center;
|
|
450
|
+
justify-content: flex-start;
|
|
451
|
+
gap: 8px;
|
|
452
|
+
padding: 6px 8px;
|
|
453
|
+
border-radius: 10px;
|
|
454
|
+
background: rgba(255, 255, 255, 0.8);
|
|
455
|
+
border: 1px solid rgba(216, 201, 184, 0.5);
|
|
456
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.github-badge:hover {
|
|
460
|
+
border-color: rgba(201, 94, 75, 0.5);
|
|
461
|
+
color: var(--color-text-primary);
|
|
462
|
+
transform: translateY(-1px);
|
|
463
|
+
box-shadow: 0 6px 12px rgba(27, 23, 20, 0.08);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.github-badge-icon {
|
|
467
|
+
width: 16px;
|
|
468
|
+
height: 16px;
|
|
469
|
+
flex-shrink: 0;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
.github-badge-left {
|
|
473
|
+
display: inline-flex;
|
|
474
|
+
align-items: center;
|
|
475
|
+
gap: 6px;
|
|
476
|
+
flex-shrink: 0;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
.github-badge-label {
|
|
480
|
+
font-size: var(--font-size-caption);
|
|
481
|
+
font-weight: var(--font-weight-secondary);
|
|
482
|
+
color: var(--color-text-secondary);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
.github-badge-text {
|
|
486
|
+
min-width: 0;
|
|
487
|
+
font-family: var(--font-family-mono);
|
|
488
|
+
font-size: var(--font-size-caption);
|
|
489
|
+
color: var(--color-text-tertiary);
|
|
490
|
+
line-height: 1.3;
|
|
491
|
+
display: inline-block;
|
|
492
|
+
overflow: hidden;
|
|
493
|
+
text-overflow: ellipsis;
|
|
494
|
+
white-space: nowrap;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.github-badge-text > span {
|
|
498
|
+
white-space: nowrap;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
.github-owner {
|
|
502
|
+
font-weight: 600;
|
|
503
|
+
color: var(--color-text-secondary);
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
.github-sep {
|
|
507
|
+
margin: 0 2px;
|
|
508
|
+
color: var(--color-text-tertiary);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.github-repo {
|
|
512
|
+
font-weight: 600;
|
|
513
|
+
color: var(--color-text-primary);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
.github-badge-rail .github-badge-text {
|
|
517
|
+
display: flex;
|
|
518
|
+
flex-direction: column;
|
|
519
|
+
align-items: flex-start;
|
|
520
|
+
gap: 2px;
|
|
521
|
+
white-space: normal;
|
|
522
|
+
overflow: visible;
|
|
523
|
+
text-overflow: clip;
|
|
524
|
+
color: var(--color-text-secondary);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.github-badge-rail .github-sep {
|
|
528
|
+
display: none;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.github-badge-rail .github-owner,
|
|
532
|
+
.github-badge-rail .github-repo {
|
|
533
|
+
font-weight: 600;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.github-badge-rail .github-badge-left {
|
|
537
|
+
padding: 4px;
|
|
538
|
+
border-radius: 999px;
|
|
539
|
+
background: rgba(201, 94, 75, 0.12);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.github-badge-rail .github-badge-label {
|
|
543
|
+
display: none;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.github-badge-rail:hover {
|
|
547
|
+
transform: translateY(-1px);
|
|
548
|
+
border-color: rgba(201, 94, 75, 0.5);
|
|
549
|
+
}
|
|
550
|
+
|
|
358
551
|
.main-tabs {
|
|
359
552
|
display: flex;
|
|
360
553
|
gap: 10px;
|
|
@@ -563,6 +756,11 @@ body::after {
|
|
|
563
756
|
line-height: 1.5;
|
|
564
757
|
}
|
|
565
758
|
|
|
759
|
+
.hero-github {
|
|
760
|
+
display: none;
|
|
761
|
+
margin-bottom: var(--spacing-sm);
|
|
762
|
+
}
|
|
763
|
+
|
|
566
764
|
.top-tabs {
|
|
567
765
|
margin: 14px 0 18px;
|
|
568
766
|
background: rgba(255, 255, 255, 0.92);
|
|
@@ -1813,6 +2011,7 @@ body::after {
|
|
|
1813
2011
|
display: flex;
|
|
1814
2012
|
flex-direction: column;
|
|
1815
2013
|
overflow: hidden;
|
|
2014
|
+
position: relative;
|
|
1816
2015
|
transform: translateX(4px);
|
|
1817
2016
|
transition: transform var(--transition-normal) var(--ease-spring-soft), box-shadow var(--transition-normal) var(--ease-spring-soft);
|
|
1818
2017
|
}
|
|
@@ -1823,10 +2022,12 @@ body::after {
|
|
|
1823
2022
|
}
|
|
1824
2023
|
|
|
1825
2024
|
.session-preview-scroll {
|
|
2025
|
+
position: relative;
|
|
1826
2026
|
flex: 1;
|
|
1827
2027
|
min-height: 0;
|
|
1828
2028
|
overflow-y: auto;
|
|
1829
2029
|
overflow-x: hidden;
|
|
2030
|
+
padding-right: 68px;
|
|
1830
2031
|
display: flex;
|
|
1831
2032
|
flex-direction: column;
|
|
1832
2033
|
scrollbar-width: thin;
|
|
@@ -1917,6 +2118,81 @@ body::after {
|
|
|
1917
2118
|
gap: 10px;
|
|
1918
2119
|
}
|
|
1919
2120
|
|
|
2121
|
+
.session-preview-messages {
|
|
2122
|
+
min-width: 0;
|
|
2123
|
+
display: flex;
|
|
2124
|
+
flex-direction: column;
|
|
2125
|
+
gap: 10px;
|
|
2126
|
+
}
|
|
2127
|
+
|
|
2128
|
+
.session-timeline {
|
|
2129
|
+
position: absolute;
|
|
2130
|
+
top: var(--session-preview-header-offset, 72px);
|
|
2131
|
+
right: 8px;
|
|
2132
|
+
bottom: 12px;
|
|
2133
|
+
width: 56px;
|
|
2134
|
+
height: auto;
|
|
2135
|
+
border-radius: 12px;
|
|
2136
|
+
border: 1px solid rgba(208, 196, 182, 0.5);
|
|
2137
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.92) 0%, rgba(252, 246, 239, 0.94) 100%);
|
|
2138
|
+
box-shadow: 0 4px 12px rgba(31, 26, 23, 0.06);
|
|
2139
|
+
padding: 6px 4px 28px;
|
|
2140
|
+
z-index: 3;
|
|
2141
|
+
}
|
|
2142
|
+
|
|
2143
|
+
.session-timeline-track {
|
|
2144
|
+
position: absolute;
|
|
2145
|
+
left: 50%;
|
|
2146
|
+
top: 10px;
|
|
2147
|
+
bottom: 32px;
|
|
2148
|
+
width: 2px;
|
|
2149
|
+
transform: translateX(-50%);
|
|
2150
|
+
background: linear-gradient(to bottom, rgba(166, 149, 130, 0.3) 0%, rgba(166, 149, 130, 0.65) 100%);
|
|
2151
|
+
border-radius: 999px;
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
.session-timeline-node {
|
|
2155
|
+
position: absolute;
|
|
2156
|
+
left: 50%;
|
|
2157
|
+
width: 10px;
|
|
2158
|
+
height: 10px;
|
|
2159
|
+
border-radius: 50%;
|
|
2160
|
+
border: 1px solid rgba(139, 118, 104, 0.7);
|
|
2161
|
+
background: rgba(255, 255, 255, 0.94);
|
|
2162
|
+
transform: translate(-50%, -50%);
|
|
2163
|
+
cursor: pointer;
|
|
2164
|
+
padding: 0;
|
|
2165
|
+
transition: transform var(--transition-fast) var(--ease-spring), background-color var(--transition-fast) var(--ease-spring), border-color var(--transition-fast) var(--ease-spring), box-shadow var(--transition-fast) var(--ease-spring);
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
.session-timeline-node:hover {
|
|
2169
|
+
transform: translate(-50%, -50%) scale(1.2);
|
|
2170
|
+
border-color: rgba(201, 94, 75, 0.85);
|
|
2171
|
+
background: rgba(255, 255, 255, 1);
|
|
2172
|
+
box-shadow: 0 0 0 3px rgba(201, 94, 75, 0.15);
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
.session-timeline-node.active {
|
|
2176
|
+
transform: translate(-50%, -50%) scale(1.2);
|
|
2177
|
+
border-color: rgba(201, 94, 75, 0.95);
|
|
2178
|
+
background: rgba(201, 94, 75, 0.95);
|
|
2179
|
+
box-shadow: 0 0 0 3px rgba(201, 94, 75, 0.2);
|
|
2180
|
+
}
|
|
2181
|
+
|
|
2182
|
+
.session-timeline-current {
|
|
2183
|
+
position: absolute;
|
|
2184
|
+
left: 4px;
|
|
2185
|
+
right: 4px;
|
|
2186
|
+
bottom: 4px;
|
|
2187
|
+
font-size: 10px;
|
|
2188
|
+
line-height: 1.2;
|
|
2189
|
+
color: var(--color-text-tertiary);
|
|
2190
|
+
text-align: center;
|
|
2191
|
+
white-space: nowrap;
|
|
2192
|
+
overflow: hidden;
|
|
2193
|
+
text-overflow: ellipsis;
|
|
2194
|
+
}
|
|
2195
|
+
|
|
1920
2196
|
.session-msg {
|
|
1921
2197
|
border-radius: 10px;
|
|
1922
2198
|
padding: 10px 12px 10px 18px;
|
|
@@ -2044,6 +2320,14 @@ body::after {
|
|
|
2044
2320
|
box-shadow: var(--shadow-card);
|
|
2045
2321
|
}
|
|
2046
2322
|
|
|
2323
|
+
.session-preview-scroll {
|
|
2324
|
+
padding-right: 0;
|
|
2325
|
+
}
|
|
2326
|
+
|
|
2327
|
+
.session-timeline {
|
|
2328
|
+
display: none;
|
|
2329
|
+
}
|
|
2330
|
+
|
|
2047
2331
|
.session-preview-header {
|
|
2048
2332
|
flex-direction: column;
|
|
2049
2333
|
align-items: stretch;
|
|
@@ -2321,6 +2605,48 @@ body::after {
|
|
|
2321
2605
|
opacity: 0.7;
|
|
2322
2606
|
}
|
|
2323
2607
|
|
|
2608
|
+
.form-select {
|
|
2609
|
+
width: 100%;
|
|
2610
|
+
min-height: 44px;
|
|
2611
|
+
padding: 10px 40px 10px 12px;
|
|
2612
|
+
border: 1.5px solid var(--color-border-soft);
|
|
2613
|
+
border-radius: var(--radius-sm);
|
|
2614
|
+
font-size: var(--font-size-secondary);
|
|
2615
|
+
font-weight: var(--font-weight-secondary);
|
|
2616
|
+
background-color: var(--color-surface-alt);
|
|
2617
|
+
color: var(--color-text-primary);
|
|
2618
|
+
outline: none;
|
|
2619
|
+
transition: all var(--transition-fast) var(--ease-spring);
|
|
2620
|
+
font-family: var(--font-family-body);
|
|
2621
|
+
box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.04);
|
|
2622
|
+
cursor: pointer;
|
|
2623
|
+
appearance: none;
|
|
2624
|
+
-webkit-appearance: none;
|
|
2625
|
+
-moz-appearance: none;
|
|
2626
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23505A66' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
|
|
2627
|
+
background-repeat: no-repeat;
|
|
2628
|
+
background-position: right 14px center;
|
|
2629
|
+
background-size: 12px;
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.form-select:hover {
|
|
2633
|
+
border-color: var(--color-border-strong);
|
|
2634
|
+
background-color: var(--color-surface);
|
|
2635
|
+
}
|
|
2636
|
+
|
|
2637
|
+
.form-select:focus {
|
|
2638
|
+
border-color: var(--color-brand);
|
|
2639
|
+
background-color: var(--color-surface);
|
|
2640
|
+
box-shadow: var(--shadow-input-focus);
|
|
2641
|
+
}
|
|
2642
|
+
|
|
2643
|
+
.form-select:disabled {
|
|
2644
|
+
background: linear-gradient(to right, var(--color-bg) 0%, rgba(247, 241, 232, 0.5) 100%);
|
|
2645
|
+
color: var(--color-text-tertiary);
|
|
2646
|
+
cursor: not-allowed;
|
|
2647
|
+
border-color: transparent;
|
|
2648
|
+
}
|
|
2649
|
+
|
|
2324
2650
|
.template-editor {
|
|
2325
2651
|
min-height: min(60vh, 520px);
|
|
2326
2652
|
max-height: min(65vh, 620px);
|
|
@@ -2659,6 +2985,273 @@ body::after {
|
|
|
2659
2985
|
color: var(--color-text-secondary);
|
|
2660
2986
|
}
|
|
2661
2987
|
|
|
2988
|
+
.skill-toolbar {
|
|
2989
|
+
display: flex;
|
|
2990
|
+
align-items: center;
|
|
2991
|
+
justify-content: space-between;
|
|
2992
|
+
gap: var(--spacing-xs);
|
|
2993
|
+
margin-bottom: 10px;
|
|
2994
|
+
flex-wrap: wrap;
|
|
2995
|
+
}
|
|
2996
|
+
|
|
2997
|
+
.skill-select-all {
|
|
2998
|
+
display: inline-flex;
|
|
2999
|
+
align-items: center;
|
|
3000
|
+
gap: 8px;
|
|
3001
|
+
font-size: var(--font-size-secondary);
|
|
3002
|
+
color: var(--color-text-secondary);
|
|
3003
|
+
user-select: none;
|
|
3004
|
+
}
|
|
3005
|
+
|
|
3006
|
+
.skill-toolbar-count {
|
|
3007
|
+
font-size: var(--font-size-caption);
|
|
3008
|
+
color: var(--color-text-tertiary);
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3011
|
+
.skills-modal {
|
|
3012
|
+
width: min(96vw, 920px);
|
|
3013
|
+
}
|
|
3014
|
+
|
|
3015
|
+
.skills-modal-header {
|
|
3016
|
+
align-items: flex-start;
|
|
3017
|
+
margin-bottom: var(--spacing-xs);
|
|
3018
|
+
}
|
|
3019
|
+
|
|
3020
|
+
.skills-modal-subtitle {
|
|
3021
|
+
margin-top: 6px;
|
|
3022
|
+
font-size: var(--font-size-caption);
|
|
3023
|
+
color: var(--color-text-tertiary);
|
|
3024
|
+
line-height: 1.45;
|
|
3025
|
+
}
|
|
3026
|
+
|
|
3027
|
+
.skills-modal-actions {
|
|
3028
|
+
display: flex;
|
|
3029
|
+
flex-direction: row;
|
|
3030
|
+
align-items: center;
|
|
3031
|
+
gap: 8px;
|
|
3032
|
+
}
|
|
3033
|
+
|
|
3034
|
+
.skills-root-box {
|
|
3035
|
+
border: 1px solid var(--color-border-soft);
|
|
3036
|
+
border-radius: var(--radius-sm);
|
|
3037
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.86) 0%, rgba(255, 255, 255, 0.66) 100%);
|
|
3038
|
+
padding: 10px 12px;
|
|
3039
|
+
font-family: var(--font-family-mono);
|
|
3040
|
+
font-size: var(--font-size-caption);
|
|
3041
|
+
color: var(--color-text-secondary);
|
|
3042
|
+
word-break: break-all;
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3045
|
+
.skills-root-group {
|
|
3046
|
+
margin-bottom: var(--spacing-xs);
|
|
3047
|
+
}
|
|
3048
|
+
|
|
3049
|
+
.skills-summary-strip {
|
|
3050
|
+
display: grid;
|
|
3051
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
3052
|
+
gap: var(--spacing-xs);
|
|
3053
|
+
margin-bottom: var(--spacing-sm);
|
|
3054
|
+
}
|
|
3055
|
+
|
|
3056
|
+
.skills-summary-item {
|
|
3057
|
+
border: 1px solid rgba(160, 145, 130, 0.2);
|
|
3058
|
+
border-radius: var(--radius-sm);
|
|
3059
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.93) 0%, rgba(255, 255, 255, 0.78) 100%);
|
|
3060
|
+
padding: 10px 12px;
|
|
3061
|
+
min-width: 0;
|
|
3062
|
+
box-shadow: var(--shadow-subtle);
|
|
3063
|
+
display: flex;
|
|
3064
|
+
flex-direction: column;
|
|
3065
|
+
gap: 2px;
|
|
3066
|
+
}
|
|
3067
|
+
|
|
3068
|
+
.skills-summary-label {
|
|
3069
|
+
font-size: var(--font-size-caption);
|
|
3070
|
+
color: var(--color-text-tertiary);
|
|
3071
|
+
}
|
|
3072
|
+
|
|
3073
|
+
.skills-summary-value {
|
|
3074
|
+
font-size: var(--font-size-large);
|
|
3075
|
+
color: var(--color-text-secondary);
|
|
3076
|
+
line-height: 1.2;
|
|
3077
|
+
}
|
|
3078
|
+
|
|
3079
|
+
.skills-panel {
|
|
3080
|
+
border: 1px solid rgba(160, 145, 130, 0.24);
|
|
3081
|
+
border-radius: var(--radius-md);
|
|
3082
|
+
padding: 12px;
|
|
3083
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.88) 0%, rgba(255, 255, 255, 0.72) 100%);
|
|
3084
|
+
margin-bottom: var(--spacing-sm);
|
|
3085
|
+
}
|
|
3086
|
+
|
|
3087
|
+
.skills-panel-header {
|
|
3088
|
+
display: flex;
|
|
3089
|
+
justify-content: space-between;
|
|
3090
|
+
align-items: flex-start;
|
|
3091
|
+
gap: var(--spacing-xs);
|
|
3092
|
+
margin-bottom: 10px;
|
|
3093
|
+
}
|
|
3094
|
+
|
|
3095
|
+
.skills-panel-title-wrap {
|
|
3096
|
+
min-width: 0;
|
|
3097
|
+
}
|
|
3098
|
+
|
|
3099
|
+
.skills-panel-title {
|
|
3100
|
+
font-size: var(--font-size-body);
|
|
3101
|
+
font-weight: var(--font-weight-primary);
|
|
3102
|
+
color: var(--color-text-secondary);
|
|
3103
|
+
}
|
|
3104
|
+
|
|
3105
|
+
.skills-panel-note {
|
|
3106
|
+
margin-top: 4px;
|
|
3107
|
+
font-size: var(--font-size-caption);
|
|
3108
|
+
color: var(--color-text-tertiary);
|
|
3109
|
+
line-height: 1.45;
|
|
3110
|
+
}
|
|
3111
|
+
|
|
3112
|
+
.skills-filter-row {
|
|
3113
|
+
display: flex;
|
|
3114
|
+
gap: var(--spacing-xs);
|
|
3115
|
+
margin-bottom: 10px;
|
|
3116
|
+
align-items: center;
|
|
3117
|
+
flex-wrap: wrap;
|
|
3118
|
+
}
|
|
3119
|
+
|
|
3120
|
+
.skills-filter-row .form-input {
|
|
3121
|
+
flex: 1;
|
|
3122
|
+
min-width: 220px;
|
|
3123
|
+
}
|
|
3124
|
+
|
|
3125
|
+
.skills-status-select {
|
|
3126
|
+
width: 210px;
|
|
3127
|
+
flex: 0 0 auto;
|
|
3128
|
+
}
|
|
3129
|
+
|
|
3130
|
+
.skills-hint-line,
|
|
3131
|
+
.hint-single-line {
|
|
3132
|
+
display: block;
|
|
3133
|
+
white-space: nowrap;
|
|
3134
|
+
overflow: hidden;
|
|
3135
|
+
text-overflow: ellipsis;
|
|
3136
|
+
max-width: 100%;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
.skill-list {
|
|
3140
|
+
display: flex;
|
|
3141
|
+
flex-direction: column;
|
|
3142
|
+
gap: var(--spacing-xs);
|
|
3143
|
+
margin-bottom: var(--spacing-sm);
|
|
3144
|
+
max-height: min(52vh, 440px);
|
|
3145
|
+
overflow-y: auto;
|
|
3146
|
+
padding-right: 2px;
|
|
3147
|
+
scrollbar-width: thin;
|
|
3148
|
+
scrollbar-color: rgba(166, 149, 130, 0.82) transparent;
|
|
3149
|
+
}
|
|
3150
|
+
|
|
3151
|
+
.skill-list::-webkit-scrollbar {
|
|
3152
|
+
width: 6px;
|
|
3153
|
+
height: 6px;
|
|
3154
|
+
}
|
|
3155
|
+
|
|
3156
|
+
.skill-list::-webkit-scrollbar-track {
|
|
3157
|
+
background: transparent;
|
|
3158
|
+
border-radius: 999px;
|
|
3159
|
+
}
|
|
3160
|
+
|
|
3161
|
+
.skill-list::-webkit-scrollbar-thumb {
|
|
3162
|
+
background: linear-gradient(to bottom, rgba(191, 174, 154, 0.95) 0%, rgba(160, 141, 121, 0.9) 100%);
|
|
3163
|
+
border-radius: 999px;
|
|
3164
|
+
border: 1px solid rgba(255, 255, 255, 0.9);
|
|
3165
|
+
}
|
|
3166
|
+
|
|
3167
|
+
.skill-list::-webkit-scrollbar-thumb:hover {
|
|
3168
|
+
background: linear-gradient(to bottom, rgba(176, 157, 137, 0.95) 0%, rgba(145, 126, 107, 0.92) 100%);
|
|
3169
|
+
}
|
|
3170
|
+
|
|
3171
|
+
.skill-item {
|
|
3172
|
+
display: flex;
|
|
3173
|
+
align-items: flex-start;
|
|
3174
|
+
gap: var(--spacing-xs);
|
|
3175
|
+
border: 1px dashed var(--color-border-soft);
|
|
3176
|
+
border-radius: var(--radius-sm);
|
|
3177
|
+
padding: var(--spacing-xs);
|
|
3178
|
+
background: var(--color-surface-alt);
|
|
3179
|
+
transition: border-color var(--transition-fast) var(--ease-spring), background-color var(--transition-fast) var(--ease-spring);
|
|
3180
|
+
}
|
|
3181
|
+
|
|
3182
|
+
.skill-item-main {
|
|
3183
|
+
min-width: 0;
|
|
3184
|
+
display: flex;
|
|
3185
|
+
flex-direction: column;
|
|
3186
|
+
gap: 6px;
|
|
3187
|
+
flex: 1;
|
|
3188
|
+
}
|
|
3189
|
+
|
|
3190
|
+
.skill-item-title {
|
|
3191
|
+
font-size: var(--font-size-secondary);
|
|
3192
|
+
font-weight: var(--font-weight-secondary);
|
|
3193
|
+
color: var(--color-text-secondary);
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3196
|
+
.skill-item-description {
|
|
3197
|
+
font-size: var(--font-size-caption);
|
|
3198
|
+
line-height: 1.45;
|
|
3199
|
+
color: var(--color-text-tertiary);
|
|
3200
|
+
}
|
|
3201
|
+
|
|
3202
|
+
.skill-item-meta {
|
|
3203
|
+
display: flex;
|
|
3204
|
+
flex-wrap: wrap;
|
|
3205
|
+
gap: var(--spacing-xs);
|
|
3206
|
+
align-items: center;
|
|
3207
|
+
min-width: 0;
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
.skill-item-path {
|
|
3211
|
+
font-family: var(--font-family-mono);
|
|
3212
|
+
font-size: var(--font-size-caption);
|
|
3213
|
+
color: var(--color-text-tertiary);
|
|
3214
|
+
word-break: break-all;
|
|
3215
|
+
}
|
|
3216
|
+
|
|
3217
|
+
.skill-item:hover {
|
|
3218
|
+
border-color: rgba(201, 94, 75, 0.35);
|
|
3219
|
+
}
|
|
3220
|
+
|
|
3221
|
+
.skill-item.selected {
|
|
3222
|
+
border-color: rgba(201, 94, 75, 0.55);
|
|
3223
|
+
background: linear-gradient(to bottom, rgba(201, 94, 75, 0.10) 0%, rgba(201, 94, 75, 0.04) 100%);
|
|
3224
|
+
}
|
|
3225
|
+
|
|
3226
|
+
.skills-empty-state {
|
|
3227
|
+
margin-bottom: var(--spacing-sm);
|
|
3228
|
+
border: 1px dashed var(--color-border-soft);
|
|
3229
|
+
border-radius: var(--radius-sm);
|
|
3230
|
+
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.78) 0%, rgba(255, 255, 255, 0.58) 100%);
|
|
3231
|
+
color: var(--color-text-tertiary);
|
|
3232
|
+
font-size: var(--font-size-secondary);
|
|
3233
|
+
text-align: center;
|
|
3234
|
+
padding: 18px 12px;
|
|
3235
|
+
}
|
|
3236
|
+
|
|
3237
|
+
.skills-import-block {
|
|
3238
|
+
margin-bottom: var(--spacing-sm);
|
|
3239
|
+
}
|
|
3240
|
+
|
|
3241
|
+
.skills-import-title {
|
|
3242
|
+
font-size: var(--font-size-body);
|
|
3243
|
+
font-weight: var(--font-weight-secondary);
|
|
3244
|
+
color: var(--color-text-secondary);
|
|
3245
|
+
}
|
|
3246
|
+
|
|
3247
|
+
.skills-import-list {
|
|
3248
|
+
max-height: min(28vh, 260px);
|
|
3249
|
+
}
|
|
3250
|
+
|
|
3251
|
+
.skills-import-empty {
|
|
3252
|
+
margin-bottom: 0;
|
|
3253
|
+
}
|
|
3254
|
+
|
|
2662
3255
|
.list-row {
|
|
2663
3256
|
display: flex;
|
|
2664
3257
|
flex-wrap: wrap;
|
|
@@ -2763,6 +3356,16 @@ body::after {
|
|
|
2763
3356
|
filter: brightness(1.05);
|
|
2764
3357
|
}
|
|
2765
3358
|
|
|
3359
|
+
.btn-confirm.btn-danger {
|
|
3360
|
+
background: linear-gradient(135deg, #c75642 0%, #9f392c 100%);
|
|
3361
|
+
box-shadow: 0 2px 4px rgba(163, 51, 38, 0.24);
|
|
3362
|
+
}
|
|
3363
|
+
|
|
3364
|
+
.btn-confirm.btn-danger:hover {
|
|
3365
|
+
box-shadow: 0 4px 10px rgba(163, 51, 38, 0.28);
|
|
3366
|
+
filter: brightness(1.04);
|
|
3367
|
+
}
|
|
3368
|
+
|
|
2766
3369
|
/* ============================================
|
|
2767
3370
|
模型列表
|
|
2768
3371
|
============================================ */
|
|
@@ -2945,7 +3548,7 @@ textarea:focus-visible {
|
|
|
2945
3548
|
|
|
2946
3549
|
@media (max-width: 1280px) {
|
|
2947
3550
|
.app-shell {
|
|
2948
|
-
grid-template-columns:
|
|
3551
|
+
grid-template-columns: 240px minmax(0, 1fr) 300px;
|
|
2949
3552
|
gap: 14px;
|
|
2950
3553
|
}
|
|
2951
3554
|
|
|
@@ -2975,6 +3578,16 @@ textarea:focus-visible {
|
|
|
2975
3578
|
.hero-logo {
|
|
2976
3579
|
display: block;
|
|
2977
3580
|
}
|
|
3581
|
+
.hero-github {
|
|
3582
|
+
display: flex;
|
|
3583
|
+
}
|
|
3584
|
+
.github-badge-mobile {
|
|
3585
|
+
width: 100%;
|
|
3586
|
+
}
|
|
3587
|
+
.github-badge-mobile .github-badge-text,
|
|
3588
|
+
.github-badge-mobile .github-badge-label {
|
|
3589
|
+
font-size: var(--font-size-secondary);
|
|
3590
|
+
}
|
|
2978
3591
|
.main-panel {
|
|
2979
3592
|
padding: var(--spacing-sm) var(--spacing-sm);
|
|
2980
3593
|
border-radius: 14px;
|
|
@@ -2991,6 +3604,19 @@ textarea:focus-visible {
|
|
|
2991
3604
|
flex: 1 1 calc(50% - var(--spacing-sm));
|
|
2992
3605
|
min-width: 0;
|
|
2993
3606
|
}
|
|
3607
|
+
|
|
3608
|
+
.skills-summary-strip {
|
|
3609
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
3610
|
+
}
|
|
3611
|
+
|
|
3612
|
+
.skills-panel-header {
|
|
3613
|
+
flex-direction: column;
|
|
3614
|
+
align-items: stretch;
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3617
|
+
.skills-modal-actions {
|
|
3618
|
+
align-items: flex-start;
|
|
3619
|
+
}
|
|
2994
3620
|
}
|
|
2995
3621
|
|
|
2996
3622
|
@media (max-width: 720px) {
|
|
@@ -3210,4 +3836,16 @@ textarea:focus-visible {
|
|
|
3210
3836
|
.session-preview {
|
|
3211
3837
|
border-radius: var(--radius-lg);
|
|
3212
3838
|
}
|
|
3839
|
+
|
|
3840
|
+
.skills-summary-strip {
|
|
3841
|
+
grid-template-columns: 1fr;
|
|
3842
|
+
}
|
|
3843
|
+
|
|
3844
|
+
.skills-panel {
|
|
3845
|
+
padding: 10px;
|
|
3846
|
+
}
|
|
3847
|
+
|
|
3848
|
+
.skills-root-box {
|
|
3849
|
+
font-size: 11px;
|
|
3850
|
+
}
|
|
3213
3851
|
}
|