codexmate 0.0.15 → 0.0.17
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 +13 -3
- package/README.md +13 -3
- package/cli.js +683 -15
- package/package.json +2 -2
- package/web-ui/app.js +219 -46
- package/web-ui/index.html +15 -1
- package/web-ui/logic.mjs +113 -13
- package/web-ui/styles.css +203 -25
package/web-ui/styles.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Source+Sans+3:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap');
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;500&family=JetBrains+Mono:wght@400;500&family=Source+Sans+3:wght@400;500;600&family=Space+Grotesk:wght@400;500;600;700&display=swap');
|
|
2
2
|
|
|
3
3
|
/* ============================================
|
|
4
4
|
设计系统 - Design Tokens
|
|
@@ -27,14 +27,12 @@
|
|
|
27
27
|
--color-error: #C44536;
|
|
28
28
|
|
|
29
29
|
--bg-warm-gradient:
|
|
30
|
-
|
|
31
|
-
radial-gradient(circle at 90% 6%, rgba(255, 255, 255, 0.9), transparent 42%),
|
|
32
|
-
linear-gradient(135deg, #F8F2EA 0%, #F1E4D8 44%, #F8F2EA 100%);
|
|
30
|
+
linear-gradient(180deg, #F8F2EA 0%, #F8F2EA 100%);
|
|
33
31
|
|
|
34
32
|
/* 字体系统 */
|
|
35
|
-
--font-family-body: '
|
|
36
|
-
--font-family-display: '
|
|
37
|
-
--font-family-mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', monospace;
|
|
33
|
+
--font-family-body: 'JetBrainsMono Nerd Font Mono', 'OPPO Sans 4.0', 'Fira Mono', 'JetBrains Mono', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', monospace;
|
|
34
|
+
--font-family-display: 'JetBrainsMono Nerd Font Mono', 'OPPO Sans 4.0', 'Fira Mono', 'JetBrains Mono', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', monospace;
|
|
35
|
+
--font-family-mono: 'JetBrainsMono Nerd Font Mono', 'OPPO Sans 4.0', 'Fira Mono', 'JetBrains Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', monospace;
|
|
38
36
|
--font-family: var(--font-family-body);
|
|
39
37
|
|
|
40
38
|
--font-size-display: 52px;
|
|
@@ -89,6 +87,145 @@
|
|
|
89
87
|
--ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
|
|
90
88
|
}
|
|
91
89
|
|
|
90
|
+
/* ============================================
|
|
91
|
+
手机桌面 UA 兜底:触控设备强制紧凑排版
|
|
92
|
+
============================================ */
|
|
93
|
+
body.force-compact {
|
|
94
|
+
--font-size-title: 20px;
|
|
95
|
+
--font-size-body: 16px;
|
|
96
|
+
--font-size-secondary: 14px;
|
|
97
|
+
--font-size-caption: 12px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
body.force-compact .container {
|
|
101
|
+
max-width: 760px;
|
|
102
|
+
padding: 10px 10px 16px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
body.force-compact .provider-fast-switch {
|
|
106
|
+
position: sticky;
|
|
107
|
+
top: 8px;
|
|
108
|
+
z-index: 16;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
body.force-compact .provider-fast-switch-select {
|
|
112
|
+
min-height: 44px;
|
|
113
|
+
font-size: 16px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
body.force-compact .app-shell {
|
|
117
|
+
grid-template-columns: 1fr;
|
|
118
|
+
gap: 12px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
body.force-compact .main-panel {
|
|
122
|
+
position: relative;
|
|
123
|
+
top: auto;
|
|
124
|
+
align-self: stretch;
|
|
125
|
+
width: 100%;
|
|
126
|
+
height: auto;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
body.force-compact .side-rail,
|
|
130
|
+
body.force-compact .status-inspector {
|
|
131
|
+
display: none;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
body.force-compact .top-tabs {
|
|
135
|
+
display: grid !important;
|
|
136
|
+
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@media (min-width: 541px) {
|
|
140
|
+
body.force-compact .top-tabs {
|
|
141
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
body.force-compact .hero-logo {
|
|
146
|
+
display: block;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
body.force-compact .hero-github {
|
|
150
|
+
display: flex;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
body.force-compact .main-panel {
|
|
154
|
+
padding: 14px 12px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
body.force-compact .hero-title {
|
|
158
|
+
font-size: 34px;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
body.force-compact .card {
|
|
162
|
+
display: flex;
|
|
163
|
+
flex-direction: column;
|
|
164
|
+
align-items: flex-start;
|
|
165
|
+
justify-content: flex-start;
|
|
166
|
+
padding: 12px;
|
|
167
|
+
gap: 10px;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
body.force-compact .card-leading {
|
|
171
|
+
align-items: flex-start;
|
|
172
|
+
width: 100%;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
body.force-compact .card-content {
|
|
176
|
+
width: 100%;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
body.force-compact .card-title,
|
|
180
|
+
body.force-compact .card-title > span:first-child {
|
|
181
|
+
white-space: normal;
|
|
182
|
+
overflow: visible;
|
|
183
|
+
text-overflow: clip;
|
|
184
|
+
overflow-wrap: anywhere;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
body.force-compact .card-subtitle {
|
|
188
|
+
white-space: normal;
|
|
189
|
+
overflow: hidden;
|
|
190
|
+
text-overflow: clip;
|
|
191
|
+
overflow-wrap: anywhere;
|
|
192
|
+
display: -webkit-box;
|
|
193
|
+
-webkit-line-clamp: 2;
|
|
194
|
+
-webkit-box-orient: vertical;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
body.force-compact .card-trailing {
|
|
198
|
+
width: 100%;
|
|
199
|
+
margin-top: 0;
|
|
200
|
+
grid-auto-flow: row;
|
|
201
|
+
grid-auto-columns: 1fr;
|
|
202
|
+
justify-content: stretch;
|
|
203
|
+
justify-items: end;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
body.force-compact .card-trailing .card-actions {
|
|
207
|
+
width: 100%;
|
|
208
|
+
justify-content: flex-end;
|
|
209
|
+
justify-self: stretch;
|
|
210
|
+
flex-wrap: wrap;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
body.force-compact .card-actions {
|
|
214
|
+
opacity: 1;
|
|
215
|
+
transform: none;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
body.force-compact .card-trailing .pill,
|
|
219
|
+
body.force-compact .card-trailing .latency {
|
|
220
|
+
justify-self: end;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
body.force-compact .btn-add,
|
|
224
|
+
body.force-compact .btn-tool,
|
|
225
|
+
body.force-compact .card-action-btn {
|
|
226
|
+
min-height: 44px;
|
|
227
|
+
}
|
|
228
|
+
|
|
92
229
|
/* ============================================
|
|
93
230
|
基础重置
|
|
94
231
|
============================================ */
|
|
@@ -240,10 +377,8 @@ body::before {
|
|
|
240
377
|
position: fixed;
|
|
241
378
|
inset: 0;
|
|
242
379
|
background-image:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.35) 0 1px, transparent 1px 120px);
|
|
246
|
-
opacity: 0.28;
|
|
380
|
+
linear-gradient(180deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0));
|
|
381
|
+
opacity: 0.16;
|
|
247
382
|
pointer-events: none;
|
|
248
383
|
z-index: 0;
|
|
249
384
|
}
|
|
@@ -254,10 +389,10 @@ body::after {
|
|
|
254
389
|
position: fixed;
|
|
255
390
|
inset: 0;
|
|
256
391
|
background-image:
|
|
257
|
-
linear-gradient(90deg, rgba(255, 255, 255, 0.
|
|
258
|
-
linear-gradient(0deg, rgba(255, 255, 255, 0.
|
|
259
|
-
background-size:
|
|
260
|
-
opacity: 0.
|
|
392
|
+
linear-gradient(90deg, rgba(255, 255, 255, 0.08) 1px, transparent 1px),
|
|
393
|
+
linear-gradient(0deg, rgba(255, 255, 255, 0.06) 1px, transparent 1px);
|
|
394
|
+
background-size: 180px 180px;
|
|
395
|
+
opacity: 0.08;
|
|
261
396
|
pointer-events: none;
|
|
262
397
|
z-index: 0;
|
|
263
398
|
}
|
|
@@ -267,7 +402,7 @@ body::after {
|
|
|
267
402
|
============================================ */
|
|
268
403
|
.container {
|
|
269
404
|
width: 100%;
|
|
270
|
-
max-width:
|
|
405
|
+
max-width: 2200px;
|
|
271
406
|
margin: 0 auto;
|
|
272
407
|
padding: 16px 12px 28px;
|
|
273
408
|
position: relative;
|
|
@@ -615,6 +750,47 @@ body::after {
|
|
|
615
750
|
word-break: break-word;
|
|
616
751
|
}
|
|
617
752
|
|
|
753
|
+
.provider-fast-switch {
|
|
754
|
+
margin: 0 0 var(--spacing-sm);
|
|
755
|
+
padding: 10px 12px;
|
|
756
|
+
border-radius: var(--radius-lg);
|
|
757
|
+
border: 1px solid rgba(216, 201, 184, 0.6);
|
|
758
|
+
background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 249, 243, 0.96) 100%);
|
|
759
|
+
box-shadow: var(--shadow-subtle);
|
|
760
|
+
display: grid;
|
|
761
|
+
gap: 6px;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
.provider-fast-switch-label {
|
|
765
|
+
font-size: var(--font-size-caption);
|
|
766
|
+
color: var(--color-text-tertiary);
|
|
767
|
+
letter-spacing: 0.02em;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
.provider-fast-switch-select {
|
|
771
|
+
width: 100%;
|
|
772
|
+
min-height: 40px;
|
|
773
|
+
padding: 8px 12px;
|
|
774
|
+
padding-right: 38px;
|
|
775
|
+
border: 1px solid var(--color-border-soft);
|
|
776
|
+
border-radius: var(--radius-sm);
|
|
777
|
+
font-size: var(--font-size-body);
|
|
778
|
+
color: var(--color-text-primary);
|
|
779
|
+
background-color: var(--color-surface-alt);
|
|
780
|
+
outline: none;
|
|
781
|
+
cursor: pointer;
|
|
782
|
+
appearance: none;
|
|
783
|
+
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.5' stroke-linecap='round' stroke-linejoin='round' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
|
|
784
|
+
background-repeat: no-repeat;
|
|
785
|
+
background-position: right 12px center;
|
|
786
|
+
background-size: 12px;
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
.provider-fast-switch-select:focus {
|
|
790
|
+
border-color: var(--color-brand);
|
|
791
|
+
box-shadow: var(--shadow-input-focus);
|
|
792
|
+
}
|
|
793
|
+
|
|
618
794
|
.main-panel {
|
|
619
795
|
min-width: 0;
|
|
620
796
|
background: rgba(255, 255, 255, 0.95);
|
|
@@ -1097,8 +1273,9 @@ body::after {
|
|
|
1097
1273
|
grid-auto-columns: max-content;
|
|
1098
1274
|
column-gap: var(--spacing-xs);
|
|
1099
1275
|
row-gap: 6px;
|
|
1100
|
-
align-items:
|
|
1276
|
+
align-items: start;
|
|
1101
1277
|
justify-content: end;
|
|
1278
|
+
align-self: flex-start;
|
|
1102
1279
|
}
|
|
1103
1280
|
|
|
1104
1281
|
.card-trailing .card-actions {
|
|
@@ -1777,7 +1954,7 @@ body::after {
|
|
|
1777
1954
|
|
|
1778
1955
|
.session-layout {
|
|
1779
1956
|
display: grid;
|
|
1780
|
-
grid-template-columns: minmax(
|
|
1957
|
+
grid-template-columns: minmax(260px, 360px) minmax(0, 1fr);
|
|
1781
1958
|
gap: var(--spacing-sm);
|
|
1782
1959
|
align-items: start;
|
|
1783
1960
|
height: min(72vh, 760px);
|
|
@@ -1855,14 +2032,14 @@ body::after {
|
|
|
1855
2032
|
border: 1px solid var(--color-border-soft);
|
|
1856
2033
|
border-radius: var(--radius-sm);
|
|
1857
2034
|
background: linear-gradient(to bottom, var(--color-surface) 0%, rgba(255, 255, 255, 0.92) 100%);
|
|
1858
|
-
padding:
|
|
2035
|
+
padding: 16px;
|
|
1859
2036
|
cursor: pointer;
|
|
1860
2037
|
transition: all var(--transition-fast) var(--ease-spring);
|
|
1861
2038
|
user-select: none;
|
|
1862
2039
|
min-width: 0;
|
|
1863
2040
|
position: relative;
|
|
1864
2041
|
overflow: hidden;
|
|
1865
|
-
min-height:
|
|
2042
|
+
min-height: 102px;
|
|
1866
2043
|
}
|
|
1867
2044
|
|
|
1868
2045
|
.session-item-header {
|
|
@@ -1917,13 +2094,14 @@ body::after {
|
|
|
1917
2094
|
font-size: var(--font-size-body);
|
|
1918
2095
|
font-weight: var(--font-weight-secondary);
|
|
1919
2096
|
color: var(--color-text-primary);
|
|
1920
|
-
line-height: 1.
|
|
1921
|
-
display:
|
|
1922
|
-
|
|
2097
|
+
line-height: 1.4;
|
|
2098
|
+
display: -webkit-box;
|
|
2099
|
+
-webkit-line-clamp: 2;
|
|
2100
|
+
-webkit-box-orient: vertical;
|
|
2101
|
+
white-space: normal;
|
|
1923
2102
|
overflow: hidden;
|
|
1924
|
-
text-overflow: ellipsis;
|
|
1925
2103
|
flex: 1;
|
|
1926
|
-
max-width:
|
|
2104
|
+
max-width: none;
|
|
1927
2105
|
}
|
|
1928
2106
|
|
|
1929
2107
|
.session-item-actions {
|