@co0ontty/wand 0.3.0 → 0.4.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/README.md +1 -1
- package/dist/avatar.d.ts +14 -0
- package/dist/avatar.js +110 -0
- package/dist/claude-pty-bridge.d.ts +0 -2
- package/dist/claude-pty-bridge.js +63 -93
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +10 -2
- package/dist/config.js +6 -2
- package/dist/message-parser.js +9 -89
- package/dist/middleware/path-safety.d.ts +6 -0
- package/dist/middleware/path-safety.js +19 -0
- package/dist/middleware/rate-limit.d.ts +8 -0
- package/dist/middleware/rate-limit.js +37 -0
- package/dist/process-manager.d.ts +52 -4
- package/dist/process-manager.js +1025 -125
- package/dist/pty-text-utils.d.ts +13 -0
- package/dist/pty-text-utils.js +84 -0
- package/dist/pwa.d.ts +5 -0
- package/dist/pwa.js +118 -0
- package/dist/server.js +346 -559
- package/dist/session-lifecycle.js +17 -12
- package/dist/session-logger.d.ts +13 -3
- package/dist/session-logger.js +56 -5
- package/dist/storage.d.ts +9 -0
- package/dist/storage.js +62 -7
- package/dist/types.d.ts +8 -2
- package/dist/web-ui/content/icon-192.png +0 -0
- package/dist/web-ui/content/icon-512.png +0 -0
- package/dist/web-ui/content/scripts.js +1571 -302
- package/dist/web-ui/content/styles.css +882 -669
- package/dist/web-ui/index.js +2 -2
- package/dist/ws-broadcast.d.ts +27 -0
- package/dist/ws-broadcast.js +160 -0
- package/package.json +1 -1
|
@@ -100,7 +100,6 @@
|
|
|
100
100
|
/* ===== 布局尺寸 ===== */
|
|
101
101
|
--sidebar-width: 300px;
|
|
102
102
|
--file-panel-width: 320px;
|
|
103
|
-
--topbar-height: 52px;
|
|
104
103
|
|
|
105
104
|
/* ===== 高级缓动函数 ===== */
|
|
106
105
|
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
@@ -121,6 +120,54 @@
|
|
|
121
120
|
}
|
|
122
121
|
}
|
|
123
122
|
|
|
123
|
+
/* ===== PWA 独立窗口模式 ===== */
|
|
124
|
+
@media (display-mode: standalone) {
|
|
125
|
+
.floating-sidebar-toggle {
|
|
126
|
+
top: max(10px, env(safe-area-inset-top, 10px));
|
|
127
|
+
}
|
|
128
|
+
.app-container {
|
|
129
|
+
--pwa-top-inset: env(safe-area-inset-top, 0px);
|
|
130
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
131
|
+
padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
132
|
+
}
|
|
133
|
+
.sidebar-header {
|
|
134
|
+
padding-top: calc(14px + env(safe-area-inset-top, 0px));
|
|
135
|
+
}
|
|
136
|
+
.main-content {
|
|
137
|
+
padding-top: 0;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* iOS Safari PWA fallback (navigator.standalone adds .is-pwa via JS) */
|
|
142
|
+
.is-pwa .floating-sidebar-toggle {
|
|
143
|
+
top: max(10px, env(safe-area-inset-top, 10px));
|
|
144
|
+
}
|
|
145
|
+
.is-pwa .app-container {
|
|
146
|
+
--pwa-top-inset: env(safe-area-inset-top, 0px);
|
|
147
|
+
padding-top: env(safe-area-inset-top, 0px);
|
|
148
|
+
padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
149
|
+
}
|
|
150
|
+
.is-pwa .sidebar-header {
|
|
151
|
+
padding-top: calc(14px + env(safe-area-inset-top, 0px));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* ===== PWA 窗口控件覆盖模式 (Window Controls Overlay) ===== */
|
|
155
|
+
@media (display-mode: window-controls-overlay) {
|
|
156
|
+
.floating-sidebar-toggle {
|
|
157
|
+
top: max(10px, env(titlebar-area-y, 10px));
|
|
158
|
+
left: max(10px, env(titlebar-area-x, 10px));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* ===== 首帧过渡抑制 ===== */
|
|
163
|
+
html.no-transition,
|
|
164
|
+
html.no-transition *,
|
|
165
|
+
html.no-transition *::before,
|
|
166
|
+
html.no-transition *::after {
|
|
167
|
+
transition: none !important;
|
|
168
|
+
animation: none !important;
|
|
169
|
+
}
|
|
170
|
+
|
|
124
171
|
/* ===== 全局重置 ===== */
|
|
125
172
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
126
173
|
|
|
@@ -142,6 +189,8 @@
|
|
|
142
189
|
color: var(--text-primary);
|
|
143
190
|
min-height: 100vh;
|
|
144
191
|
min-height: 100dvh;
|
|
192
|
+
height: 100vh;
|
|
193
|
+
height: 100dvh;
|
|
145
194
|
line-height: var(--line-height-base);
|
|
146
195
|
overflow: hidden;
|
|
147
196
|
}
|
|
@@ -183,8 +232,6 @@
|
|
|
183
232
|
|
|
184
233
|
/* ===== 应用容器 ===== */
|
|
185
234
|
.app-container {
|
|
186
|
-
--layout-topbar-height: var(--topbar-height);
|
|
187
|
-
--layout-sidebar-offset: var(--layout-topbar-height);
|
|
188
235
|
--layout-main-file-panel-width: var(--file-panel-width);
|
|
189
236
|
display: flex;
|
|
190
237
|
flex-direction: column;
|
|
@@ -195,107 +242,44 @@
|
|
|
195
242
|
overflow: hidden;
|
|
196
243
|
}
|
|
197
244
|
|
|
198
|
-
/* =====
|
|
199
|
-
.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
border-bottom: 1px solid var(--border-subtle);
|
|
208
|
-
backdrop-filter: blur(24px) saturate(180%);
|
|
209
|
-
flex-shrink: 0;
|
|
210
|
-
position: sticky;
|
|
211
|
-
top: 0;
|
|
212
|
-
z-index: 100;
|
|
213
|
-
transition: border-color var(--transition-fast), background var(--transition-fast);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.topbar::before {
|
|
217
|
-
content: '';
|
|
218
|
-
position: absolute;
|
|
219
|
-
top: 0;
|
|
220
|
-
left: 0;
|
|
221
|
-
right: 0;
|
|
222
|
-
height: 1px;
|
|
223
|
-
background: linear-gradient(90deg, transparent, rgba(197, 101, 61, 0.1), transparent);
|
|
224
|
-
opacity: 0;
|
|
225
|
-
transition: opacity var(--transition-fast);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.topbar:hover::before {
|
|
229
|
-
opacity: 1;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/* ===== 顶栏左侧区域 ===== */
|
|
233
|
-
.topbar-left {
|
|
234
|
-
display: flex;
|
|
235
|
-
align-items: center;
|
|
236
|
-
gap: 8px;
|
|
237
|
-
min-width: 0;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
.topbar-logo {
|
|
241
|
-
display: flex;
|
|
242
|
-
align-items: center;
|
|
243
|
-
gap: 8px;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.topbar-logo-icon {
|
|
247
|
-
width: 28px;
|
|
248
|
-
height: 28px;
|
|
249
|
-
background: linear-gradient(145deg, #d4785a 0%, #b8573a 50%, #a04a2e 100%);
|
|
250
|
-
border-radius: var(--radius-xs);
|
|
251
|
-
display: flex;
|
|
252
|
-
align-items: center;
|
|
253
|
-
justify-content: center;
|
|
254
|
-
font-size: 12px;
|
|
255
|
-
color: white;
|
|
256
|
-
font-weight: 800;
|
|
257
|
-
box-shadow: 0 2px 8px rgba(184, 92, 55, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
258
|
-
letter-spacing: -0.02em;
|
|
259
|
-
flex-shrink: 0;
|
|
260
|
-
transition: transform var(--transition-fast), box-shadow var(--transition-fast);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
.topbar-logo-icon:hover {
|
|
264
|
-
transform: scale(1.05);
|
|
265
|
-
box-shadow: 0 4px 12px rgba(184, 92, 55, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.25);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
/* ===== 汉堡菜单按钮 ===== */
|
|
269
|
-
.sidebar-toggle-btn {
|
|
270
|
-
position: relative;
|
|
271
|
-
width: 32px;
|
|
272
|
-
height: 32px;
|
|
273
|
-
padding: 0 !important;
|
|
245
|
+
/* ===== 浮动侧栏切换按钮 ===== */
|
|
246
|
+
.floating-sidebar-toggle {
|
|
247
|
+
position: fixed;
|
|
248
|
+
top: max(10px, env(safe-area-inset-top, 10px));
|
|
249
|
+
left: 10px;
|
|
250
|
+
z-index: 200;
|
|
251
|
+
width: 34px;
|
|
252
|
+
height: 34px;
|
|
253
|
+
padding: 0;
|
|
274
254
|
display: flex;
|
|
275
255
|
align-items: center;
|
|
276
256
|
justify-content: center;
|
|
277
|
-
background:
|
|
278
|
-
border:
|
|
279
|
-
border-radius: var(--radius-
|
|
257
|
+
background: rgba(255, 251, 245, 0.85);
|
|
258
|
+
border: 1px solid var(--border-subtle);
|
|
259
|
+
border-radius: var(--radius-sm);
|
|
280
260
|
cursor: pointer;
|
|
261
|
+
backdrop-filter: blur(16px) saturate(180%);
|
|
262
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
281
263
|
transition: all var(--transition-fast);
|
|
282
264
|
}
|
|
283
265
|
|
|
284
|
-
.sidebar-toggle
|
|
285
|
-
background: rgba(
|
|
266
|
+
.floating-sidebar-toggle:hover {
|
|
267
|
+
background: rgba(255, 251, 245, 0.95);
|
|
268
|
+
box-shadow: 0 3px 12px rgba(0, 0, 0, 0.1);
|
|
286
269
|
}
|
|
287
270
|
|
|
288
|
-
.sidebar-toggle
|
|
289
|
-
background: rgba(197, 101, 61, 0.
|
|
271
|
+
.floating-sidebar-toggle.active {
|
|
272
|
+
background: rgba(197, 101, 61, 0.1);
|
|
273
|
+
border-color: rgba(197, 101, 61, 0.2);
|
|
290
274
|
}
|
|
291
275
|
|
|
292
|
-
.sidebar-toggle
|
|
293
|
-
transform: scale(0.
|
|
276
|
+
.floating-sidebar-toggle:active {
|
|
277
|
+
transform: scale(0.92);
|
|
294
278
|
}
|
|
295
279
|
|
|
296
280
|
.hamburger-icon {
|
|
297
|
-
width:
|
|
298
|
-
height:
|
|
281
|
+
width: 16px;
|
|
282
|
+
height: 12px;
|
|
299
283
|
position: relative;
|
|
300
284
|
display: flex;
|
|
301
285
|
flex-direction: column;
|
|
@@ -308,188 +292,45 @@
|
|
|
308
292
|
height: 2px;
|
|
309
293
|
background: var(--text-secondary);
|
|
310
294
|
border-radius: var(--radius-full);
|
|
311
|
-
transition: transform 0.3s var(--ease-out-expo), opacity 0.2s ease, background 0.15s ease
|
|
295
|
+
transition: transform 0.3s var(--ease-out-expo), opacity 0.2s ease, background 0.15s ease;
|
|
312
296
|
transform-origin: center;
|
|
313
297
|
}
|
|
314
298
|
|
|
315
|
-
.sidebar-toggle
|
|
299
|
+
.floating-sidebar-toggle:hover .hamburger-icon span {
|
|
316
300
|
background: var(--text-primary);
|
|
317
301
|
}
|
|
318
302
|
|
|
319
|
-
.sidebar-toggle
|
|
320
|
-
transform: translateY(
|
|
321
|
-
width: 100%;
|
|
303
|
+
.floating-sidebar-toggle.active .hamburger-icon span:nth-child(1) {
|
|
304
|
+
transform: translateY(5px) rotate(45deg);
|
|
322
305
|
}
|
|
323
306
|
|
|
324
|
-
.sidebar-toggle
|
|
307
|
+
.floating-sidebar-toggle.active .hamburger-icon span:nth-child(2) {
|
|
325
308
|
opacity: 0;
|
|
326
309
|
transform: scaleX(0);
|
|
327
|
-
width: 100%;
|
|
328
310
|
}
|
|
329
311
|
|
|
330
|
-
.sidebar-toggle
|
|
331
|
-
transform: translateY(-
|
|
332
|
-
width: 100%;
|
|
312
|
+
.floating-sidebar-toggle.active .hamburger-icon span:nth-child(3) {
|
|
313
|
+
transform: translateY(-5px) rotate(-45deg);
|
|
333
314
|
}
|
|
334
315
|
|
|
335
|
-
.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
flex: 1;
|
|
341
|
-
min-width: 0;
|
|
342
|
-
display: flex;
|
|
343
|
-
align-items: center;
|
|
344
|
-
justify-content: center;
|
|
345
|
-
gap: 8px;
|
|
346
|
-
overflow: hidden;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
.topbar-session-meta {
|
|
350
|
-
min-width: 0;
|
|
316
|
+
.topbar-logo-icon {
|
|
317
|
+
width: 22px;
|
|
318
|
+
height: 22px;
|
|
319
|
+
background: linear-gradient(145deg, #d4785a 0%, #b8573a 50%, #a04a2e 100%);
|
|
320
|
+
border-radius: var(--radius-xs);
|
|
351
321
|
display: flex;
|
|
352
322
|
align-items: center;
|
|
353
323
|
justify-content: center;
|
|
354
|
-
|
|
355
|
-
overflow: hidden;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.topbar-title {
|
|
359
|
-
font-size: 0.75rem;
|
|
360
|
-
font-weight: 600;
|
|
361
|
-
color: var(--text-secondary);
|
|
362
|
-
white-space: nowrap;
|
|
363
|
-
overflow: hidden;
|
|
364
|
-
text-overflow: ellipsis;
|
|
365
|
-
max-width: 300px;
|
|
366
|
-
font-family: var(--font-mono);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
.topbar-terminal-info {
|
|
370
|
-
flex-shrink: 0;
|
|
371
|
-
white-space: nowrap;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
.topbar-spacer {
|
|
375
|
-
height: 6px;
|
|
376
|
-
flex-shrink: 0;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
@media (max-width: 768px) {
|
|
380
|
-
.topbar-session-meta {
|
|
381
|
-
max-width: 100%;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
.topbar-terminal-info {
|
|
385
|
-
font-size: 0.5625rem;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
@media (max-width: 640px) {
|
|
390
|
-
.topbar-center {
|
|
391
|
-
justify-content: flex-start;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
.topbar-session-meta {
|
|
395
|
-
justify-content: flex-start;
|
|
396
|
-
gap: 6px;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
@media (max-width: 390px) {
|
|
401
|
-
.topbar-terminal-info {
|
|
402
|
-
display: none;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
.topbar-right {
|
|
407
|
-
display: flex;
|
|
408
|
-
align-items: center;
|
|
409
|
-
gap: 4px;
|
|
410
|
-
flex-shrink: 0;
|
|
411
|
-
min-width: 0;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/* ===== 顶栏新建会话按钮 ===== */
|
|
415
|
-
.topbar-new-btn {
|
|
416
|
-
display: inline-flex;
|
|
417
|
-
align-items: center;
|
|
418
|
-
gap: 6px;
|
|
419
|
-
font-family: var(--font-sans);
|
|
420
|
-
font-size: 0.8125rem;
|
|
421
|
-
font-weight: 600;
|
|
324
|
+
font-size: 10px;
|
|
422
325
|
color: white;
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
padding: 0 16px;
|
|
427
|
-
height: 34px;
|
|
428
|
-
cursor: pointer;
|
|
429
|
-
transition: all 0.25s var(--ease-out-expo);
|
|
430
|
-
box-shadow: 0 2px 8px rgba(197, 101, 61, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.15);
|
|
431
|
-
white-space: nowrap;
|
|
432
|
-
position: relative;
|
|
433
|
-
overflow: hidden;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
.topbar-new-btn::before {
|
|
437
|
-
content: '';
|
|
438
|
-
position: absolute;
|
|
439
|
-
inset: 0;
|
|
440
|
-
background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, transparent 50%);
|
|
441
|
-
opacity: 0;
|
|
442
|
-
transition: opacity 0.25s ease;
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
.topbar-new-btn::after {
|
|
446
|
-
content: '';
|
|
447
|
-
position: absolute;
|
|
448
|
-
top: 50%;
|
|
449
|
-
left: 50%;
|
|
450
|
-
width: 0;
|
|
451
|
-
height: 0;
|
|
452
|
-
border-radius: 50%;
|
|
453
|
-
background: rgba(255, 255, 255, 0.3);
|
|
454
|
-
transform: translate(-50%, -50%);
|
|
455
|
-
transition: width 0.6s ease, height 0.6s ease;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
.topbar-new-btn:hover {
|
|
459
|
-
background: linear-gradient(135deg, var(--accent-hover) 0%, #b85c37 100%);
|
|
460
|
-
box-shadow: 0 4px 16px rgba(197, 101, 61, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
461
|
-
transform: translateY(-1px) scale(1.02);
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
.topbar-new-btn:hover::before {
|
|
465
|
-
opacity: 1;
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
.topbar-new-btn:active {
|
|
469
|
-
transform: translateY(0) scale(0.98);
|
|
470
|
-
box-shadow: 0 2px 6px rgba(197, 101, 61, 0.2);
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
.topbar-new-btn:active::after {
|
|
474
|
-
width: 200px;
|
|
475
|
-
height: 200px;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
.topbar-new-btn:focus-visible {
|
|
479
|
-
outline: 2px solid var(--accent);
|
|
480
|
-
outline-offset: 3px;
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
.topbar-new-btn svg {
|
|
484
|
-
width: 14px;
|
|
485
|
-
height: 14px;
|
|
326
|
+
font-weight: 800;
|
|
327
|
+
box-shadow: 0 1px 4px rgba(184, 92, 55, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.2);
|
|
328
|
+
letter-spacing: -0.02em;
|
|
486
329
|
flex-shrink: 0;
|
|
487
|
-
transition: transform 0.3s var(--ease-spring);
|
|
488
330
|
}
|
|
489
331
|
|
|
490
|
-
.
|
|
491
|
-
|
|
492
|
-
}
|
|
332
|
+
.status-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--text-muted); }
|
|
333
|
+
.status-dot.active { background: var(--success); box-shadow: 0 0 8px var(--success); }
|
|
493
334
|
|
|
494
335
|
.main-layout {
|
|
495
336
|
display: flex;
|
|
@@ -499,14 +340,17 @@
|
|
|
499
340
|
padding-left: 0;
|
|
500
341
|
transition: padding-left var(--transition-normal);
|
|
501
342
|
}
|
|
502
|
-
.
|
|
503
|
-
|
|
343
|
+
/* .sidebar-open class toggled for semantic purposes only; sidebar overlays without resizing main layout */
|
|
344
|
+
.sidebar-open .input-panel {
|
|
345
|
+
opacity: 0;
|
|
346
|
+
pointer-events: none;
|
|
347
|
+
transition: opacity 0.2s ease;
|
|
504
348
|
}
|
|
505
349
|
|
|
506
350
|
/* ===== 抽屉背景遮罩 ===== */
|
|
507
351
|
.drawer-backdrop {
|
|
508
352
|
position: fixed;
|
|
509
|
-
top:
|
|
353
|
+
top: 0;
|
|
510
354
|
left: 0;
|
|
511
355
|
right: 0;
|
|
512
356
|
bottom: 0;
|
|
@@ -527,7 +371,7 @@
|
|
|
527
371
|
/* ===== 侧边栏组件 ===== */
|
|
528
372
|
.sidebar {
|
|
529
373
|
position: fixed;
|
|
530
|
-
top:
|
|
374
|
+
top: 0;
|
|
531
375
|
left: 0;
|
|
532
376
|
bottom: 0;
|
|
533
377
|
z-index: 25;
|
|
@@ -574,6 +418,23 @@
|
|
|
574
418
|
flex: 1;
|
|
575
419
|
}
|
|
576
420
|
|
|
421
|
+
.sidebar-header-actions {
|
|
422
|
+
display: flex;
|
|
423
|
+
align-items: center;
|
|
424
|
+
gap: 4px;
|
|
425
|
+
flex-shrink: 0;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.sidebar-logout {
|
|
429
|
+
color: var(--text-muted);
|
|
430
|
+
opacity: 0.7;
|
|
431
|
+
transition: opacity var(--transition-fast), color var(--transition-fast);
|
|
432
|
+
}
|
|
433
|
+
.sidebar-logout:hover {
|
|
434
|
+
opacity: 1;
|
|
435
|
+
color: var(--text-secondary);
|
|
436
|
+
}
|
|
437
|
+
|
|
577
438
|
.sidebar-title {
|
|
578
439
|
font-size: 0.875rem;
|
|
579
440
|
font-weight: 600;
|
|
@@ -879,7 +740,6 @@
|
|
|
879
740
|
}
|
|
880
741
|
|
|
881
742
|
.sidebar-intro {
|
|
882
|
-
padding: 12px 14px 0;
|
|
883
743
|
font-size: 0.75rem;
|
|
884
744
|
color: var(--text-secondary);
|
|
885
745
|
flex-shrink: 0;
|
|
@@ -907,6 +767,65 @@
|
|
|
907
767
|
.session-group { margin-bottom: 20px; }
|
|
908
768
|
.session-group:last-child { margin-bottom: 0; }
|
|
909
769
|
|
|
770
|
+
.session-manage-bar {
|
|
771
|
+
display: flex;
|
|
772
|
+
align-items: center;
|
|
773
|
+
justify-content: space-between;
|
|
774
|
+
margin-bottom: 12px;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
.session-manage-bar.active {
|
|
778
|
+
flex-direction: column;
|
|
779
|
+
align-items: stretch;
|
|
780
|
+
gap: 8px;
|
|
781
|
+
padding: 10px 12px;
|
|
782
|
+
border: 1px solid var(--border-subtle);
|
|
783
|
+
border-radius: var(--radius-md);
|
|
784
|
+
background: var(--bg-surface);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
.session-manage-summary {
|
|
788
|
+
font-size: 0.75rem;
|
|
789
|
+
color: var(--text-secondary);
|
|
790
|
+
font-weight: 600;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
.session-manage-actions {
|
|
794
|
+
display: flex;
|
|
795
|
+
flex-wrap: wrap;
|
|
796
|
+
gap: 8px;
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
.session-manage-toggle,
|
|
800
|
+
.session-manage-btn {
|
|
801
|
+
border: 1px solid var(--border-subtle);
|
|
802
|
+
background: var(--bg-surface);
|
|
803
|
+
color: var(--text-primary);
|
|
804
|
+
border-radius: var(--radius-md);
|
|
805
|
+
padding: 6px 10px;
|
|
806
|
+
font-size: 0.75rem;
|
|
807
|
+
font-weight: 600;
|
|
808
|
+
cursor: pointer;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
.session-manage-btn.compact {
|
|
812
|
+
padding: 4px 8px;
|
|
813
|
+
font-size: 0.6875rem;
|
|
814
|
+
margin-left: 8px;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
.session-manage-btn.danger,
|
|
818
|
+
.session-manage-toggle.danger {
|
|
819
|
+
color: #c84636;
|
|
820
|
+
border-color: rgba(200, 70, 54, 0.25);
|
|
821
|
+
background: rgba(200, 70, 54, 0.06);
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
.session-manage-btn:disabled {
|
|
825
|
+
opacity: 0.45;
|
|
826
|
+
cursor: not-allowed;
|
|
827
|
+
}
|
|
828
|
+
|
|
910
829
|
.session-group-title {
|
|
911
830
|
padding: 6px 8px 12px;
|
|
912
831
|
font-size: 0.6875rem;
|
|
@@ -927,132 +846,297 @@
|
|
|
927
846
|
border-radius: var(--radius-full);
|
|
928
847
|
}
|
|
929
848
|
|
|
849
|
+
/* ===== Claude 历史会话 ===== */
|
|
850
|
+
.claude-history-toggle {
|
|
851
|
+
cursor: pointer;
|
|
852
|
+
user-select: none;
|
|
853
|
+
transition: color 0.15s ease;
|
|
854
|
+
}
|
|
855
|
+
.claude-history-toggle:hover {
|
|
856
|
+
color: var(--text-primary);
|
|
857
|
+
}
|
|
858
|
+
.claude-history-toggle .chevron {
|
|
859
|
+
display: inline-block;
|
|
860
|
+
transition: transform 0.2s ease;
|
|
861
|
+
font-size: 0.625rem;
|
|
862
|
+
margin-right: 2px;
|
|
863
|
+
}
|
|
864
|
+
.claude-history-toggle .history-count {
|
|
865
|
+
font-size: 0.625rem;
|
|
866
|
+
font-weight: 500;
|
|
867
|
+
color: var(--text-muted);
|
|
868
|
+
background: var(--bg-inset);
|
|
869
|
+
padding: 1px 6px;
|
|
870
|
+
border-radius: var(--radius-full);
|
|
871
|
+
margin-left: 4px;
|
|
872
|
+
}
|
|
873
|
+
.claude-history-loading {
|
|
874
|
+
padding: 12px 8px;
|
|
875
|
+
color: var(--text-muted);
|
|
876
|
+
font-size: 0.8125rem;
|
|
877
|
+
text-align: center;
|
|
878
|
+
}
|
|
879
|
+
.claude-history-directory-header {
|
|
880
|
+
margin-top: 6px;
|
|
881
|
+
cursor: pointer;
|
|
882
|
+
user-select: none;
|
|
883
|
+
}
|
|
884
|
+
.claude-history-directory-header .chevron {
|
|
885
|
+
font-size: 0.6rem;
|
|
886
|
+
margin-right: 2px;
|
|
887
|
+
}
|
|
888
|
+
.claude-history-directory-title {
|
|
889
|
+
font-size: 0.6rem;
|
|
890
|
+
padding: 4px 8px 4px;
|
|
891
|
+
opacity: 0.7;
|
|
892
|
+
justify-content: space-between;
|
|
893
|
+
}
|
|
894
|
+
.claude-history-directory-label {
|
|
895
|
+
min-width: 0;
|
|
896
|
+
overflow: hidden;
|
|
897
|
+
text-overflow: ellipsis;
|
|
898
|
+
white-space: nowrap;
|
|
899
|
+
}
|
|
900
|
+
.claude-history-directory-clear-btn {
|
|
901
|
+
opacity: 0.9;
|
|
902
|
+
flex-shrink: 0;
|
|
903
|
+
}
|
|
904
|
+
.claude-history-preview {
|
|
905
|
+
overflow: hidden;
|
|
906
|
+
text-overflow: ellipsis;
|
|
907
|
+
white-space: nowrap;
|
|
908
|
+
}
|
|
909
|
+
.claude-history-item {
|
|
910
|
+
opacity: 0.8;
|
|
911
|
+
}
|
|
912
|
+
.claude-history-item:hover {
|
|
913
|
+
opacity: 1;
|
|
914
|
+
}
|
|
915
|
+
|
|
930
916
|
/* ===== 会话卡片项 ===== */
|
|
931
917
|
.session-item {
|
|
932
918
|
width: 100%;
|
|
933
919
|
text-align: left;
|
|
934
920
|
background: var(--bg-surface);
|
|
935
|
-
border: 1px solid
|
|
936
|
-
border-radius: var(--radius-
|
|
921
|
+
border: 1px solid transparent;
|
|
922
|
+
border-radius: var(--radius-md);
|
|
937
923
|
color: var(--text-primary);
|
|
938
|
-
padding:
|
|
924
|
+
padding: 10px 12px;
|
|
939
925
|
cursor: pointer;
|
|
940
|
-
transition: all 0.
|
|
926
|
+
transition: all 0.2s ease;
|
|
941
927
|
font-family: var(--font-sans);
|
|
942
|
-
margin-bottom:
|
|
943
|
-
box-shadow: var(--shadow-xs);
|
|
928
|
+
margin-bottom: 4px;
|
|
944
929
|
position: relative;
|
|
945
930
|
overflow: hidden;
|
|
946
|
-
backdrop-filter: blur(8px);
|
|
947
931
|
}
|
|
948
932
|
|
|
949
933
|
.session-item::before {
|
|
950
934
|
content: '';
|
|
951
935
|
position: absolute;
|
|
952
936
|
left: 0;
|
|
953
|
-
top:
|
|
954
|
-
bottom:
|
|
955
|
-
width:
|
|
956
|
-
background:
|
|
937
|
+
top: 4px;
|
|
938
|
+
bottom: 4px;
|
|
939
|
+
width: 3px;
|
|
940
|
+
background: var(--accent);
|
|
957
941
|
opacity: 0;
|
|
958
942
|
transform: scaleY(0);
|
|
959
|
-
transition: all 0.
|
|
943
|
+
transition: all 0.2s ease;
|
|
960
944
|
border-radius: var(--radius-full);
|
|
961
945
|
}
|
|
962
946
|
|
|
963
|
-
.session-item
|
|
964
|
-
|
|
947
|
+
.session-item-row {
|
|
948
|
+
position: relative;
|
|
949
|
+
z-index: 1;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.session-item-content {
|
|
953
|
+
position: relative;
|
|
954
|
+
z-index: 2;
|
|
955
|
+
background: inherit;
|
|
956
|
+
transition: transform 0.3s var(--ease-out-expo);
|
|
957
|
+
will-change: transform;
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
.session-item.swiped .session-item-content {
|
|
961
|
+
transform: translateX(-72px);
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
.session-manage-check {
|
|
965
|
+
display: inline-flex;
|
|
966
|
+
align-items: center;
|
|
967
|
+
justify-content: center;
|
|
968
|
+
flex-shrink: 0;
|
|
969
|
+
width: 22px;
|
|
970
|
+
height: 22px;
|
|
971
|
+
margin-right: 8px;
|
|
972
|
+
position: relative;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
.session-manage-check input {
|
|
965
976
|
position: absolute;
|
|
966
977
|
inset: 0;
|
|
967
|
-
background: radial-gradient(circle at 50% 0%, rgba(197, 101, 61, 0.06) 0%, transparent 70%);
|
|
968
978
|
opacity: 0;
|
|
969
|
-
|
|
979
|
+
cursor: pointer;
|
|
970
980
|
}
|
|
971
981
|
|
|
972
|
-
.session-
|
|
973
|
-
|
|
982
|
+
.session-manage-check span {
|
|
983
|
+
width: 18px;
|
|
984
|
+
height: 18px;
|
|
985
|
+
border-radius: 6px;
|
|
986
|
+
border: 1px solid var(--border-subtle);
|
|
987
|
+
background: var(--bg-surface);
|
|
988
|
+
display: inline-flex;
|
|
989
|
+
align-items: center;
|
|
990
|
+
justify-content: center;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
.session-manage-check input:checked + span {
|
|
994
|
+
background: var(--accent);
|
|
995
|
+
border-color: var(--accent);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.session-manage-check input:checked + span::after {
|
|
999
|
+
content: "✓";
|
|
1000
|
+
color: #fff;
|
|
1001
|
+
font-size: 0.75rem;
|
|
1002
|
+
font-weight: 700;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
.session-item.selected {
|
|
1006
|
+
border-color: rgba(197, 101, 61, 0.35);
|
|
1007
|
+
background: rgba(197, 101, 61, 0.08);
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
.session-item.selected::before {
|
|
1011
|
+
opacity: 0.7;
|
|
1012
|
+
transform: scaleY(1);
|
|
974
1013
|
}
|
|
975
1014
|
|
|
976
1015
|
.session-item-row {
|
|
977
1016
|
display: flex;
|
|
978
1017
|
align-items: flex-start;
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
.session-delete-zone {
|
|
1021
|
+
display: none;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
.session-delete-btn {
|
|
1025
|
+
display: none;
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
@keyframes session-delete-collapse {
|
|
1029
|
+
to {
|
|
1030
|
+
max-height: 0;
|
|
1031
|
+
opacity: 0;
|
|
1032
|
+
margin-bottom: 0;
|
|
1033
|
+
padding-top: 0;
|
|
1034
|
+
padding-bottom: 0;
|
|
1035
|
+
border-width: 0;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.session-item.deleting {
|
|
1040
|
+
animation: session-delete-collapse 0.3s ease-out forwards;
|
|
1041
|
+
overflow: hidden;
|
|
1042
|
+
max-height: 120px;
|
|
1043
|
+
pointer-events: none;
|
|
983
1044
|
}
|
|
984
1045
|
|
|
985
1046
|
.session-main {
|
|
986
1047
|
min-width: 0;
|
|
987
|
-
flex: 1;
|
|
988
1048
|
display: flex;
|
|
989
1049
|
flex-direction: column;
|
|
990
|
-
gap:
|
|
1050
|
+
gap: 3px;
|
|
1051
|
+
padding-right: 64px;
|
|
991
1052
|
}
|
|
992
1053
|
|
|
993
1054
|
/* ===== 会话操作按钮 ===== */
|
|
994
1055
|
.session-actions {
|
|
1056
|
+
position: absolute;
|
|
1057
|
+
right: 0;
|
|
1058
|
+
top: 0;
|
|
995
1059
|
display: inline-flex;
|
|
996
1060
|
align-items: center;
|
|
997
|
-
gap:
|
|
1061
|
+
gap: 2px;
|
|
998
1062
|
flex-shrink: 0;
|
|
999
|
-
opacity: 0;
|
|
1000
|
-
transform: translateX(8px);
|
|
1001
|
-
transition: all 0.25s var(--ease-out-expo);
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
.session-item:hover .session-actions {
|
|
1005
|
-
opacity: 1;
|
|
1006
|
-
transform: translateX(0);
|
|
1007
1063
|
}
|
|
1008
1064
|
|
|
1009
1065
|
.session-action-btn {
|
|
1010
|
-
width:
|
|
1011
|
-
height:
|
|
1012
|
-
min-height:
|
|
1013
|
-
min-width:
|
|
1066
|
+
width: 28px;
|
|
1067
|
+
height: 28px;
|
|
1068
|
+
min-height: 28px;
|
|
1069
|
+
min-width: 28px;
|
|
1014
1070
|
padding: 0;
|
|
1015
|
-
border-radius: var(--radius-
|
|
1071
|
+
border-radius: var(--radius-full);
|
|
1016
1072
|
display: flex;
|
|
1017
1073
|
align-items: center;
|
|
1018
1074
|
justify-content: center;
|
|
1019
|
-
font-size: 0.
|
|
1020
|
-
background:
|
|
1021
|
-
border:
|
|
1022
|
-
transition: all 0.
|
|
1023
|
-
color: var(--text-
|
|
1075
|
+
font-size: 0.8125rem;
|
|
1076
|
+
background: transparent;
|
|
1077
|
+
border: none;
|
|
1078
|
+
transition: all 0.2s ease;
|
|
1079
|
+
color: var(--text-muted);
|
|
1080
|
+
cursor: pointer;
|
|
1024
1081
|
}
|
|
1025
1082
|
|
|
1026
1083
|
.session-action-btn:hover {
|
|
1027
|
-
background:
|
|
1028
|
-
border-color: var(--accent);
|
|
1084
|
+
background: rgba(150, 118, 85, 0.1);
|
|
1029
1085
|
color: var(--accent);
|
|
1030
|
-
transform: scale(1.12);
|
|
1031
|
-
box-shadow: 0 4px 12px rgba(197, 101, 61, 0.25);
|
|
1032
1086
|
}
|
|
1033
1087
|
|
|
1034
1088
|
.session-action-btn:active {
|
|
1035
|
-
transform: scale(0.
|
|
1089
|
+
transform: scale(0.9);
|
|
1036
1090
|
transition-duration: 0.1s;
|
|
1037
1091
|
}
|
|
1038
1092
|
|
|
1093
|
+
.session-action-btn svg {
|
|
1094
|
+
flex-shrink: 0;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
/* Delete icon button in actions */
|
|
1098
|
+
.session-action-btn.delete-btn:hover {
|
|
1099
|
+
background: rgba(231, 76, 60, 0.08);
|
|
1100
|
+
color: #d35244;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
/* PC: hover to show action buttons */
|
|
1104
|
+
@media (hover: hover) {
|
|
1105
|
+
.session-item .session-actions {
|
|
1106
|
+
opacity: 0;
|
|
1107
|
+
transition: opacity 0.15s ease;
|
|
1108
|
+
}
|
|
1109
|
+
.session-item:hover .session-actions,
|
|
1110
|
+
.session-item.active .session-actions,
|
|
1111
|
+
.session-item.swiped .session-actions {
|
|
1112
|
+
opacity: 1;
|
|
1113
|
+
}
|
|
1114
|
+
/* Running sessions always show resume */
|
|
1115
|
+
.session-item .session-actions:has(.session-action-btn[data-action="resume"]) {
|
|
1116
|
+
opacity: 1;
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
@media (hover: none) {
|
|
1121
|
+
.session-item .session-actions {
|
|
1122
|
+
opacity: 1;
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1039
1126
|
/* ===== 会话卡片交互效果 ===== */
|
|
1040
1127
|
.session-item:hover {
|
|
1041
|
-
background: rgba(
|
|
1042
|
-
border-color: var(--
|
|
1043
|
-
transform: translateY(-3px);
|
|
1044
|
-
box-shadow: var(--shadow-md);
|
|
1128
|
+
background: rgba(150, 118, 85, 0.06);
|
|
1129
|
+
border-color: var(--border-subtle);
|
|
1045
1130
|
}
|
|
1046
1131
|
|
|
1047
1132
|
.session-item:hover::before {
|
|
1048
|
-
opacity:
|
|
1133
|
+
opacity: 0.5;
|
|
1049
1134
|
transform: scaleY(1);
|
|
1050
1135
|
}
|
|
1051
1136
|
|
|
1052
1137
|
.session-item.active {
|
|
1053
|
-
background:
|
|
1054
|
-
border-color:
|
|
1055
|
-
box-shadow: 0 4px 16px rgba(197, 101, 61, 0.15);
|
|
1138
|
+
background: rgba(197, 101, 61, 0.08);
|
|
1139
|
+
border-color: rgba(197, 101, 61, 0.2);
|
|
1056
1140
|
}
|
|
1057
1141
|
|
|
1058
1142
|
.session-item.active::before {
|
|
@@ -1061,7 +1145,7 @@
|
|
|
1061
1145
|
}
|
|
1062
1146
|
|
|
1063
1147
|
.session-item:active {
|
|
1064
|
-
transform: scale(0.
|
|
1148
|
+
transform: scale(0.99);
|
|
1065
1149
|
transition-duration: 0.1s;
|
|
1066
1150
|
}
|
|
1067
1151
|
|
|
@@ -1148,6 +1232,27 @@
|
|
|
1148
1232
|
background: rgba(255, 251, 245, 0.7);
|
|
1149
1233
|
}
|
|
1150
1234
|
|
|
1235
|
+
.sidebar-footer-actions {
|
|
1236
|
+
display: flex;
|
|
1237
|
+
justify-content: center;
|
|
1238
|
+
gap: 4px;
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.sidebar-footer-actions .btn {
|
|
1242
|
+
flex: 1;
|
|
1243
|
+
display: inline-flex;
|
|
1244
|
+
align-items: center;
|
|
1245
|
+
justify-content: center;
|
|
1246
|
+
gap: 4px;
|
|
1247
|
+
font-size: 0.75rem;
|
|
1248
|
+
color: var(--text-secondary);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
.sidebar-footer-actions .btn:hover {
|
|
1252
|
+
color: var(--text-primary);
|
|
1253
|
+
background: var(--bg-tertiary);
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1151
1256
|
.sidebar-meta {
|
|
1152
1257
|
display: flex;
|
|
1153
1258
|
flex-direction: row;
|
|
@@ -1467,30 +1572,43 @@
|
|
|
1467
1572
|
|
|
1468
1573
|
.terminal-container.active {
|
|
1469
1574
|
display: flex;
|
|
1575
|
+
align-items: stretch;
|
|
1470
1576
|
}
|
|
1471
1577
|
|
|
1472
|
-
.terminal-container
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
0 8px 32px rgba(0, 0, 0, 0.4),
|
|
1477
|
-
0 0 0 2px rgba(197, 101, 61, 0.15);
|
|
1578
|
+
.terminal-container > #output {
|
|
1579
|
+
flex: 1;
|
|
1580
|
+
min-height: 0;
|
|
1581
|
+
position: relative;
|
|
1478
1582
|
}
|
|
1479
1583
|
|
|
1480
|
-
.terminal-container .xterm {
|
|
1584
|
+
.terminal-container > #output .xterm {
|
|
1481
1585
|
position: absolute;
|
|
1482
1586
|
top: 0;
|
|
1483
1587
|
left: 0;
|
|
1484
1588
|
right: 0;
|
|
1485
1589
|
bottom: 0;
|
|
1486
|
-
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
.terminal-container > #output .xterm-viewport {
|
|
1593
|
+
background: transparent !important;
|
|
1487
1594
|
}
|
|
1488
1595
|
|
|
1489
1596
|
.terminal-container .xterm-viewport {
|
|
1490
1597
|
background: transparent !important;
|
|
1491
1598
|
}
|
|
1492
1599
|
|
|
1493
|
-
|
|
1600
|
+
.terminal-container .xterm {
|
|
1601
|
+
padding: 0;
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
.terminal-container:focus-within {
|
|
1605
|
+
border-color: rgba(197, 101, 61, 0.5);
|
|
1606
|
+
box-shadow:
|
|
1607
|
+
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
|
1608
|
+
0 8px 32px rgba(0, 0, 0, 0.4),
|
|
1609
|
+
0 0 0 2px rgba(197, 101, 61, 0.15);
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1494
1612
|
.terminal-resize-handle {
|
|
1495
1613
|
position: absolute;
|
|
1496
1614
|
bottom: 3px;
|
|
@@ -1654,6 +1772,50 @@
|
|
|
1654
1772
|
padding: 0 3px;
|
|
1655
1773
|
}
|
|
1656
1774
|
|
|
1775
|
+
.terminal-scale-overlay-divider {
|
|
1776
|
+
width: 1px;
|
|
1777
|
+
height: 14px;
|
|
1778
|
+
background: rgba(245, 234, 220, 0.2);
|
|
1779
|
+
margin: 0 2px;
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
.terminal-jump-bottom {
|
|
1783
|
+
position: absolute;
|
|
1784
|
+
right: 14px;
|
|
1785
|
+
bottom: 18px;
|
|
1786
|
+
display: inline-flex;
|
|
1787
|
+
align-items: center;
|
|
1788
|
+
justify-content: center;
|
|
1789
|
+
gap: 6px;
|
|
1790
|
+
min-width: 78px;
|
|
1791
|
+
height: 32px;
|
|
1792
|
+
padding: 0 12px;
|
|
1793
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
1794
|
+
border-radius: 999px;
|
|
1795
|
+
background: rgba(24, 20, 17, 0.72);
|
|
1796
|
+
color: rgba(255, 247, 239, 0.92);
|
|
1797
|
+
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);
|
|
1798
|
+
backdrop-filter: blur(10px);
|
|
1799
|
+
cursor: pointer;
|
|
1800
|
+
z-index: 13;
|
|
1801
|
+
opacity: 0;
|
|
1802
|
+
transform: translateY(8px);
|
|
1803
|
+
pointer-events: none;
|
|
1804
|
+
transition: opacity 0.18s ease, transform 0.18s ease, background 0.18s ease, border-color 0.18s ease;
|
|
1805
|
+
}
|
|
1806
|
+
.terminal-jump-bottom.visible {
|
|
1807
|
+
opacity: 1;
|
|
1808
|
+
transform: translateY(0);
|
|
1809
|
+
pointer-events: auto;
|
|
1810
|
+
}
|
|
1811
|
+
.terminal-jump-bottom:hover {
|
|
1812
|
+
background: rgba(38, 30, 24, 0.84);
|
|
1813
|
+
border-color: rgba(214, 123, 82, 0.28);
|
|
1814
|
+
}
|
|
1815
|
+
.terminal-jump-bottom:active {
|
|
1816
|
+
transform: translateY(1px);
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1657
1819
|
/* Terminal interactive mode indicator */
|
|
1658
1820
|
.terminal-container.interactive {
|
|
1659
1821
|
border-color: rgba(79, 122, 88, 0.5);
|
|
@@ -1812,151 +1974,93 @@
|
|
|
1812
1974
|
}
|
|
1813
1975
|
|
|
1814
1976
|
/* Keyboard toggle button and popup */
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
border-radius: 8px;
|
|
1819
|
-
border: 1px solid rgba(125, 91, 57, 0.2);
|
|
1820
|
-
background: rgba(255, 255, 255, 0.7);
|
|
1821
|
-
color: var(--text-secondary);
|
|
1822
|
-
cursor: pointer;
|
|
1977
|
+
/* ===== 内联快捷键 ===== */
|
|
1978
|
+
/* Desktop: show inline keys directly, hide toggle button and strip */
|
|
1979
|
+
.inline-shortcuts-wrap {
|
|
1823
1980
|
display: flex;
|
|
1824
1981
|
align-items: center;
|
|
1825
|
-
justify-content: center;
|
|
1826
|
-
transition: all 0.15s ease;
|
|
1827
|
-
flex-shrink: 0;
|
|
1828
|
-
-webkit-tap-highlight-color: transparent;
|
|
1829
|
-
user-select: none;
|
|
1830
1982
|
position: relative;
|
|
1983
|
+
flex-shrink: 0;
|
|
1831
1984
|
}
|
|
1832
|
-
.
|
|
1833
|
-
border-color: var(--accent-soft);
|
|
1834
|
-
background: rgba(255, 255, 255, 0.9);
|
|
1835
|
-
color: var(--text-primary);
|
|
1836
|
-
}
|
|
1837
|
-
.keyboard-toggle-btn:active {
|
|
1838
|
-
background: var(--accent-soft);
|
|
1839
|
-
border-color: var(--accent);
|
|
1840
|
-
color: white;
|
|
1841
|
-
transform: scale(0.95);
|
|
1842
|
-
}
|
|
1843
|
-
.keyboard-toggle-btn.active {
|
|
1844
|
-
background: var(--accent-soft);
|
|
1845
|
-
border-color: var(--accent);
|
|
1846
|
-
color: white;
|
|
1847
|
-
}
|
|
1848
|
-
.keyboard-toggle-btn.hidden {
|
|
1985
|
+
.shortcuts-toggle {
|
|
1849
1986
|
display: none;
|
|
1850
1987
|
}
|
|
1851
|
-
|
|
1852
|
-
/* Keyboard popup panel */
|
|
1853
|
-
.keyboard-popup {
|
|
1854
|
-
position: fixed;
|
|
1855
|
-
bottom: calc(var(--keyboard-offset, 0px) + 160px);
|
|
1856
|
-
right: 12px;
|
|
1857
|
-
background: rgba(255, 252, 245, 0.98);
|
|
1858
|
-
border: 1px solid rgba(125, 91, 57, 0.25);
|
|
1859
|
-
border-radius: 12px;
|
|
1860
|
-
padding: 10px;
|
|
1861
|
-
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
|
|
1862
|
-
z-index: 2000;
|
|
1863
|
-
display: flex;
|
|
1864
|
-
flex-direction: column;
|
|
1865
|
-
gap: 8px;
|
|
1866
|
-
min-width: 180px;
|
|
1867
|
-
}
|
|
1868
|
-
.keyboard-popup.hidden {
|
|
1988
|
+
.inline-shortcuts-strip {
|
|
1869
1989
|
display: none;
|
|
1870
1990
|
}
|
|
1871
|
-
.
|
|
1991
|
+
.inline-shortcuts-inline {
|
|
1872
1992
|
display: flex;
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
.keyboard-popup-row.modifiers {
|
|
1877
|
-
justify-content: flex-start;
|
|
1993
|
+
align-items: center;
|
|
1994
|
+
gap: 3px;
|
|
1995
|
+
flex-shrink: 0;
|
|
1878
1996
|
}
|
|
1879
|
-
|
|
1880
|
-
|
|
1997
|
+
|
|
1998
|
+
.shortcut-sep {
|
|
1999
|
+
color: var(--text-muted);
|
|
2000
|
+
font-size: 0.625rem;
|
|
2001
|
+
opacity: 0.5;
|
|
2002
|
+
margin: 0 1px;
|
|
2003
|
+
user-select: none;
|
|
1881
2004
|
}
|
|
1882
2005
|
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
min-width:
|
|
1886
|
-
|
|
1887
|
-
border
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
font-size: 0.8rem;
|
|
2006
|
+
.shortcut-key {
|
|
2007
|
+
height: 20px;
|
|
2008
|
+
min-width: 20px;
|
|
2009
|
+
border-radius: 3px;
|
|
2010
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
2011
|
+
background: rgba(255, 255, 255, 0.5);
|
|
2012
|
+
color: var(--text-muted);
|
|
2013
|
+
font-size: 0.5625rem;
|
|
1892
2014
|
font-family: var(--font-mono);
|
|
1893
2015
|
font-weight: 500;
|
|
1894
2016
|
cursor: pointer;
|
|
1895
|
-
display: flex;
|
|
2017
|
+
display: inline-flex;
|
|
1896
2018
|
align-items: center;
|
|
1897
2019
|
justify-content: center;
|
|
1898
|
-
transition: all 0.
|
|
1899
|
-
padding: 0
|
|
2020
|
+
transition: all 0.12s ease;
|
|
2021
|
+
padding: 0 4px;
|
|
1900
2022
|
flex-shrink: 0;
|
|
1901
2023
|
-webkit-tap-highlight-color: transparent;
|
|
1902
2024
|
user-select: none;
|
|
2025
|
+
line-height: 1;
|
|
1903
2026
|
}
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
2027
|
+
|
|
2028
|
+
.shortcut-key:hover {
|
|
2029
|
+
border-color: rgba(125, 91, 57, 0.3);
|
|
2030
|
+
background: rgba(255, 255, 255, 0.85);
|
|
2031
|
+
color: var(--text-secondary);
|
|
1908
2032
|
}
|
|
1909
|
-
|
|
2033
|
+
|
|
2034
|
+
.shortcut-key:active {
|
|
1910
2035
|
background: var(--accent-soft);
|
|
1911
2036
|
border-color: var(--accent);
|
|
1912
2037
|
color: white;
|
|
1913
|
-
transform: scale(0.
|
|
2038
|
+
transform: scale(0.93);
|
|
1914
2039
|
}
|
|
1915
|
-
|
|
1916
|
-
|
|
2040
|
+
|
|
2041
|
+
.shortcut-key.active {
|
|
2042
|
+
background: rgba(197, 101, 61, 0.15);
|
|
1917
2043
|
border-color: var(--accent);
|
|
1918
|
-
color:
|
|
1919
|
-
box-shadow: 0 0 0 2px rgba(197, 101, 61, 0.15);
|
|
1920
|
-
}
|
|
1921
|
-
.kp-action {
|
|
1922
|
-
min-width: 50px;
|
|
1923
|
-
flex: 1;
|
|
2044
|
+
color: var(--accent);
|
|
1924
2045
|
}
|
|
1925
|
-
|
|
1926
|
-
|
|
2046
|
+
|
|
2047
|
+
.shortcut-key.shortcut-dir {
|
|
2048
|
+
min-width: 18px;
|
|
2049
|
+
padding: 0 2px;
|
|
2050
|
+
font-size: 0.625rem;
|
|
1927
2051
|
}
|
|
1928
|
-
|
|
1929
|
-
|
|
2052
|
+
|
|
2053
|
+
.shortcut-key[data-key="escape"] {
|
|
2054
|
+
color: #b06060;
|
|
1930
2055
|
}
|
|
1931
|
-
.
|
|
2056
|
+
.shortcut-key[data-key="enter"] {
|
|
1932
2057
|
color: #4a7c59;
|
|
1933
2058
|
}
|
|
1934
|
-
.
|
|
2059
|
+
.shortcut-key[data-key="ctrl_enter"] {
|
|
1935
2060
|
color: var(--accent);
|
|
1936
2061
|
font-weight: 600;
|
|
1937
2062
|
}
|
|
1938
2063
|
|
|
1939
|
-
/* Direction keys grid layout - cross shape */
|
|
1940
|
-
.kp-dir-grid {
|
|
1941
|
-
display: flex;
|
|
1942
|
-
flex-direction: column;
|
|
1943
|
-
align-items: center;
|
|
1944
|
-
gap: 4px;
|
|
1945
|
-
}
|
|
1946
|
-
.kp-dir-up {
|
|
1947
|
-
display: flex;
|
|
1948
|
-
justify-content: center;
|
|
1949
|
-
}
|
|
1950
|
-
.kp-dir-lr {
|
|
1951
|
-
display: flex;
|
|
1952
|
-
gap: 4px;
|
|
1953
|
-
}
|
|
1954
|
-
.kp-dir {
|
|
1955
|
-
min-width: 36px;
|
|
1956
|
-
height: 36px;
|
|
1957
|
-
font-size: 1rem;
|
|
1958
|
-
}
|
|
1959
|
-
|
|
1960
2064
|
/* Mobile keyboard overlap compensation */
|
|
1961
2065
|
@media (max-width: 640px) {
|
|
1962
2066
|
.mini-keyboard {
|
|
@@ -1998,6 +2102,7 @@
|
|
|
1998
2102
|
gap: 16px;
|
|
1999
2103
|
padding: 20px 4px 12px;
|
|
2000
2104
|
min-height: 0;
|
|
2105
|
+
scrollbar-gutter: stable;
|
|
2001
2106
|
}
|
|
2002
2107
|
|
|
2003
2108
|
/* ===== 消息动画 ===== */
|
|
@@ -3151,7 +3256,7 @@
|
|
|
3151
3256
|
.token-type { color: #d5a35b; }
|
|
3152
3257
|
|
|
3153
3258
|
.input-panel {
|
|
3154
|
-
padding:
|
|
3259
|
+
padding: 6px 10px;
|
|
3155
3260
|
flex-shrink: 0;
|
|
3156
3261
|
z-index: 26;
|
|
3157
3262
|
overscroll-behavior: contain;
|
|
@@ -3161,7 +3266,7 @@
|
|
|
3161
3266
|
.input-composer {
|
|
3162
3267
|
background: rgba(255, 255, 255, 0.85);
|
|
3163
3268
|
border: 1px solid var(--border-default);
|
|
3164
|
-
border-radius:
|
|
3269
|
+
border-radius: 14px;
|
|
3165
3270
|
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
3166
3271
|
overflow: hidden;
|
|
3167
3272
|
position: relative;
|
|
@@ -3169,34 +3274,125 @@
|
|
|
3169
3274
|
}
|
|
3170
3275
|
.input-composer:focus-within {
|
|
3171
3276
|
border-color: var(--accent);
|
|
3172
|
-
box-shadow: 0 0 0
|
|
3277
|
+
box-shadow: 0 0 0 2px var(--accent-muted), 0 0 16px rgba(197, 101, 61, 0.08);
|
|
3173
3278
|
background: rgba(255, 255, 255, 0.98);
|
|
3174
3279
|
}
|
|
3175
3280
|
.input-composer-bar {
|
|
3176
3281
|
display: flex;
|
|
3177
3282
|
align-items: center;
|
|
3178
3283
|
justify-content: space-between;
|
|
3179
|
-
padding:
|
|
3180
|
-
gap:
|
|
3284
|
+
padding: 2px 4px 3px 6px;
|
|
3285
|
+
gap: 4px;
|
|
3286
|
+
}
|
|
3287
|
+
.input-composer-left {
|
|
3288
|
+
display: flex;
|
|
3289
|
+
align-items: center;
|
|
3290
|
+
gap: 4px;
|
|
3291
|
+
flex-wrap: nowrap;
|
|
3292
|
+
flex-shrink: 0;
|
|
3293
|
+
}
|
|
3294
|
+
|
|
3295
|
+
/* Permission actions inline in composer bar */
|
|
3296
|
+
.permission-actions {
|
|
3297
|
+
display: inline-flex;
|
|
3298
|
+
align-items: center;
|
|
3299
|
+
gap: 4px;
|
|
3300
|
+
animation: permission-fade-in 0.2s ease-out;
|
|
3301
|
+
}
|
|
3302
|
+
.permission-actions.hidden {
|
|
3303
|
+
display: none;
|
|
3304
|
+
}
|
|
3305
|
+
.permission-actions-divider {
|
|
3306
|
+
width: 1px;
|
|
3307
|
+
height: 16px;
|
|
3308
|
+
background: var(--border);
|
|
3309
|
+
margin: 0 2px;
|
|
3310
|
+
}
|
|
3311
|
+
.permission-actions-label {
|
|
3312
|
+
font-size: 0.7rem;
|
|
3313
|
+
color: #d18b00;
|
|
3314
|
+
max-width: 180px;
|
|
3315
|
+
overflow: hidden;
|
|
3316
|
+
text-overflow: ellipsis;
|
|
3317
|
+
white-space: nowrap;
|
|
3318
|
+
}
|
|
3319
|
+
.btn-permission {
|
|
3320
|
+
font-size: 0.65rem;
|
|
3321
|
+
padding: 1px 8px;
|
|
3322
|
+
border-radius: 4px;
|
|
3323
|
+
border: 1px solid transparent;
|
|
3324
|
+
cursor: pointer;
|
|
3325
|
+
line-height: 1.4;
|
|
3326
|
+
font-weight: 500;
|
|
3327
|
+
transition: background 0.15s, border-color 0.15s;
|
|
3328
|
+
}
|
|
3329
|
+
.btn-permission:disabled {
|
|
3330
|
+
opacity: 0.5;
|
|
3331
|
+
cursor: not-allowed;
|
|
3332
|
+
}
|
|
3333
|
+
.btn-permission-approve {
|
|
3334
|
+
background: rgba(240, 165, 0, 0.15);
|
|
3335
|
+
color: #d18b00;
|
|
3336
|
+
border-color: rgba(240, 165, 0, 0.3);
|
|
3337
|
+
}
|
|
3338
|
+
.btn-permission-approve:hover:not(:disabled) {
|
|
3339
|
+
background: rgba(240, 165, 0, 0.25);
|
|
3340
|
+
}
|
|
3341
|
+
.btn-permission-deny {
|
|
3342
|
+
background: transparent;
|
|
3343
|
+
color: var(--text-muted);
|
|
3344
|
+
border-color: var(--border);
|
|
3345
|
+
}
|
|
3346
|
+
.btn-permission-deny:hover:not(:disabled) {
|
|
3347
|
+
background: rgba(220, 50, 50, 0.08);
|
|
3348
|
+
color: var(--danger);
|
|
3349
|
+
border-color: rgba(220, 50, 50, 0.3);
|
|
3350
|
+
}
|
|
3351
|
+
@keyframes permission-fade-in {
|
|
3352
|
+
from { opacity: 0; transform: translateX(-4px); }
|
|
3353
|
+
to { opacity: 1; transform: translateX(0); }
|
|
3354
|
+
}
|
|
3355
|
+
|
|
3356
|
+
.composer-interactive-toggle {
|
|
3357
|
+
display: inline-flex;
|
|
3358
|
+
align-items: center;
|
|
3359
|
+
justify-content: center;
|
|
3360
|
+
width: 22px;
|
|
3361
|
+
height: 22px;
|
|
3362
|
+
border: 1px solid var(--border-subtle);
|
|
3363
|
+
border-radius: 4px;
|
|
3364
|
+
background: transparent;
|
|
3365
|
+
color: var(--text-muted);
|
|
3366
|
+
font-size: 0.75rem;
|
|
3367
|
+
cursor: pointer;
|
|
3368
|
+
transition: all var(--transition-fast);
|
|
3369
|
+
flex-shrink: 0;
|
|
3370
|
+
padding: 0;
|
|
3371
|
+
}
|
|
3372
|
+
.composer-interactive-toggle:hover {
|
|
3373
|
+
background: rgba(197, 101, 61, 0.08);
|
|
3374
|
+
color: var(--text-secondary);
|
|
3375
|
+
border-color: var(--accent);
|
|
3181
3376
|
}
|
|
3182
|
-
.
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
flex-wrap: wrap;
|
|
3377
|
+
.composer-interactive-toggle.active {
|
|
3378
|
+
background: rgba(197, 101, 61, 0.12);
|
|
3379
|
+
color: var(--accent);
|
|
3380
|
+
border-color: var(--accent);
|
|
3187
3381
|
}
|
|
3188
3382
|
.input-composer-right {
|
|
3189
3383
|
display: flex;
|
|
3190
3384
|
align-items: center;
|
|
3191
|
-
gap:
|
|
3385
|
+
gap: 4px;
|
|
3192
3386
|
position: relative;
|
|
3387
|
+
flex: 1;
|
|
3388
|
+
justify-content: flex-end;
|
|
3193
3389
|
}
|
|
3194
3390
|
.queue-counter {
|
|
3195
|
-
font-size: 0.
|
|
3391
|
+
font-size: 0.625rem;
|
|
3196
3392
|
color: var(--accent);
|
|
3197
3393
|
background: var(--accent-muted);
|
|
3198
|
-
padding:
|
|
3199
|
-
border-radius:
|
|
3394
|
+
padding: 1px 6px;
|
|
3395
|
+
border-radius: 8px;
|
|
3200
3396
|
white-space: nowrap;
|
|
3201
3397
|
font-weight: 600;
|
|
3202
3398
|
animation: queuePulse 1.5s ease-in-out infinite;
|
|
@@ -3208,27 +3404,28 @@
|
|
|
3208
3404
|
}
|
|
3209
3405
|
|
|
3210
3406
|
.input-hint {
|
|
3211
|
-
font-size: 0.
|
|
3407
|
+
font-size: 0.5625rem;
|
|
3212
3408
|
color: var(--text-muted);
|
|
3213
3409
|
white-space: nowrap;
|
|
3214
3410
|
user-select: none;
|
|
3411
|
+
opacity: 0.7;
|
|
3215
3412
|
}
|
|
3216
3413
|
|
|
3217
3414
|
/* Session info bar at bottom of input composer */
|
|
3218
3415
|
.input-session-info-bar {
|
|
3219
3416
|
display: flex;
|
|
3220
3417
|
align-items: center;
|
|
3221
|
-
gap:
|
|
3222
|
-
padding:
|
|
3223
|
-
background: rgba(245, 240, 230, 0.
|
|
3418
|
+
gap: 5px;
|
|
3419
|
+
padding: 3px 8px;
|
|
3420
|
+
background: rgba(245, 240, 230, 0.5);
|
|
3224
3421
|
border-top: 1px solid var(--border-subtle);
|
|
3225
|
-
font-size: 0.
|
|
3422
|
+
font-size: 0.6875rem;
|
|
3226
3423
|
color: var(--text-secondary);
|
|
3227
3424
|
}
|
|
3228
3425
|
.session-cwd-display {
|
|
3229
3426
|
font-weight: 500;
|
|
3230
3427
|
color: var(--text-primary);
|
|
3231
|
-
max-width:
|
|
3428
|
+
max-width: 180px;
|
|
3232
3429
|
overflow: hidden;
|
|
3233
3430
|
text-overflow: ellipsis;
|
|
3234
3431
|
white-space: nowrap;
|
|
@@ -3243,6 +3440,30 @@
|
|
|
3243
3440
|
color: var(--border-default);
|
|
3244
3441
|
opacity: 0.6;
|
|
3245
3442
|
}
|
|
3443
|
+
.claude-session-id-badge {
|
|
3444
|
+
font-family: var(--font-mono);
|
|
3445
|
+
font-size: 0.6875rem;
|
|
3446
|
+
color: var(--text-muted);
|
|
3447
|
+
background: rgba(150, 118, 85, 0.1);
|
|
3448
|
+
padding: 2px 6px;
|
|
3449
|
+
border-radius: 4px;
|
|
3450
|
+
cursor: pointer;
|
|
3451
|
+
user-select: none;
|
|
3452
|
+
transition: all var(--transition-fast);
|
|
3453
|
+
border: 1px solid transparent;
|
|
3454
|
+
}
|
|
3455
|
+
.claude-session-id-badge:hover {
|
|
3456
|
+
color: var(--accent);
|
|
3457
|
+
background: rgba(197, 101, 61, 0.1);
|
|
3458
|
+
border-color: rgba(197, 101, 61, 0.2);
|
|
3459
|
+
}
|
|
3460
|
+
.claude-session-id-badge:active {
|
|
3461
|
+
transform: scale(0.95);
|
|
3462
|
+
}
|
|
3463
|
+
.claude-session-id-badge.copied {
|
|
3464
|
+
color: var(--success);
|
|
3465
|
+
background: rgba(106, 165, 76, 0.1);
|
|
3466
|
+
}
|
|
3246
3467
|
|
|
3247
3468
|
.input-row { display: flex; gap: 8px; align-items: flex-end; max-width: 100%; }
|
|
3248
3469
|
.input-field { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; max-width: 100%; }
|
|
@@ -3782,14 +4003,14 @@
|
|
|
3782
4003
|
.input-textarea {
|
|
3783
4004
|
--input-max-height: 120px;
|
|
3784
4005
|
font-family: var(--font-mono);
|
|
3785
|
-
font-size: 0.
|
|
4006
|
+
font-size: 0.8125rem;
|
|
3786
4007
|
background: transparent;
|
|
3787
4008
|
border: none;
|
|
3788
4009
|
color: var(--text-primary);
|
|
3789
|
-
padding: 10px
|
|
4010
|
+
padding: 8px 10px 3px;
|
|
3790
4011
|
outline: none;
|
|
3791
4012
|
resize: none;
|
|
3792
|
-
min-height:
|
|
4013
|
+
min-height: 32px;
|
|
3793
4014
|
max-height: var(--input-max-height);
|
|
3794
4015
|
width: 100%;
|
|
3795
4016
|
overflow-y: hidden;
|
|
@@ -3832,26 +4053,25 @@
|
|
|
3832
4053
|
/* Chat mode select pill */
|
|
3833
4054
|
.chat-mode-select {
|
|
3834
4055
|
font-family: var(--font-sans);
|
|
3835
|
-
font-size: 0.
|
|
4056
|
+
font-size: 0.625rem;
|
|
3836
4057
|
font-weight: 500;
|
|
3837
|
-
padding:
|
|
3838
|
-
border-radius:
|
|
4058
|
+
padding: 1px 16px 1px 6px;
|
|
4059
|
+
border-radius: 10px;
|
|
3839
4060
|
border: 1px solid var(--border-subtle);
|
|
3840
4061
|
background: rgba(246, 241, 232, 0.7);
|
|
3841
4062
|
color: var(--text-secondary);
|
|
3842
4063
|
cursor: pointer;
|
|
3843
4064
|
transition: all var(--transition-fast);
|
|
3844
|
-
min-height:
|
|
3845
|
-
max-width:
|
|
4065
|
+
min-height: 22px;
|
|
4066
|
+
max-width: 90px;
|
|
3846
4067
|
overflow: hidden;
|
|
3847
4068
|
text-overflow: ellipsis;
|
|
3848
4069
|
white-space: nowrap;
|
|
3849
4070
|
appearance: none;
|
|
3850
4071
|
-webkit-appearance: none;
|
|
3851
|
-
|
|
3852
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%239a8e82' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
4072
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' fill='none'%3E%3Cpath d='M1 1l3 3 3-3' stroke='%239a8e82' stroke-width='1.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
3853
4073
|
background-repeat: no-repeat;
|
|
3854
|
-
background-position: right
|
|
4074
|
+
background-position: right 4px center;
|
|
3855
4075
|
}
|
|
3856
4076
|
.chat-mode-select:hover {
|
|
3857
4077
|
border-color: var(--accent);
|
|
@@ -3865,9 +4085,9 @@
|
|
|
3865
4085
|
|
|
3866
4086
|
/* Circular action buttons */
|
|
3867
4087
|
.btn-circle {
|
|
3868
|
-
width:
|
|
3869
|
-
height:
|
|
3870
|
-
min-width:
|
|
4088
|
+
width: 28px;
|
|
4089
|
+
height: 28px;
|
|
4090
|
+
min-width: 28px;
|
|
3871
4091
|
border-radius: 50%;
|
|
3872
4092
|
border: none;
|
|
3873
4093
|
display: inline-flex;
|
|
@@ -3881,11 +4101,11 @@
|
|
|
3881
4101
|
.btn-circle-send {
|
|
3882
4102
|
background: linear-gradient(180deg, var(--accent) 0%, #a8522f 100%);
|
|
3883
4103
|
color: white;
|
|
3884
|
-
box-shadow: 0
|
|
4104
|
+
box-shadow: 0 1px 6px rgba(197, 101, 61, 0.25);
|
|
3885
4105
|
}
|
|
3886
4106
|
.btn-circle-send:hover {
|
|
3887
4107
|
transform: scale(1.08);
|
|
3888
|
-
box-shadow: 0
|
|
4108
|
+
box-shadow: 0 3px 10px rgba(197, 101, 61, 0.35);
|
|
3889
4109
|
}
|
|
3890
4110
|
.btn-circle-send:active {
|
|
3891
4111
|
transform: scale(0.95);
|
|
@@ -4023,6 +4243,41 @@
|
|
|
4023
4243
|
linear-gradient(180deg, rgba(255, 246, 235, 0.85), rgba(255, 251, 245, 0.85));
|
|
4024
4244
|
}
|
|
4025
4245
|
|
|
4246
|
+
.boot-loading {
|
|
4247
|
+
min-height: 100vh;
|
|
4248
|
+
display: flex;
|
|
4249
|
+
align-items: center;
|
|
4250
|
+
justify-content: center;
|
|
4251
|
+
padding: 24px;
|
|
4252
|
+
}
|
|
4253
|
+
|
|
4254
|
+
.boot-loading-card {
|
|
4255
|
+
display: flex;
|
|
4256
|
+
align-items: center;
|
|
4257
|
+
gap: 12px;
|
|
4258
|
+
padding: 16px 18px;
|
|
4259
|
+
border: 1px solid var(--border-subtle);
|
|
4260
|
+
border-radius: 16px;
|
|
4261
|
+
background: var(--surface-elevated);
|
|
4262
|
+
box-shadow: var(--shadow-sm);
|
|
4263
|
+
color: var(--text-secondary);
|
|
4264
|
+
}
|
|
4265
|
+
|
|
4266
|
+
.boot-loading-spinner {
|
|
4267
|
+
width: 18px;
|
|
4268
|
+
height: 18px;
|
|
4269
|
+
flex-shrink: 0;
|
|
4270
|
+
border: 2px solid rgba(197, 101, 61, 0.16);
|
|
4271
|
+
border-top-color: var(--accent);
|
|
4272
|
+
border-radius: 999px;
|
|
4273
|
+
animation: loginSpin 0.8s linear infinite;
|
|
4274
|
+
}
|
|
4275
|
+
|
|
4276
|
+
.boot-loading-text {
|
|
4277
|
+
font-size: 0.9375rem;
|
|
4278
|
+
font-weight: 500;
|
|
4279
|
+
}
|
|
4280
|
+
|
|
4026
4281
|
.login-logo { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 8px; }
|
|
4027
4282
|
|
|
4028
4283
|
.login-logo-icon {
|
|
@@ -4036,10 +4291,10 @@
|
|
|
4036
4291
|
|
|
4037
4292
|
.login-logo-text { font-size: 1.6rem; font-weight: 600; letter-spacing: -0.02em; }
|
|
4038
4293
|
.login-subtitle { color: var(--text-muted); font-size: 0.875rem; }
|
|
4039
|
-
.login-body { padding: 24px; }
|
|
4040
|
-
.login-card-loading .login-body { padding-top:
|
|
4041
|
-
.login-hint { font-size: 0.8125rem; color: var(--text-secondary); margin-bottom:
|
|
4042
|
-
.login-muted { margin: 4px 0 0; font-size: 0.75rem; color: var(--text-muted); line-height: 1.
|
|
4294
|
+
.login-body { padding: 22px 24px 24px; }
|
|
4295
|
+
.login-card-loading .login-body { padding-top: 18px; padding-bottom: 24px; }
|
|
4296
|
+
.login-hint { font-size: 0.8125rem; color: var(--text-secondary); margin-bottom: 16px; line-height: 1.5; }
|
|
4297
|
+
.login-muted { margin: 4px 0 0; font-size: 0.75rem; color: var(--text-muted); line-height: 1.45; }
|
|
4043
4298
|
.login-status {
|
|
4044
4299
|
display: flex;
|
|
4045
4300
|
align-items: flex-start;
|
|
@@ -4056,16 +4311,6 @@
|
|
|
4056
4311
|
border-radius: 999px;
|
|
4057
4312
|
animation: loginSpin 0.8s linear infinite;
|
|
4058
4313
|
}
|
|
4059
|
-
.login-tip {
|
|
4060
|
-
font-size: 0.75rem;
|
|
4061
|
-
color: var(--warning);
|
|
4062
|
-
background: rgba(255, 244, 230, 0.92);
|
|
4063
|
-
border: 1px solid rgba(169, 106, 47, 0.18);
|
|
4064
|
-
border-radius: var(--radius-md);
|
|
4065
|
-
padding: 10px 12px;
|
|
4066
|
-
margin-bottom: 18px;
|
|
4067
|
-
line-height: 1.55;
|
|
4068
|
-
}
|
|
4069
4314
|
.password-field {
|
|
4070
4315
|
position: relative;
|
|
4071
4316
|
display: flex;
|
|
@@ -4125,56 +4370,55 @@
|
|
|
4125
4370
|
line-height: 1.5;
|
|
4126
4371
|
}
|
|
4127
4372
|
.session-modal .modal-body {
|
|
4128
|
-
padding-top:
|
|
4373
|
+
padding-top: 16px;
|
|
4129
4374
|
}
|
|
4130
4375
|
.session-modal .field:last-of-type {
|
|
4131
|
-
margin-bottom:
|
|
4376
|
+
margin-bottom: 14px;
|
|
4132
4377
|
}
|
|
4133
4378
|
.mode-cards {
|
|
4134
4379
|
display: flex;
|
|
4135
4380
|
flex-wrap: wrap;
|
|
4136
|
-
gap:
|
|
4137
|
-
justify-content: center;
|
|
4381
|
+
gap: 6px;
|
|
4138
4382
|
}
|
|
4139
4383
|
.mode-card {
|
|
4140
|
-
flex:
|
|
4384
|
+
flex: 1 1 0;
|
|
4385
|
+
min-width: 0;
|
|
4141
4386
|
display: flex;
|
|
4142
4387
|
flex-direction: column;
|
|
4143
4388
|
align-items: center;
|
|
4144
|
-
gap:
|
|
4145
|
-
padding:
|
|
4389
|
+
gap: 1px;
|
|
4390
|
+
padding: 8px 4px;
|
|
4146
4391
|
border: 1.5px solid rgba(125, 91, 57, 0.15);
|
|
4147
|
-
border-radius:
|
|
4392
|
+
border-radius: 10px;
|
|
4148
4393
|
background: rgba(255, 255, 255, 0.55);
|
|
4149
4394
|
cursor: pointer;
|
|
4150
|
-
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast)
|
|
4395
|
+
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
4151
4396
|
text-align: center;
|
|
4152
4397
|
outline: none;
|
|
4153
4398
|
}
|
|
4154
4399
|
.mode-card:hover {
|
|
4155
4400
|
border-color: rgba(197, 101, 61, 0.35);
|
|
4156
4401
|
background: rgba(255, 255, 255, 0.8);
|
|
4157
|
-
transform: translateY(-1px);
|
|
4158
4402
|
}
|
|
4159
4403
|
.mode-card.active {
|
|
4160
4404
|
border-color: var(--accent);
|
|
4161
4405
|
background: rgba(255, 247, 239, 0.95);
|
|
4162
|
-
box-shadow: 0 0 0
|
|
4406
|
+
box-shadow: 0 0 0 1.5px var(--accent-muted);
|
|
4163
4407
|
}
|
|
4164
4408
|
.mode-card:focus-visible {
|
|
4165
4409
|
border-color: var(--accent);
|
|
4166
|
-
box-shadow: 0 0 0
|
|
4410
|
+
box-shadow: 0 0 0 1.5px var(--accent-muted);
|
|
4167
4411
|
}
|
|
4168
4412
|
.mode-card-label {
|
|
4169
|
-
font-size: 0.
|
|
4413
|
+
font-size: 0.75rem;
|
|
4170
4414
|
font-weight: 600;
|
|
4171
4415
|
color: var(--text-primary);
|
|
4172
4416
|
line-height: 1.3;
|
|
4173
4417
|
}
|
|
4174
4418
|
.mode-card-desc {
|
|
4175
|
-
font-size: 0.
|
|
4419
|
+
font-size: 0.625rem;
|
|
4176
4420
|
color: var(--text-muted);
|
|
4177
|
-
line-height: 1.
|
|
4421
|
+
line-height: 1.3;
|
|
4178
4422
|
}
|
|
4179
4423
|
.mode-card.active .mode-card-label {
|
|
4180
4424
|
color: var(--accent);
|
|
@@ -4256,6 +4500,9 @@
|
|
|
4256
4500
|
.modal {
|
|
4257
4501
|
width: 100%;
|
|
4258
4502
|
max-width: 540px;
|
|
4503
|
+
max-height: 90vh;
|
|
4504
|
+
display: flex;
|
|
4505
|
+
flex-direction: column;
|
|
4259
4506
|
background: rgba(255, 251, 245, 0.98);
|
|
4260
4507
|
border: 1px solid rgba(150, 118, 85, 0.22);
|
|
4261
4508
|
border-radius: 20px;
|
|
@@ -4280,9 +4527,9 @@
|
|
|
4280
4527
|
}
|
|
4281
4528
|
|
|
4282
4529
|
.modal-title { font-size: 1.0625rem; font-weight: 600; color: var(--text-primary); letter-spacing: -0.01em; }
|
|
4283
|
-
.modal-body { padding: 22px; overflow:
|
|
4284
|
-
.modal-body .field { margin-bottom:
|
|
4285
|
-
.modal-body .field:last-of-type { margin-bottom:
|
|
4530
|
+
.modal-body { padding: 22px; overflow-y: auto; flex: 1 1 auto; min-height: 0; }
|
|
4531
|
+
.modal-body .field { margin-bottom: 14px; }
|
|
4532
|
+
.modal-body .field:last-of-type { margin-bottom: 16px; }
|
|
4286
4533
|
.field-hint {
|
|
4287
4534
|
margin-top: 6px;
|
|
4288
4535
|
font-size: 0.75rem;
|
|
@@ -4363,7 +4610,7 @@
|
|
|
4363
4610
|
cursor: pointer;
|
|
4364
4611
|
}
|
|
4365
4612
|
|
|
4366
|
-
.suggestions-wrap { position:
|
|
4613
|
+
.suggestions-wrap { position: relative; }
|
|
4367
4614
|
|
|
4368
4615
|
.suggestions {
|
|
4369
4616
|
position: absolute;
|
|
@@ -4393,6 +4640,36 @@
|
|
|
4393
4640
|
.suggestion-item:hover { background: rgba(232, 197, 174, 0.34); }
|
|
4394
4641
|
.suggestion-item small { display: block; font-size: 0.6875rem; color: var(--text-muted); margin-top: 2px; }
|
|
4395
4642
|
|
|
4643
|
+
.recent-paths-bubbles {
|
|
4644
|
+
display: flex;
|
|
4645
|
+
flex-wrap: wrap;
|
|
4646
|
+
gap: 5px;
|
|
4647
|
+
margin-top: 6px;
|
|
4648
|
+
}
|
|
4649
|
+
.recent-paths-bubbles:empty { display: none; }
|
|
4650
|
+
.recent-path-bubble {
|
|
4651
|
+
display: inline-flex;
|
|
4652
|
+
align-items: center;
|
|
4653
|
+
padding: 2px 10px;
|
|
4654
|
+
background: rgba(232, 197, 174, 0.18);
|
|
4655
|
+
border: 1px solid var(--border-default);
|
|
4656
|
+
border-radius: 999px;
|
|
4657
|
+
color: var(--text-secondary);
|
|
4658
|
+
font-family: var(--font-mono);
|
|
4659
|
+
font-size: 0.6875rem;
|
|
4660
|
+
cursor: pointer;
|
|
4661
|
+
transition: background var(--transition-fast), border-color var(--transition-fast);
|
|
4662
|
+
white-space: nowrap;
|
|
4663
|
+
max-width: 180px;
|
|
4664
|
+
overflow: hidden;
|
|
4665
|
+
text-overflow: ellipsis;
|
|
4666
|
+
}
|
|
4667
|
+
.recent-path-bubble:hover {
|
|
4668
|
+
background: rgba(232, 197, 174, 0.4);
|
|
4669
|
+
border-color: var(--border-hover, var(--border-default));
|
|
4670
|
+
color: var(--text-primary);
|
|
4671
|
+
}
|
|
4672
|
+
|
|
4396
4673
|
.error-message {
|
|
4397
4674
|
font-size: 0.75rem;
|
|
4398
4675
|
color: var(--danger);
|
|
@@ -4508,20 +4785,12 @@
|
|
|
4508
4785
|
/* 平板适配 */
|
|
4509
4786
|
@media (max-width: 768px) {
|
|
4510
4787
|
.app-container {
|
|
4511
|
-
--layout-topbar-height: 50px;
|
|
4512
|
-
--layout-sidebar-offset: var(--layout-topbar-height);
|
|
4513
4788
|
--layout-main-file-panel-width: 0px;
|
|
4514
4789
|
}
|
|
4515
4790
|
|
|
4516
|
-
.topbar {
|
|
4517
|
-
padding: 6px 12px;
|
|
4518
|
-
min-height: var(--layout-topbar-height);
|
|
4519
|
-
gap: 8px;
|
|
4520
|
-
}
|
|
4521
|
-
.topbar-center { display: none; }
|
|
4522
4791
|
.sidebar {
|
|
4523
4792
|
width: min(300px, calc(100vw - 20px));
|
|
4524
|
-
top:
|
|
4793
|
+
top: 0;
|
|
4525
4794
|
}
|
|
4526
4795
|
.terminal-container { margin: 0 12px 12px; min-height: 0; }
|
|
4527
4796
|
.btn { min-height: 40px; }
|
|
@@ -4535,8 +4804,8 @@
|
|
|
4535
4804
|
.thinking-content { font-size: 0.8125rem; }
|
|
4536
4805
|
.tool-picker { grid-template-columns: 1fr; }
|
|
4537
4806
|
/* 平板触摸优化 - 44px触摸区域 */
|
|
4538
|
-
.session-item { min-height:
|
|
4539
|
-
.session-action-btn { width:
|
|
4807
|
+
.session-item { min-height: 48px; padding: 10px 12px; }
|
|
4808
|
+
.session-action-btn { width: 32px; height: 32px; min-width: 32px; min-height: 32px; }
|
|
4540
4809
|
.tree-item { min-height: 44px; padding: 8px 12px; }
|
|
4541
4810
|
.folder-picker-item { min-height: 44px; }
|
|
4542
4811
|
}
|
|
@@ -4555,8 +4824,6 @@
|
|
|
4555
4824
|
}
|
|
4556
4825
|
|
|
4557
4826
|
.app-container {
|
|
4558
|
-
--layout-topbar-height: 40px;
|
|
4559
|
-
--layout-sidebar-offset: var(--layout-topbar-height);
|
|
4560
4827
|
--layout-main-file-panel-width: 0px;
|
|
4561
4828
|
}
|
|
4562
4829
|
|
|
@@ -4576,58 +4843,17 @@
|
|
|
4576
4843
|
overflow: hidden;
|
|
4577
4844
|
}
|
|
4578
4845
|
|
|
4579
|
-
/*
|
|
4580
|
-
.
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
gap: 4px;
|
|
4586
|
-
min-height: var(--layout-topbar-height);
|
|
4587
|
-
padding: 4px 8px;
|
|
4588
|
-
padding-top: max(4px, env(safe-area-inset-top, 0px));
|
|
4589
|
-
}
|
|
4590
|
-
|
|
4591
|
-
.topbar-left { display: flex; gap: 4px; }
|
|
4592
|
-
.topbar-center { display: none; }
|
|
4593
|
-
.topbar-right {
|
|
4594
|
-
display: flex;
|
|
4595
|
-
gap: 4px;
|
|
4596
|
-
align-items: center;
|
|
4597
|
-
}
|
|
4598
|
-
|
|
4599
|
-
.topbar-logo-icon { width: 22px; height: 22px; font-size: 10px; border-radius: 6px; }
|
|
4600
|
-
|
|
4601
|
-
/* 移动端按钮 - 紧凑触摸区域 */
|
|
4602
|
-
.topbar .btn-sm,
|
|
4603
|
-
.topbar .topbar-btn {
|
|
4604
|
-
height: 36px;
|
|
4605
|
-
min-height: 36px;
|
|
4606
|
-
min-width: 36px;
|
|
4607
|
-
padding: 0 8px;
|
|
4608
|
-
font-size: 0.6875rem;
|
|
4846
|
+
/* 移动端浮动按钮 */
|
|
4847
|
+
.floating-sidebar-toggle {
|
|
4848
|
+
width: 30px;
|
|
4849
|
+
height: 30px;
|
|
4850
|
+
top: max(8px, env(safe-area-inset-top, 8px));
|
|
4851
|
+
left: 8px;
|
|
4609
4852
|
border-radius: 6px;
|
|
4610
4853
|
}
|
|
4854
|
+
.floating-sidebar-toggle .hamburger-icon { width: 13px; height: 9px; }
|
|
4611
4855
|
|
|
4612
|
-
|
|
4613
|
-
.topbar #pwa-install-button {
|
|
4614
|
-
color: var(--accent);
|
|
4615
|
-
}
|
|
4616
|
-
.topbar #pwa-install-button svg {
|
|
4617
|
-
width: 14px;
|
|
4618
|
-
height: 14px;
|
|
4619
|
-
}
|
|
4620
|
-
.topbar .btn-icon,
|
|
4621
|
-
.topbar .topbar-btn.square {
|
|
4622
|
-
width: 36px;
|
|
4623
|
-
height: 36px;
|
|
4624
|
-
min-width: 36px;
|
|
4625
|
-
min-height: 36px;
|
|
4626
|
-
padding: 0;
|
|
4627
|
-
border-radius: 6px;
|
|
4628
|
-
}
|
|
4629
|
-
.sidebar-toggle-btn { width: 36px; height: 36px; min-width: 36px; min-height: 36px; border-radius: 6px; }
|
|
4630
|
-
.hamburger-icon { width: 14px; height: 10px; }
|
|
4856
|
+
.sidebar { top: 0; }
|
|
4631
4857
|
|
|
4632
4858
|
/* 移动端终端顶栏 - 紧凑 */
|
|
4633
4859
|
.terminal-header { padding: 5px 8px; min-height: 32px; }
|
|
@@ -4687,7 +4913,7 @@
|
|
|
4687
4913
|
}
|
|
4688
4914
|
|
|
4689
4915
|
.sidebar {
|
|
4690
|
-
top:
|
|
4916
|
+
top: 0;
|
|
4691
4917
|
width: min(260px, calc(100vw - 12px));
|
|
4692
4918
|
max-height: none;
|
|
4693
4919
|
border-bottom: none;
|
|
@@ -4742,8 +4968,8 @@
|
|
|
4742
4968
|
/* 移动端输入面板 - 紧凑 */
|
|
4743
4969
|
.input-panel {
|
|
4744
4970
|
z-index: 30;
|
|
4745
|
-
padding: 6px
|
|
4746
|
-
padding-bottom: calc(
|
|
4971
|
+
padding: 4px 6px;
|
|
4972
|
+
padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px) + var(--keyboard-offset, 0px));
|
|
4747
4973
|
flex: 0 0 auto;
|
|
4748
4974
|
margin-top: auto;
|
|
4749
4975
|
background: linear-gradient(180deg, rgba(246, 241, 232, 0) 0%, rgba(246, 241, 232, 0.82) 20%, rgba(246, 241, 232, 0.94) 100%);
|
|
@@ -4751,33 +4977,33 @@
|
|
|
4751
4977
|
}
|
|
4752
4978
|
|
|
4753
4979
|
.input-textarea {
|
|
4754
|
-
padding-bottom:
|
|
4980
|
+
padding-bottom: 4px;
|
|
4755
4981
|
}
|
|
4756
4982
|
|
|
4757
4983
|
.input-session-info-bar {
|
|
4758
|
-
padding
|
|
4984
|
+
padding: 2px 6px;
|
|
4985
|
+
padding-bottom: calc(3px + env(safe-area-inset-bottom, 0px));
|
|
4986
|
+
font-size: 0.625rem;
|
|
4759
4987
|
}
|
|
4760
4988
|
|
|
4761
4989
|
.input-composer {
|
|
4762
|
-
border-radius:
|
|
4990
|
+
border-radius: 10px;
|
|
4763
4991
|
}
|
|
4764
4992
|
|
|
4765
4993
|
.input-composer-bar {
|
|
4766
|
-
padding:
|
|
4767
|
-
gap:
|
|
4994
|
+
padding: 1px 3px 2px 5px;
|
|
4995
|
+
gap: 3px;
|
|
4768
4996
|
}
|
|
4769
4997
|
|
|
4770
4998
|
.input-composer-left { gap: 3px; }
|
|
4771
|
-
.input-composer-right { gap:
|
|
4999
|
+
.input-composer-right { gap: 3px; }
|
|
4772
5000
|
|
|
4773
5001
|
/* 移动端会话信息栏 */
|
|
4774
5002
|
.input-session-info-bar {
|
|
4775
|
-
padding: 4px 8px;
|
|
4776
|
-
font-size: 0.6875rem;
|
|
4777
5003
|
flex-wrap: wrap;
|
|
4778
5004
|
}
|
|
4779
5005
|
.session-cwd-display {
|
|
4780
|
-
max-width:
|
|
5006
|
+
max-width: 100px;
|
|
4781
5007
|
}
|
|
4782
5008
|
|
|
4783
5009
|
.input-row { flex-direction: column; align-items: stretch; gap: 6px; max-width: 100%; }
|
|
@@ -4808,13 +5034,13 @@
|
|
|
4808
5034
|
}
|
|
4809
5035
|
|
|
4810
5036
|
.btn-circle {
|
|
4811
|
-
width:
|
|
4812
|
-
height:
|
|
5037
|
+
width: 26px;
|
|
5038
|
+
height: 26px;
|
|
4813
5039
|
border-radius: 50%;
|
|
4814
5040
|
}
|
|
4815
5041
|
.btn-circle-send svg, .btn-circle-stop svg {
|
|
4816
|
-
width:
|
|
4817
|
-
height:
|
|
5042
|
+
width: 12px;
|
|
5043
|
+
height: 12px;
|
|
4818
5044
|
}
|
|
4819
5045
|
|
|
4820
5046
|
/* 防止iOS自动缩放 */
|
|
@@ -4824,48 +5050,79 @@
|
|
|
4824
5050
|
}
|
|
4825
5051
|
|
|
4826
5052
|
.input-textarea {
|
|
4827
|
-
min-height:
|
|
4828
|
-
padding: 8px;
|
|
5053
|
+
min-height: 32px;
|
|
5054
|
+
padding: 6px 8px 3px;
|
|
4829
5055
|
font-size: 16px;
|
|
4830
5056
|
line-height: 1.35;
|
|
4831
5057
|
}
|
|
4832
5058
|
|
|
4833
5059
|
.chat-mode-select {
|
|
4834
|
-
max-width:
|
|
5060
|
+
max-width: 65px;
|
|
4835
5061
|
font-size: 0.5625rem;
|
|
4836
|
-
height:
|
|
4837
|
-
min-height:
|
|
4838
|
-
padding: 0 4px;
|
|
5062
|
+
height: 22px;
|
|
5063
|
+
min-height: 22px;
|
|
5064
|
+
padding: 0 14px 0 4px;
|
|
4839
5065
|
border-radius: 5px;
|
|
4840
5066
|
}
|
|
4841
5067
|
.input-hint {
|
|
4842
5068
|
display: none;
|
|
4843
5069
|
}
|
|
4844
5070
|
|
|
4845
|
-
/*
|
|
4846
|
-
.
|
|
4847
|
-
|
|
4848
|
-
height: 28px;
|
|
4849
|
-
padding: 0;
|
|
4850
|
-
border-radius: 5px;
|
|
5071
|
+
/* 移动端内联快捷键 - 折叠为左右滑动条 */
|
|
5072
|
+
.inline-shortcuts-inline {
|
|
5073
|
+
display: none;
|
|
4851
5074
|
}
|
|
4852
|
-
.
|
|
4853
|
-
|
|
4854
|
-
|
|
5075
|
+
.inline-shortcuts-wrap {
|
|
5076
|
+
flex-shrink: 1;
|
|
5077
|
+
min-width: 0;
|
|
5078
|
+
overflow: hidden;
|
|
4855
5079
|
}
|
|
4856
|
-
.
|
|
4857
|
-
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
5080
|
+
.shortcuts-toggle {
|
|
5081
|
+
display: inline-flex;
|
|
5082
|
+
align-items: center;
|
|
5083
|
+
justify-content: center;
|
|
5084
|
+
width: 22px;
|
|
5085
|
+
height: 22px;
|
|
5086
|
+
border: none;
|
|
5087
|
+
border-radius: 50%;
|
|
5088
|
+
background: transparent;
|
|
5089
|
+
color: var(--text-muted);
|
|
5090
|
+
font-size: 1rem;
|
|
5091
|
+
font-weight: 700;
|
|
5092
|
+
cursor: pointer;
|
|
5093
|
+
flex-shrink: 0;
|
|
5094
|
+
transition: all 0.15s ease;
|
|
5095
|
+
-webkit-tap-highlight-color: transparent;
|
|
5096
|
+
line-height: 1;
|
|
4863
5097
|
}
|
|
4864
|
-
.
|
|
4865
|
-
|
|
4866
|
-
|
|
4867
|
-
|
|
4868
|
-
|
|
5098
|
+
.shortcuts-toggle.active {
|
|
5099
|
+
color: var(--accent);
|
|
5100
|
+
}
|
|
5101
|
+
.inline-shortcuts-strip {
|
|
5102
|
+
display: none;
|
|
5103
|
+
overflow-x: auto;
|
|
5104
|
+
-webkit-overflow-scrolling: touch;
|
|
5105
|
+
scrollbar-width: none;
|
|
5106
|
+
align-items: center;
|
|
5107
|
+
gap: 3px;
|
|
5108
|
+
flex: 1;
|
|
5109
|
+
min-width: 0;
|
|
5110
|
+
}
|
|
5111
|
+
.inline-shortcuts-strip::-webkit-scrollbar {
|
|
5112
|
+
display: none;
|
|
5113
|
+
}
|
|
5114
|
+
.inline-shortcuts-wrap.expanded .inline-shortcuts-strip {
|
|
5115
|
+
display: flex;
|
|
5116
|
+
}
|
|
5117
|
+
.inline-shortcuts-strip .shortcut-key {
|
|
5118
|
+
height: 22px;
|
|
5119
|
+
min-width: 22px;
|
|
5120
|
+
font-size: 0.5625rem;
|
|
5121
|
+
padding: 0 4px;
|
|
5122
|
+
flex-shrink: 0;
|
|
5123
|
+
}
|
|
5124
|
+
.inline-shortcuts-strip .shortcut-key.shortcut-dir {
|
|
5125
|
+
min-width: 20px;
|
|
4869
5126
|
}
|
|
4870
5127
|
|
|
4871
5128
|
/* 小键盘 FAB */
|
|
@@ -5045,10 +5302,6 @@
|
|
|
5045
5302
|
/* iPhone 14/15 等标准屏幕 (390px - 420px) - 使用基础移动端样式,略微调整 */
|
|
5046
5303
|
@media (min-width: 391px) and (max-width: 420px) {
|
|
5047
5304
|
/* 继承 max-width: 640px 的样式,此处仅做微调 */
|
|
5048
|
-
.topbar {
|
|
5049
|
-
padding: 4px 10px;
|
|
5050
|
-
min-height: 40px;
|
|
5051
|
-
}
|
|
5052
5305
|
|
|
5053
5306
|
.terminal-container {
|
|
5054
5307
|
margin: 0 6px 6px;
|
|
@@ -5064,37 +5317,13 @@
|
|
|
5064
5317
|
/* iPhone SE 等小屏幕 (<= 390px) */
|
|
5065
5318
|
@media (max-width: 390px) {
|
|
5066
5319
|
/* 继承 max-width: 640px 的样式,此处仅做小屏微调 */
|
|
5067
|
-
.
|
|
5068
|
-
|
|
5069
|
-
|
|
5320
|
+
.floating-sidebar-toggle {
|
|
5321
|
+
width: 26px;
|
|
5322
|
+
height: 26px;
|
|
5323
|
+
top: max(6px, env(safe-area-inset-top, 6px));
|
|
5324
|
+
left: 6px;
|
|
5070
5325
|
}
|
|
5071
|
-
|
|
5072
|
-
.topbar {
|
|
5073
|
-
padding: 3px 6px;
|
|
5074
|
-
min-height: var(--layout-topbar-height);
|
|
5075
|
-
gap: 3px;
|
|
5076
|
-
}
|
|
5077
|
-
|
|
5078
|
-
.topbar-logo-icon { width: 20px; height: 20px; font-size: 9px; border-radius: 5px; }
|
|
5079
|
-
|
|
5080
|
-
.topbar .btn-sm,
|
|
5081
|
-
.topbar .topbar-btn {
|
|
5082
|
-
height: 32px;
|
|
5083
|
-
min-height: 32px;
|
|
5084
|
-
min-width: 32px;
|
|
5085
|
-
padding: 0 6px;
|
|
5086
|
-
font-size: 0.625rem;
|
|
5087
|
-
border-radius: 5px;
|
|
5088
|
-
}
|
|
5089
|
-
.topbar .btn-icon,
|
|
5090
|
-
.topbar .topbar-btn.square {
|
|
5091
|
-
width: 32px;
|
|
5092
|
-
height: 32px;
|
|
5093
|
-
min-width: 32px;
|
|
5094
|
-
min-height: 32px;
|
|
5095
|
-
border-radius: 5px;
|
|
5096
|
-
}
|
|
5097
|
-
.sidebar-toggle-btn { width: 32px; height: 32px; min-width: 32px; min-height: 32px; }
|
|
5326
|
+
.floating-sidebar-toggle .hamburger-icon { width: 11px; height: 8px; }
|
|
5098
5327
|
|
|
5099
5328
|
.terminal-header { padding: 4px 6px; min-height: 28px; }
|
|
5100
5329
|
.terminal-title-text { font-size: 0.6875rem; }
|
|
@@ -5113,10 +5342,10 @@
|
|
|
5113
5342
|
padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px));
|
|
5114
5343
|
}
|
|
5115
5344
|
|
|
5116
|
-
.input-composer { border-radius:
|
|
5117
|
-
.input-textarea { min-height:
|
|
5345
|
+
.input-composer { border-radius: 8px; }
|
|
5346
|
+
.input-textarea { min-height: 28px; padding: 5px 6px 2px; font-size: 15px; }
|
|
5118
5347
|
|
|
5119
|
-
.btn-circle { width:
|
|
5348
|
+
.btn-circle { width: 24px; height: 24px; min-width: 24px; }
|
|
5120
5349
|
|
|
5121
5350
|
.session-item {
|
|
5122
5351
|
padding: 6px 8px;
|
|
@@ -5124,7 +5353,7 @@
|
|
|
5124
5353
|
}
|
|
5125
5354
|
.session-action-btn { width: 28px; height: 28px; min-width: 28px; min-height: 28px; }
|
|
5126
5355
|
|
|
5127
|
-
.sidebar { top:
|
|
5356
|
+
.sidebar { top: 0; width: min(240px, calc(100vw - 10px)); }
|
|
5128
5357
|
|
|
5129
5358
|
.modal { max-height: 80vh; }
|
|
5130
5359
|
.modal-header { padding: 8px 10px; min-height: 36px; }
|
|
@@ -5136,26 +5365,16 @@
|
|
|
5136
5365
|
|
|
5137
5366
|
/* iPad Mini 等平板 (641px - 768px) */
|
|
5138
5367
|
@media (min-width: 641px) and (max-width: 768px) {
|
|
5139
|
-
.app-container {
|
|
5140
|
-
--layout-topbar-height: 52px;
|
|
5141
|
-
--layout-sidebar-offset: var(--layout-topbar-height);
|
|
5142
|
-
}
|
|
5143
|
-
|
|
5144
|
-
.topbar {
|
|
5145
|
-
min-height: var(--layout-topbar-height);
|
|
5146
|
-
padding: 8px 14px;
|
|
5147
|
-
}
|
|
5148
|
-
|
|
5149
5368
|
.sidebar {
|
|
5150
|
-
top:
|
|
5369
|
+
top: 0;
|
|
5151
5370
|
width: min(320px, calc(100vw - 40px));
|
|
5152
5371
|
}
|
|
5153
5372
|
|
|
5154
5373
|
.session-item {
|
|
5155
|
-
min-height:
|
|
5156
|
-
padding: 12px;
|
|
5374
|
+
min-height: 52px;
|
|
5375
|
+
padding: 11px 12px;
|
|
5157
5376
|
}
|
|
5158
|
-
.session-action-btn { width:
|
|
5377
|
+
.session-action-btn { width: 34px; height: 34px; min-width: 34px; min-height: 34px; }
|
|
5159
5378
|
|
|
5160
5379
|
.btn { min-height: 42px; }
|
|
5161
5380
|
.btn-sm { min-height: 36px; }
|
|
@@ -5166,20 +5385,14 @@
|
|
|
5166
5385
|
|
|
5167
5386
|
/* 横屏模式优化 */
|
|
5168
5387
|
@media (max-height: 420px) and (orientation: landscape) {
|
|
5169
|
-
.
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
.topbar {
|
|
5175
|
-
min-height: var(--layout-topbar-height);
|
|
5176
|
-
padding: 6px 10px;
|
|
5388
|
+
.floating-sidebar-toggle {
|
|
5389
|
+
width: 28px;
|
|
5390
|
+
height: 28px;
|
|
5391
|
+
top: 6px;
|
|
5392
|
+
left: 6px;
|
|
5177
5393
|
}
|
|
5178
5394
|
|
|
5179
|
-
.sidebar { top:
|
|
5180
|
-
|
|
5181
|
-
.topbar-logo-icon { width: 20px; height: 20px; font-size: 9px; }
|
|
5182
|
-
.topbar-new-btn { height: 30px; padding: 0 12px; font-size: 0.72rem; }
|
|
5395
|
+
.sidebar { top: 0; }
|
|
5183
5396
|
|
|
5184
5397
|
.terminal-container {
|
|
5185
5398
|
min-height: 55vh;
|