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/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
- radial-gradient(circle at 16% 10%, rgba(201, 94, 75, 0.14), transparent 48%),
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: 'Source Sans 3', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
36
- --font-family-display: 'Space Grotesk', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
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
- radial-gradient(circle at 12% 18%, rgba(201, 94, 75, 0.1), transparent 38%),
244
- repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.4) 0 1px, transparent 1px 120px),
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.15) 1px, transparent 1px),
258
- linear-gradient(0deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px);
259
- background-size: 120px 120px;
260
- opacity: 0.22;
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: 1460px;
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: center;
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(215px, 295px) minmax(0, 1fr);
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: 14px 16px;
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: 88px;
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.5;
1921
- display: block;
1922
- white-space: nowrap;
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: 75%;
2104
+ max-width: none;
1927
2105
  }
1928
2106
 
1929
2107
  .session-item-actions {