@co0ontty/wand 1.18.1 → 1.20.4
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/dist/cli.js +72 -5
- package/dist/ensure-node-pty-helper.d.ts +1 -0
- package/dist/ensure-node-pty-helper.js +51 -0
- package/dist/git-quick-commit.d.ts +18 -0
- package/dist/git-quick-commit.js +373 -0
- package/dist/process-manager.d.ts +6 -9
- package/dist/process-manager.js +26 -195
- package/dist/prompt-optimizer.d.ts +5 -0
- package/dist/prompt-optimizer.js +72 -0
- package/dist/pty-text-utils.d.ts +1 -3
- package/dist/pty-text-utils.js +1 -3
- package/dist/server-session-routes.d.ts +2 -2
- package/dist/server-session-routes.js +79 -13
- package/dist/server.d.ts +19 -1
- package/dist/server.js +90 -5
- package/dist/storage.js +4 -8
- package/dist/structured-session-manager.d.ts +6 -1
- package/dist/structured-session-manager.js +156 -13
- package/dist/tui/index.d.ts +24 -0
- package/dist/tui/index.js +138 -0
- package/dist/tui/layout.d.ts +25 -0
- package/dist/tui/layout.js +198 -0
- package/dist/tui/log-bus.d.ts +23 -0
- package/dist/tui/log-bus.js +111 -0
- package/dist/tui/relative-time.d.ts +4 -0
- package/dist/tui/relative-time.js +27 -0
- package/dist/tui/session-formatter.d.ts +17 -0
- package/dist/tui/session-formatter.js +111 -0
- package/dist/types.d.ts +42 -14
- package/dist/web-ui/content/scripts.js +1188 -209
- package/dist/web-ui/content/styles.css +536 -19
- package/dist/web-ui/content/vendor/wterm/wterm.bundle.js +1 -1
- package/package.json +3 -1
|
@@ -188,6 +188,10 @@
|
|
|
188
188
|
min-height: 100dvh;
|
|
189
189
|
height: 100vh;
|
|
190
190
|
height: 100dvh;
|
|
191
|
+
/* 软键盘弹起时由 JS 注入 --app-viewport-height = visualViewport.height,
|
|
192
|
+
整体 flex column 自动收缩,让底部 input-panel 上移贴键盘上沿;
|
|
193
|
+
没注入时退回 100dvh 行为。 */
|
|
194
|
+
height: var(--app-viewport-height, 100dvh);
|
|
191
195
|
line-height: var(--line-height-base);
|
|
192
196
|
overflow: hidden;
|
|
193
197
|
}
|
|
@@ -236,6 +240,8 @@
|
|
|
236
240
|
min-height: 100dvh;
|
|
237
241
|
height: 100vh;
|
|
238
242
|
height: 100dvh;
|
|
243
|
+
/* 与 body 同步:键盘弹起时跟随可见视口收缩。 */
|
|
244
|
+
height: var(--app-viewport-height, 100dvh);
|
|
239
245
|
overflow: hidden;
|
|
240
246
|
}
|
|
241
247
|
|
|
@@ -1054,16 +1060,16 @@
|
|
|
1054
1060
|
}
|
|
1055
1061
|
.claude-history-item:hover {
|
|
1056
1062
|
opacity: 1;
|
|
1057
|
-
background: rgba(
|
|
1063
|
+
background: rgba(255, 253, 250, 0.96);
|
|
1058
1064
|
}
|
|
1059
1065
|
|
|
1060
1066
|
/* ===== 会话卡片项 ===== */
|
|
1061
1067
|
.session-item {
|
|
1062
1068
|
width: 100%;
|
|
1063
1069
|
text-align: left;
|
|
1064
|
-
background:
|
|
1065
|
-
border: 1px solid
|
|
1066
|
-
border-radius:
|
|
1070
|
+
background: rgba(255, 252, 247, 0.92);
|
|
1071
|
+
border: 1px solid var(--border-subtle);
|
|
1072
|
+
border-radius: 10px;
|
|
1067
1073
|
color: var(--text-primary);
|
|
1068
1074
|
padding: 10px 12px;
|
|
1069
1075
|
cursor: pointer;
|
|
@@ -1097,6 +1103,7 @@
|
|
|
1097
1103
|
position: relative;
|
|
1098
1104
|
z-index: 2;
|
|
1099
1105
|
background: inherit;
|
|
1106
|
+
border-radius: inherit;
|
|
1100
1107
|
transition: transform 0.3s var(--ease-out-expo);
|
|
1101
1108
|
will-change: transform;
|
|
1102
1109
|
}
|
|
@@ -1148,7 +1155,7 @@
|
|
|
1148
1155
|
|
|
1149
1156
|
.session-item.selected {
|
|
1150
1157
|
border-color: rgba(197, 101, 61, 0.35);
|
|
1151
|
-
background: rgba(
|
|
1158
|
+
background: rgba(255, 245, 238, 0.96);
|
|
1152
1159
|
}
|
|
1153
1160
|
|
|
1154
1161
|
.session-item.selected::before {
|
|
@@ -1803,9 +1810,9 @@
|
|
|
1803
1810
|
|
|
1804
1811
|
/* ===== 会话卡片交互效果 ===== */
|
|
1805
1812
|
.session-item:hover {
|
|
1806
|
-
background: rgba(
|
|
1807
|
-
border-color: var(--border-
|
|
1808
|
-
box-shadow: 0
|
|
1813
|
+
background: rgba(255, 253, 250, 0.96);
|
|
1814
|
+
border-color: var(--border-default);
|
|
1815
|
+
box-shadow: 0 2px 8px rgba(89, 58, 32, 0.07);
|
|
1809
1816
|
}
|
|
1810
1817
|
|
|
1811
1818
|
.session-item:hover::before {
|
|
@@ -1814,9 +1821,9 @@
|
|
|
1814
1821
|
}
|
|
1815
1822
|
|
|
1816
1823
|
.session-item.active {
|
|
1817
|
-
background: rgba(
|
|
1818
|
-
border-color: rgba(197, 101, 61, 0.
|
|
1819
|
-
box-shadow: 0
|
|
1824
|
+
background: rgba(255, 247, 240, 0.96);
|
|
1825
|
+
border-color: rgba(197, 101, 61, 0.3);
|
|
1826
|
+
box-shadow: 0 2px 8px rgba(197, 101, 61, 0.1);
|
|
1820
1827
|
}
|
|
1821
1828
|
|
|
1822
1829
|
.session-item.active::before {
|
|
@@ -1884,7 +1891,7 @@
|
|
|
1884
1891
|
|
|
1885
1892
|
.session-status.running .session-status-dot {
|
|
1886
1893
|
background: var(--success);
|
|
1887
|
-
box-shadow: 0 0
|
|
1894
|
+
box-shadow: 0 0 5px var(--success-glow);
|
|
1888
1895
|
animation: status-pulse 2s ease-in-out infinite;
|
|
1889
1896
|
}
|
|
1890
1897
|
|
|
@@ -2219,15 +2226,92 @@
|
|
|
2219
2226
|
|
|
2220
2227
|
.terminal-info { font-size: 0.625rem; color: var(--text-muted); font-weight: 500; }
|
|
2221
2228
|
|
|
2222
|
-
/* =====
|
|
2229
|
+
/* ===== 主内容区顶部行(三段式) ===== */
|
|
2223
2230
|
.main-header-row {
|
|
2224
2231
|
display: flex;
|
|
2225
2232
|
align-items: center;
|
|
2226
|
-
justify-content: flex-start;
|
|
2227
2233
|
padding: 6px 10px;
|
|
2228
2234
|
flex-shrink: 0;
|
|
2229
2235
|
min-height: 44px;
|
|
2230
2236
|
gap: 8px;
|
|
2237
|
+
position: relative;
|
|
2238
|
+
}
|
|
2239
|
+
.topbar-left {
|
|
2240
|
+
display: flex;
|
|
2241
|
+
align-items: center;
|
|
2242
|
+
gap: 8px;
|
|
2243
|
+
flex-shrink: 0;
|
|
2244
|
+
}
|
|
2245
|
+
.topbar-center {
|
|
2246
|
+
flex: 1;
|
|
2247
|
+
min-width: 0;
|
|
2248
|
+
display: flex;
|
|
2249
|
+
align-items: center;
|
|
2250
|
+
gap: 8px;
|
|
2251
|
+
overflow: hidden;
|
|
2252
|
+
}
|
|
2253
|
+
.topbar-right {
|
|
2254
|
+
display: flex;
|
|
2255
|
+
align-items: center;
|
|
2256
|
+
gap: 4px;
|
|
2257
|
+
flex-shrink: 0;
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
/* 左段品牌徽标 */
|
|
2261
|
+
.topbar-brand {
|
|
2262
|
+
display: inline-flex;
|
|
2263
|
+
align-items: center;
|
|
2264
|
+
justify-content: center;
|
|
2265
|
+
width: 26px;
|
|
2266
|
+
height: 26px;
|
|
2267
|
+
border-radius: 8px;
|
|
2268
|
+
background: linear-gradient(135deg, var(--accent), var(--accent-active));
|
|
2269
|
+
color: #fff;
|
|
2270
|
+
font-weight: 700;
|
|
2271
|
+
font-size: 0.85rem;
|
|
2272
|
+
letter-spacing: 0.02em;
|
|
2273
|
+
box-shadow: 0 1px 3px rgba(89, 58, 32, 0.18);
|
|
2274
|
+
user-select: none;
|
|
2275
|
+
flex-shrink: 0;
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
/* 中段:会话标题 / cwd / 标语 */
|
|
2279
|
+
.topbar-session-title {
|
|
2280
|
+
font-weight: 600;
|
|
2281
|
+
font-size: 0.85rem;
|
|
2282
|
+
color: var(--text-primary);
|
|
2283
|
+
white-space: nowrap;
|
|
2284
|
+
overflow: hidden;
|
|
2285
|
+
text-overflow: ellipsis;
|
|
2286
|
+
flex-shrink: 0;
|
|
2287
|
+
max-width: 240px;
|
|
2288
|
+
}
|
|
2289
|
+
.topbar-cwd {
|
|
2290
|
+
color: var(--text-muted);
|
|
2291
|
+
font-size: 0.72rem;
|
|
2292
|
+
font-family: var(--font-mono, monospace);
|
|
2293
|
+
white-space: nowrap;
|
|
2294
|
+
overflow: hidden;
|
|
2295
|
+
text-overflow: ellipsis;
|
|
2296
|
+
min-width: 0;
|
|
2297
|
+
flex: 1 1 0;
|
|
2298
|
+
cursor: pointer;
|
|
2299
|
+
padding: 2px 6px;
|
|
2300
|
+
border-radius: 6px;
|
|
2301
|
+
direction: rtl;
|
|
2302
|
+
text-align: left;
|
|
2303
|
+
transition: background var(--transition-fast), color var(--transition-fast);
|
|
2304
|
+
}
|
|
2305
|
+
.topbar-cwd:hover {
|
|
2306
|
+
background: rgba(255, 255, 255, 0.55);
|
|
2307
|
+
color: var(--text-secondary);
|
|
2308
|
+
}
|
|
2309
|
+
.topbar-tagline {
|
|
2310
|
+
color: var(--text-muted);
|
|
2311
|
+
font-size: 0.78rem;
|
|
2312
|
+
white-space: nowrap;
|
|
2313
|
+
overflow: hidden;
|
|
2314
|
+
text-overflow: ellipsis;
|
|
2231
2315
|
}
|
|
2232
2316
|
|
|
2233
2317
|
/* PWA 模式额外留出顶部缓冲,避免与 iPadOS Stage Manager 等系统浮动控件视觉粘连 */
|
|
@@ -2240,7 +2324,65 @@
|
|
|
2240
2324
|
padding-top: 10px;
|
|
2241
2325
|
}
|
|
2242
2326
|
|
|
2243
|
-
/*
|
|
2327
|
+
/* 会话状态徽标(静态) */
|
|
2328
|
+
.session-status-pill {
|
|
2329
|
+
display: inline-flex;
|
|
2330
|
+
align-items: center;
|
|
2331
|
+
gap: 5px;
|
|
2332
|
+
font-size: 0.7rem;
|
|
2333
|
+
font-weight: 500;
|
|
2334
|
+
color: var(--text-secondary);
|
|
2335
|
+
background: var(--bg-elevated);
|
|
2336
|
+
border: 1px solid var(--border-subtle);
|
|
2337
|
+
border-radius: 20px;
|
|
2338
|
+
padding: 2px 9px 2px 7px;
|
|
2339
|
+
flex-shrink: 0;
|
|
2340
|
+
max-width: 140px;
|
|
2341
|
+
white-space: nowrap;
|
|
2342
|
+
overflow: hidden;
|
|
2343
|
+
}
|
|
2344
|
+
.session-status-pill .session-status-dot {
|
|
2345
|
+
width: 6px;
|
|
2346
|
+
height: 6px;
|
|
2347
|
+
border-radius: 50%;
|
|
2348
|
+
background: var(--text-muted);
|
|
2349
|
+
flex-shrink: 0;
|
|
2350
|
+
}
|
|
2351
|
+
.session-status-pill .session-status-text {
|
|
2352
|
+
overflow: hidden;
|
|
2353
|
+
text-overflow: ellipsis;
|
|
2354
|
+
}
|
|
2355
|
+
.session-status-pill.running {
|
|
2356
|
+
background: var(--success-muted);
|
|
2357
|
+
border-color: rgba(79, 122, 88, 0.3);
|
|
2358
|
+
color: var(--success);
|
|
2359
|
+
}
|
|
2360
|
+
.session-status-pill.running .session-status-dot {
|
|
2361
|
+
background: var(--success);
|
|
2362
|
+
animation: task-pulse 1.2s ease-in-out infinite;
|
|
2363
|
+
}
|
|
2364
|
+
.session-status-pill.permission-blocked {
|
|
2365
|
+
background: var(--warning-muted);
|
|
2366
|
+
border-color: rgba(169, 106, 47, 0.35);
|
|
2367
|
+
color: var(--warning);
|
|
2368
|
+
}
|
|
2369
|
+
.session-status-pill.permission-blocked .session-status-dot {
|
|
2370
|
+
background: var(--warning);
|
|
2371
|
+
animation: task-pulse 1.2s ease-in-out infinite;
|
|
2372
|
+
}
|
|
2373
|
+
.session-status-pill.exited,
|
|
2374
|
+
.session-status-pill.stopped {
|
|
2375
|
+
color: var(--text-muted);
|
|
2376
|
+
}
|
|
2377
|
+
.session-status-pill.failed {
|
|
2378
|
+
background: var(--danger-muted);
|
|
2379
|
+
border-color: rgba(178, 79, 69, 0.3);
|
|
2380
|
+
color: var(--danger);
|
|
2381
|
+
}
|
|
2382
|
+
.session-status-pill.failed .session-status-dot { background: var(--danger); }
|
|
2383
|
+
.session-status-pill.archived { opacity: 0.7; }
|
|
2384
|
+
|
|
2385
|
+
/* Current task indicator(动态活动徽标,由 updateTaskDisplay 管理) */
|
|
2244
2386
|
.current-task {
|
|
2245
2387
|
display: flex;
|
|
2246
2388
|
align-items: center;
|
|
@@ -2252,7 +2394,7 @@
|
|
|
2252
2394
|
border-radius: 20px;
|
|
2253
2395
|
padding: 2px 8px 2px 5px;
|
|
2254
2396
|
font-weight: 500;
|
|
2255
|
-
max-width:
|
|
2397
|
+
max-width: 240px;
|
|
2256
2398
|
min-width: 0;
|
|
2257
2399
|
overflow: hidden;
|
|
2258
2400
|
flex-shrink: 1;
|
|
@@ -2274,6 +2416,50 @@
|
|
|
2274
2416
|
50% { opacity: 0.5; transform: scale(0.8); }
|
|
2275
2417
|
}
|
|
2276
2418
|
|
|
2419
|
+
/* 右段更多菜单 */
|
|
2420
|
+
.topbar-more-wrap {
|
|
2421
|
+
position: relative;
|
|
2422
|
+
display: inline-flex;
|
|
2423
|
+
}
|
|
2424
|
+
.topbar-more-menu {
|
|
2425
|
+
position: absolute;
|
|
2426
|
+
top: calc(100% + 6px);
|
|
2427
|
+
right: 0;
|
|
2428
|
+
min-width: 168px;
|
|
2429
|
+
background: var(--bg-elevated);
|
|
2430
|
+
border: 1px solid var(--border-default);
|
|
2431
|
+
border-radius: var(--radius-md);
|
|
2432
|
+
padding: 4px;
|
|
2433
|
+
box-shadow: var(--shadow-lg);
|
|
2434
|
+
z-index: 60;
|
|
2435
|
+
display: flex;
|
|
2436
|
+
flex-direction: column;
|
|
2437
|
+
gap: 1px;
|
|
2438
|
+
}
|
|
2439
|
+
.topbar-more-menu.hidden { display: none; }
|
|
2440
|
+
.topbar-more-item {
|
|
2441
|
+
display: flex;
|
|
2442
|
+
align-items: center;
|
|
2443
|
+
gap: 9px;
|
|
2444
|
+
width: 100%;
|
|
2445
|
+
padding: 8px 12px;
|
|
2446
|
+
border: 0;
|
|
2447
|
+
background: transparent;
|
|
2448
|
+
color: var(--text-primary);
|
|
2449
|
+
font-family: var(--font-sans);
|
|
2450
|
+
font-size: 0.82rem;
|
|
2451
|
+
font-weight: 500;
|
|
2452
|
+
cursor: pointer;
|
|
2453
|
+
border-radius: 8px;
|
|
2454
|
+
text-align: left;
|
|
2455
|
+
transition: background var(--transition-fast), color var(--transition-fast);
|
|
2456
|
+
}
|
|
2457
|
+
.topbar-more-item:hover { background: var(--accent-muted); color: var(--accent); }
|
|
2458
|
+
.topbar-more-item svg { flex-shrink: 0; opacity: 0.85; }
|
|
2459
|
+
.topbar-more-item.topbar-more-item-danger { color: var(--danger); }
|
|
2460
|
+
.topbar-more-item.topbar-more-item-danger:hover { background: var(--danger-muted); color: var(--danger-hover); }
|
|
2461
|
+
.topbar-more-item.hidden { display: none; }
|
|
2462
|
+
|
|
2277
2463
|
/* 桌面端显示所有按钮 */
|
|
2278
2464
|
.terminal-scale-toggle { display: flex; }
|
|
2279
2465
|
.terminal-tool-btn { display: inline-flex; }
|
|
@@ -5539,7 +5725,7 @@
|
|
|
5539
5725
|
background: transparent;
|
|
5540
5726
|
border: none;
|
|
5541
5727
|
color: var(--text-primary);
|
|
5542
|
-
padding: 8px
|
|
5728
|
+
padding: 8px 34px 3px 10px;
|
|
5543
5729
|
outline: none;
|
|
5544
5730
|
resize: none;
|
|
5545
5731
|
min-height: 32px;
|
|
@@ -5667,6 +5853,159 @@
|
|
|
5667
5853
|
transform: scale(0.95);
|
|
5668
5854
|
}
|
|
5669
5855
|
|
|
5856
|
+
/* Prompt optimize button — top-right of the input composer */
|
|
5857
|
+
.prompt-optimize-btn {
|
|
5858
|
+
position: absolute;
|
|
5859
|
+
top: 5px;
|
|
5860
|
+
right: 6px;
|
|
5861
|
+
width: 28px;
|
|
5862
|
+
height: 28px;
|
|
5863
|
+
border-radius: 50%;
|
|
5864
|
+
border: 1px solid rgba(197, 101, 61, 0.22);
|
|
5865
|
+
padding: 0;
|
|
5866
|
+
cursor: pointer;
|
|
5867
|
+
display: inline-flex;
|
|
5868
|
+
align-items: center;
|
|
5869
|
+
justify-content: center;
|
|
5870
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
|
|
5871
|
+
color: var(--accent);
|
|
5872
|
+
z-index: 4;
|
|
5873
|
+
box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
|
|
5874
|
+
transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
|
|
5875
|
+
}
|
|
5876
|
+
.prompt-optimize-btn:hover {
|
|
5877
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.55) 100%);
|
|
5878
|
+
color: var(--accent-hover);
|
|
5879
|
+
transform: scale(1.12);
|
|
5880
|
+
border-color: rgba(197, 101, 61, 0.35);
|
|
5881
|
+
box-shadow: 0 2px 10px rgba(197, 101, 61, 0.22), 0 0 0 3px rgba(197, 101, 61, 0.06);
|
|
5882
|
+
}
|
|
5883
|
+
.prompt-optimize-btn:active {
|
|
5884
|
+
transform: scale(0.92);
|
|
5885
|
+
box-shadow: 0 1px 3px rgba(197, 101, 61, 0.15);
|
|
5886
|
+
}
|
|
5887
|
+
.prompt-optimize-btn:disabled {
|
|
5888
|
+
cursor: not-allowed;
|
|
5889
|
+
opacity: 0.6;
|
|
5890
|
+
}
|
|
5891
|
+
.prompt-optimize-btn:disabled:hover {
|
|
5892
|
+
transform: none;
|
|
5893
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
|
|
5894
|
+
box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
|
|
5895
|
+
border-color: rgba(197, 101, 61, 0.22);
|
|
5896
|
+
}
|
|
5897
|
+
.prompt-optimize-icon {
|
|
5898
|
+
transition: transform 0.25s ease, opacity 0.2s ease;
|
|
5899
|
+
transform-origin: center;
|
|
5900
|
+
filter: drop-shadow(0 0 1px rgba(197, 101, 61, 0.3));
|
|
5901
|
+
}
|
|
5902
|
+
.prompt-optimize-btn:hover .prompt-optimize-icon {
|
|
5903
|
+
animation: prompt-optimize-twinkle 1.4s ease-in-out infinite;
|
|
5904
|
+
filter: drop-shadow(0 0 3px rgba(197, 101, 61, 0.4));
|
|
5905
|
+
}
|
|
5906
|
+
@keyframes prompt-optimize-twinkle {
|
|
5907
|
+
0%, 100% { transform: rotate(0deg) scale(1); }
|
|
5908
|
+
50% { transform: rotate(12deg) scale(1.12); }
|
|
5909
|
+
}
|
|
5910
|
+
.prompt-optimize-spinner {
|
|
5911
|
+
position: absolute;
|
|
5912
|
+
inset: 0;
|
|
5913
|
+
border-radius: 50%;
|
|
5914
|
+
pointer-events: none;
|
|
5915
|
+
opacity: 0;
|
|
5916
|
+
background: conic-gradient(from 0deg, transparent 0deg, var(--accent) 270deg, transparent 360deg);
|
|
5917
|
+
mask: radial-gradient(circle, transparent 10px, black 11px);
|
|
5918
|
+
-webkit-mask: radial-gradient(circle, transparent 10px, black 11px);
|
|
5919
|
+
transition: opacity 0.15s ease;
|
|
5920
|
+
}
|
|
5921
|
+
.prompt-optimize-btn.is-loading {
|
|
5922
|
+
color: var(--accent);
|
|
5923
|
+
background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.5) 100%);
|
|
5924
|
+
border-color: rgba(197, 101, 61, 0.4);
|
|
5925
|
+
box-shadow: 0 2px 12px rgba(197, 101, 61, 0.25), 0 0 0 3px rgba(197, 101, 61, 0.08);
|
|
5926
|
+
}
|
|
5927
|
+
.prompt-optimize-btn.is-loading .prompt-optimize-icon {
|
|
5928
|
+
animation: prompt-optimize-pulse 1.1s ease-in-out infinite;
|
|
5929
|
+
}
|
|
5930
|
+
.prompt-optimize-btn.is-loading .prompt-optimize-spinner {
|
|
5931
|
+
opacity: 1;
|
|
5932
|
+
animation: prompt-optimize-spin 0.9s linear infinite;
|
|
5933
|
+
}
|
|
5934
|
+
@keyframes prompt-optimize-spin {
|
|
5935
|
+
to { transform: rotate(360deg); }
|
|
5936
|
+
}
|
|
5937
|
+
@keyframes prompt-optimize-pulse {
|
|
5938
|
+
0%, 100% { transform: scale(0.88); opacity: 0.8; }
|
|
5939
|
+
50% { transform: scale(1.15); opacity: 1; }
|
|
5940
|
+
}
|
|
5941
|
+
|
|
5942
|
+
/* 优化中的"魔法橡皮擦":mirror 元素叠在 textarea 上,
|
|
5943
|
+
通过 background-clip: text + color: transparent 让渐变只在
|
|
5944
|
+
字符形状内显示,光斑从左到右滚过文字本身。空白处完全透明,
|
|
5945
|
+
所以观感是"几个字本身在被光扫过",而不是整个输入框背景在闪。 */
|
|
5946
|
+
.prompt-optimize-shimmer-overlay {
|
|
5947
|
+
position: absolute;
|
|
5948
|
+
pointer-events: none;
|
|
5949
|
+
overflow: hidden;
|
|
5950
|
+
white-space: pre-wrap;
|
|
5951
|
+
word-wrap: break-word;
|
|
5952
|
+
overflow-wrap: break-word;
|
|
5953
|
+
color: transparent;
|
|
5954
|
+
background-image: linear-gradient(
|
|
5955
|
+
100deg,
|
|
5956
|
+
rgba(140, 90, 55, 0.55) 0%,
|
|
5957
|
+
rgba(214, 123, 82, 0.95) 35%,
|
|
5958
|
+
rgba(255, 240, 210, 1) 50%,
|
|
5959
|
+
rgba(214, 123, 82, 0.95) 65%,
|
|
5960
|
+
rgba(140, 90, 55, 0.55) 100%
|
|
5961
|
+
);
|
|
5962
|
+
background-size: 250% 100%;
|
|
5963
|
+
background-repeat: no-repeat;
|
|
5964
|
+
background-position: 250% 0;
|
|
5965
|
+
-webkit-background-clip: text;
|
|
5966
|
+
background-clip: text;
|
|
5967
|
+
-webkit-text-fill-color: transparent;
|
|
5968
|
+
animation: prompt-optimize-shimmer 1.4s linear infinite;
|
|
5969
|
+
z-index: 2;
|
|
5970
|
+
}
|
|
5971
|
+
@keyframes prompt-optimize-shimmer {
|
|
5972
|
+
from { background-position: 250% 0; }
|
|
5973
|
+
to { background-position: -150% 0; }
|
|
5974
|
+
}
|
|
5975
|
+
/* 优化中保留 textarea 文字原色,让 mirror 在其上扫过;不再整体
|
|
5976
|
+
灰化输入框,避免"整个书窗一起动"的观感。 */
|
|
5977
|
+
.input-textarea.optimize-flash {
|
|
5978
|
+
animation: prompt-optimize-flash 0.85s ease-out;
|
|
5979
|
+
}
|
|
5980
|
+
@keyframes prompt-optimize-flash {
|
|
5981
|
+
0% { background: rgba(197, 101, 61, 0.18); }
|
|
5982
|
+
100% { background: transparent; }
|
|
5983
|
+
}
|
|
5984
|
+
.prompt-optimize-btn.is-shake {
|
|
5985
|
+
animation: prompt-optimize-shake 0.4s ease-out;
|
|
5986
|
+
color: var(--danger);
|
|
5987
|
+
}
|
|
5988
|
+
@keyframes prompt-optimize-shake {
|
|
5989
|
+
0%, 100% { transform: translateX(0); }
|
|
5990
|
+
20% { transform: translateX(-3px); }
|
|
5991
|
+
40% { transform: translateX(3px); }
|
|
5992
|
+
60% { transform: translateX(-2px); }
|
|
5993
|
+
80% { transform: translateX(2px); }
|
|
5994
|
+
}
|
|
5995
|
+
|
|
5996
|
+
@media (max-width: 720px) {
|
|
5997
|
+
.prompt-optimize-btn {
|
|
5998
|
+
width: 26px;
|
|
5999
|
+
height: 26px;
|
|
6000
|
+
top: 3px;
|
|
6001
|
+
right: 4px;
|
|
6002
|
+
}
|
|
6003
|
+
.prompt-optimize-icon {
|
|
6004
|
+
width: 14px;
|
|
6005
|
+
height: 14px;
|
|
6006
|
+
}
|
|
6007
|
+
}
|
|
6008
|
+
|
|
5670
6009
|
.attachment-preview {
|
|
5671
6010
|
display: flex;
|
|
5672
6011
|
gap: 6px;
|
|
@@ -6565,6 +6904,12 @@
|
|
|
6565
6904
|
.current-task { font-size: 0.5625rem; padding: 1px 6px 1px 4px; gap: 3px; }
|
|
6566
6905
|
|
|
6567
6906
|
.main-header-row { padding: 2px 6px; gap: 4px; }
|
|
6907
|
+
.topbar-brand,
|
|
6908
|
+
.topbar-cwd { display: none; }
|
|
6909
|
+
.topbar-session-title { max-width: 140px; font-size: 0.78rem; }
|
|
6910
|
+
.session-status-pill { font-size: 0.625rem; padding: 1px 7px 1px 5px; max-width: 110px; }
|
|
6911
|
+
.session-status-pill .session-status-dot { width: 5px; height: 5px; }
|
|
6912
|
+
.topbar-more-menu { min-width: 156px; }
|
|
6568
6913
|
|
|
6569
6914
|
/* 视图切换按钮 - 紧凑 */
|
|
6570
6915
|
.view-toggle { height: 28px; padding: 2px; gap: 1px; }
|
|
@@ -6744,7 +7089,7 @@
|
|
|
6744
7089
|
|
|
6745
7090
|
.input-textarea {
|
|
6746
7091
|
min-height: 32px;
|
|
6747
|
-
padding: 6px
|
|
7092
|
+
padding: 6px 30px 3px 8px;
|
|
6748
7093
|
font-size: 16px;
|
|
6749
7094
|
line-height: 1.35;
|
|
6750
7095
|
}
|
|
@@ -7070,7 +7415,7 @@
|
|
|
7070
7415
|
}
|
|
7071
7416
|
|
|
7072
7417
|
.input-composer { border-radius: 8px; }
|
|
7073
|
-
.input-textarea { min-height: 28px; padding: 5px
|
|
7418
|
+
.input-textarea { min-height: 28px; padding: 5px 28px 2px 6px; font-size: 16px; }
|
|
7074
7419
|
|
|
7075
7420
|
.btn-circle { width: 28px; height: 28px; min-width: 28px; }
|
|
7076
7421
|
|
|
@@ -10239,4 +10584,176 @@
|
|
|
10239
10584
|
}
|
|
10240
10585
|
}
|
|
10241
10586
|
|
|
10587
|
+
/* ── 顶栏 git 徽章 ── */
|
|
10588
|
+
.topbar-git-slot {
|
|
10589
|
+
display: inline-flex;
|
|
10590
|
+
align-items: center;
|
|
10591
|
+
}
|
|
10592
|
+
.topbar-git-slot:empty {
|
|
10593
|
+
display: none;
|
|
10594
|
+
}
|
|
10595
|
+
.topbar-git-badge {
|
|
10596
|
+
display: inline-flex;
|
|
10597
|
+
align-items: center;
|
|
10598
|
+
gap: 5px;
|
|
10599
|
+
height: 32px;
|
|
10600
|
+
padding: 0 10px;
|
|
10601
|
+
font-family: var(--font-sans);
|
|
10602
|
+
font-size: 0.72rem;
|
|
10603
|
+
font-weight: 500;
|
|
10604
|
+
color: var(--text-secondary);
|
|
10605
|
+
background: transparent;
|
|
10606
|
+
border: 1px solid transparent;
|
|
10607
|
+
border-radius: var(--radius-sm);
|
|
10608
|
+
cursor: pointer;
|
|
10609
|
+
white-space: nowrap;
|
|
10610
|
+
transition: all var(--transition-fast);
|
|
10611
|
+
box-sizing: border-box;
|
|
10612
|
+
line-height: 1;
|
|
10613
|
+
}
|
|
10614
|
+
.topbar-git-badge:hover {
|
|
10615
|
+
background: rgba(255, 255, 255, 0.5);
|
|
10616
|
+
color: var(--text-primary);
|
|
10617
|
+
}
|
|
10618
|
+
.topbar-git-badge:active {
|
|
10619
|
+
transform: scale(0.96);
|
|
10620
|
+
}
|
|
10621
|
+
.topbar-git-icon {
|
|
10622
|
+
flex-shrink: 0;
|
|
10623
|
+
opacity: 0.85;
|
|
10624
|
+
}
|
|
10625
|
+
.topbar-git-branch {
|
|
10626
|
+
font-family: var(--font-mono, monospace);
|
|
10627
|
+
font-weight: 600;
|
|
10628
|
+
max-width: 12em;
|
|
10629
|
+
overflow: hidden;
|
|
10630
|
+
text-overflow: ellipsis;
|
|
10631
|
+
}
|
|
10632
|
+
.topbar-git-count {
|
|
10633
|
+
color: var(--accent);
|
|
10634
|
+
font-weight: 700;
|
|
10635
|
+
font-family: var(--font-mono, monospace);
|
|
10636
|
+
}
|
|
10637
|
+
.topbar-git-clean {
|
|
10638
|
+
color: rgba(60, 160, 90, 0.85);
|
|
10639
|
+
font-weight: 700;
|
|
10640
|
+
font-size: 0.78rem;
|
|
10641
|
+
}
|
|
10642
|
+
|
|
10643
|
+
/* ── 快捷提交模态框 ── */
|
|
10644
|
+
.quick-commit-modal {
|
|
10645
|
+
max-width: 560px;
|
|
10646
|
+
}
|
|
10647
|
+
.quick-commit-modal .modal-body {
|
|
10648
|
+
display: flex;
|
|
10649
|
+
flex-direction: column;
|
|
10650
|
+
gap: 12px;
|
|
10651
|
+
}
|
|
10652
|
+
.qc-files-wrap {
|
|
10653
|
+
max-height: 200px;
|
|
10654
|
+
overflow-y: auto;
|
|
10655
|
+
padding: 8px 10px;
|
|
10656
|
+
border: 1px solid var(--border-color, rgba(0, 0, 0, 0.08));
|
|
10657
|
+
border-radius: 6px;
|
|
10658
|
+
background: rgba(255, 255, 255, 0.45);
|
|
10659
|
+
font-family: var(--font-mono, monospace);
|
|
10660
|
+
font-size: 0.78rem;
|
|
10661
|
+
display: flex;
|
|
10662
|
+
flex-direction: column;
|
|
10663
|
+
gap: 2px;
|
|
10664
|
+
}
|
|
10665
|
+
.qc-empty {
|
|
10666
|
+
color: var(--text-muted);
|
|
10667
|
+
padding: 6px 0;
|
|
10668
|
+
text-align: center;
|
|
10669
|
+
font-style: italic;
|
|
10670
|
+
}
|
|
10671
|
+
.qc-file-row {
|
|
10672
|
+
display: flex;
|
|
10673
|
+
align-items: center;
|
|
10674
|
+
gap: 8px;
|
|
10675
|
+
line-height: 1.5;
|
|
10676
|
+
}
|
|
10677
|
+
.qc-flag {
|
|
10678
|
+
flex-shrink: 0;
|
|
10679
|
+
width: 24px;
|
|
10680
|
+
text-align: center;
|
|
10681
|
+
font-weight: 700;
|
|
10682
|
+
color: var(--text-muted);
|
|
10683
|
+
letter-spacing: 0;
|
|
10684
|
+
}
|
|
10685
|
+
.qc-flag-add { color: rgba(60, 160, 90, 0.95); }
|
|
10686
|
+
.qc-flag-mod { color: rgba(220, 150, 30, 0.95); }
|
|
10687
|
+
.qc-flag-del { color: rgba(200, 70, 70, 0.95); }
|
|
10688
|
+
.qc-flag-ren { color: rgba(110, 130, 200, 0.95); }
|
|
10689
|
+
.qc-flag-untracked { color: rgba(140, 140, 140, 0.95); }
|
|
10690
|
+
.qc-file-path {
|
|
10691
|
+
color: var(--text-secondary);
|
|
10692
|
+
overflow: hidden;
|
|
10693
|
+
text-overflow: ellipsis;
|
|
10694
|
+
white-space: nowrap;
|
|
10695
|
+
flex: 1 1 auto;
|
|
10696
|
+
min-width: 0;
|
|
10697
|
+
}
|
|
10698
|
+
.qc-submodule-badge {
|
|
10699
|
+
flex-shrink: 0;
|
|
10700
|
+
padding: 1px 6px;
|
|
10701
|
+
border-radius: 8px;
|
|
10702
|
+
background: rgba(140, 100, 200, 0.16);
|
|
10703
|
+
color: rgba(110, 70, 180, 0.95);
|
|
10704
|
+
font-size: 0.68rem;
|
|
10705
|
+
font-weight: 600;
|
|
10706
|
+
letter-spacing: 0.02em;
|
|
10707
|
+
white-space: nowrap;
|
|
10708
|
+
}
|
|
10709
|
+
.qc-checkbox-row {
|
|
10710
|
+
display: flex;
|
|
10711
|
+
align-items: center;
|
|
10712
|
+
gap: 8px;
|
|
10713
|
+
font-size: 0.85rem;
|
|
10714
|
+
color: var(--text-primary);
|
|
10715
|
+
cursor: pointer;
|
|
10716
|
+
user-select: none;
|
|
10717
|
+
}
|
|
10718
|
+
.qc-checkbox-row input[type="checkbox"] {
|
|
10719
|
+
width: 16px;
|
|
10720
|
+
height: 16px;
|
|
10721
|
+
cursor: pointer;
|
|
10722
|
+
}
|
|
10723
|
+
.qc-message-row,
|
|
10724
|
+
.qc-tag-row {
|
|
10725
|
+
display: flex;
|
|
10726
|
+
flex-direction: column;
|
|
10727
|
+
gap: 4px;
|
|
10728
|
+
}
|
|
10729
|
+
.qc-message-row.hidden,
|
|
10730
|
+
.qc-tag-row.hidden {
|
|
10731
|
+
display: none;
|
|
10732
|
+
}
|
|
10733
|
+
.qc-message-header {
|
|
10734
|
+
display: flex;
|
|
10735
|
+
align-items: center;
|
|
10736
|
+
justify-content: space-between;
|
|
10737
|
+
gap: 8px;
|
|
10738
|
+
}
|
|
10739
|
+
.qc-message-row textarea {
|
|
10740
|
+
resize: vertical;
|
|
10741
|
+
min-height: 56px;
|
|
10742
|
+
font-family: var(--font-mono, monospace);
|
|
10743
|
+
font-size: 0.85rem;
|
|
10744
|
+
}
|
|
10745
|
+
.quick-commit-modal .worktree-merge-actions {
|
|
10746
|
+
display: flex;
|
|
10747
|
+
justify-content: flex-end;
|
|
10748
|
+
gap: 8px;
|
|
10749
|
+
margin-top: 4px;
|
|
10750
|
+
}
|
|
10751
|
+
|
|
10752
|
+
@media (max-width: 720px) {
|
|
10753
|
+
.topbar-git-branch { max-width: 8em; }
|
|
10754
|
+
.topbar-git-badge { padding: 0 8px; font-size: 0.7rem; }
|
|
10755
|
+
.quick-commit-modal { max-width: 95vw; }
|
|
10756
|
+
.qc-files-wrap { max-height: 160px; }
|
|
10757
|
+
}
|
|
10758
|
+
|
|
10242
10759
|
/* 结束标记 */
|