@co0ontty/wand 1.37.0 → 1.39.1
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/process-manager.d.ts +16 -0
- package/dist/process-manager.js +179 -0
- package/dist/server-session-routes.js +110 -0
- package/dist/structured-session-manager.d.ts +48 -0
- package/dist/structured-session-manager.js +293 -30
- package/dist/types.d.ts +2 -0
- package/dist/web-ui/content/scripts.js +464 -77
- package/dist/web-ui/content/styles.css +110 -49
- package/package.json +1 -1
|
@@ -258,9 +258,9 @@
|
|
|
258
258
|
min-height: 100dvh;
|
|
259
259
|
height: 100vh;
|
|
260
260
|
height: 100dvh;
|
|
261
|
-
/*
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
/* JS 注入 --app-viewport-height = visualViewport.height,
|
|
262
|
+
键盘开关和 iOS 地址栏动画时整体 flex column 跟随可见视口;
|
|
263
|
+
不支持 visualViewport 时退回 100dvh。 */
|
|
264
264
|
height: var(--app-viewport-height, 100dvh);
|
|
265
265
|
line-height: var(--line-height-base);
|
|
266
266
|
overflow: hidden;
|
|
@@ -310,7 +310,7 @@
|
|
|
310
310
|
min-height: 100dvh;
|
|
311
311
|
height: 100vh;
|
|
312
312
|
height: 100dvh;
|
|
313
|
-
/* 与 body
|
|
313
|
+
/* 与 body 同步:键盘开关时跟随可见视口收缩/恢复。 */
|
|
314
314
|
height: var(--app-viewport-height, 100dvh);
|
|
315
315
|
overflow: hidden;
|
|
316
316
|
}
|
|
@@ -547,7 +547,8 @@
|
|
|
547
547
|
}
|
|
548
548
|
.sidebar.pinned.collapsed .sidebar-header-main,
|
|
549
549
|
.sidebar.pinned.collapsed .sidebar-header-more,
|
|
550
|
-
.sidebar.pinned.collapsed .sidebar-footer
|
|
550
|
+
.sidebar.pinned.collapsed .sidebar-footer,
|
|
551
|
+
.sidebar.pinned.collapsed .sidebar-history-region {
|
|
551
552
|
display: none;
|
|
552
553
|
}
|
|
553
554
|
.sidebar.pinned.collapsed .sidebar-header-actions {
|
|
@@ -613,6 +614,24 @@
|
|
|
613
614
|
0 4px 10px -3px rgba(120, 88, 56, 0.3),
|
|
614
615
|
inset 0 1px 0 rgba(255, 255, 255, 0.48);
|
|
615
616
|
}
|
|
617
|
+
/* 快速新建会话 tile —— 虚线描边 + 加号,区别于实心会话方块 */
|
|
618
|
+
.sidebar-collapsed-tile.add {
|
|
619
|
+
background: rgba(184, 92, 55, 0.06);
|
|
620
|
+
border: 1.5px dashed rgba(184, 92, 55, 0.5);
|
|
621
|
+
color: #a04a2e;
|
|
622
|
+
box-shadow: none;
|
|
623
|
+
margin-top: 2px;
|
|
624
|
+
}
|
|
625
|
+
.sidebar-collapsed-tile.add:hover {
|
|
626
|
+
filter: none;
|
|
627
|
+
transform: translateY(-1px);
|
|
628
|
+
background: rgba(184, 92, 55, 0.12);
|
|
629
|
+
border-color: rgba(184, 92, 55, 0.72);
|
|
630
|
+
box-shadow: 0 3px 8px -3px rgba(184, 92, 55, 0.32);
|
|
631
|
+
}
|
|
632
|
+
.sidebar-collapsed-tile.add:active {
|
|
633
|
+
transform: translateY(0) scale(0.94);
|
|
634
|
+
}
|
|
616
635
|
/* Active — accent ring + 一层柔和暖投影 + 顶高光。原先 7 层叠加在 36px 小块上
|
|
617
636
|
糊成一团,精简到 3 层即可表达「升起 + 选中」。 */
|
|
618
637
|
.sidebar-collapsed-tile.active {
|
|
@@ -627,13 +646,6 @@
|
|
|
627
646
|
transform: translateY(0) scale(0.94);
|
|
628
647
|
transition-duration: 0.08s;
|
|
629
648
|
}
|
|
630
|
-
.sidebar-collapsed-empty {
|
|
631
|
-
color: var(--text-muted, rgba(89, 58, 32, 0.45));
|
|
632
|
-
text-align: center;
|
|
633
|
-
font-size: 16px;
|
|
634
|
-
padding: 12px 0;
|
|
635
|
-
user-select: none;
|
|
636
|
-
}
|
|
637
649
|
/* Hover tooltip bubble for narrow tiles — chat-bubble look */
|
|
638
650
|
.sidebar-tile-bubble {
|
|
639
651
|
position: fixed;
|
|
@@ -1351,6 +1363,14 @@
|
|
|
1351
1363
|
text-align: center;
|
|
1352
1364
|
font-style: italic;
|
|
1353
1365
|
}
|
|
1366
|
+
.sidebar-history-section-label {
|
|
1367
|
+
padding: 8px 10px 4px 10px;
|
|
1368
|
+
font-size: 0.6875rem;
|
|
1369
|
+
font-weight: 600;
|
|
1370
|
+
letter-spacing: 0.04em;
|
|
1371
|
+
text-transform: uppercase;
|
|
1372
|
+
opacity: 0.5;
|
|
1373
|
+
}
|
|
1354
1374
|
.claude-history-directory-header {
|
|
1355
1375
|
margin-top: 6px;
|
|
1356
1376
|
cursor: pointer;
|
|
@@ -4037,6 +4057,12 @@
|
|
|
4037
4057
|
min-height: 0;
|
|
4038
4058
|
min-width: 0;
|
|
4039
4059
|
scrollbar-gutter: stable;
|
|
4060
|
+
/* iOS Safari: 聊天到顶 / 到底再用力滑, scroll 会从 .chat-messages 冒到
|
|
4061
|
+
body, 即使父级有 overflow:hidden 也拦不住 (Safari 已知行为)。这一冒
|
|
4062
|
+
有两个用户可见的副作用: 1) 整页跟着一起被推一帧, 输入框跳动;
|
|
4063
|
+
2) 偶尔触发地址栏 / 工具栏的折叠动画。contain 把惯性吃在容器内,
|
|
4064
|
+
保留 iOS 那种橡皮筋反弹手感, 但不向外溢出。 */
|
|
4065
|
+
overscroll-behavior: contain;
|
|
4040
4066
|
}
|
|
4041
4067
|
|
|
4042
4068
|
/* ===== 历史消息懒加载 ===== */
|
|
@@ -10161,8 +10187,8 @@
|
|
|
10161
10187
|
}
|
|
10162
10188
|
|
|
10163
10189
|
html, body {
|
|
10164
|
-
min-height: 100dvh;
|
|
10165
|
-
height:
|
|
10190
|
+
min-height: var(--app-viewport-height, 100dvh);
|
|
10191
|
+
height: var(--app-viewport-height, 100dvh);
|
|
10166
10192
|
}
|
|
10167
10193
|
|
|
10168
10194
|
body {
|
|
@@ -10173,9 +10199,9 @@
|
|
|
10173
10199
|
.app-container {
|
|
10174
10200
|
min-height: 100dvh;
|
|
10175
10201
|
height: 100dvh;
|
|
10176
|
-
/* 与 body
|
|
10177
|
-
app-container 跟随 visualViewport
|
|
10178
|
-
|
|
10202
|
+
/* 与 body 同步:JS 持续注入 --app-viewport-height,
|
|
10203
|
+
app-container 跟随 visualViewport 收缩/恢复,input-panel 自动贴键盘
|
|
10204
|
+
上沿或屏幕底部。 */
|
|
10179
10205
|
height: var(--app-viewport-height, 100dvh);
|
|
10180
10206
|
overflow: hidden;
|
|
10181
10207
|
}
|
|
@@ -10732,7 +10758,11 @@
|
|
|
10732
10758
|
.file-search-box { padding: 6px 10px 8px; }
|
|
10733
10759
|
.file-search-icon { left: 20px; }
|
|
10734
10760
|
.file-search-clear { right: 16px; }
|
|
10735
|
-
|
|
10761
|
+
/* 16px 兜底 iOS Safari 聚焦自动放大:
|
|
10762
|
+
即使设了 user-scalable=no, 部分 iOS 版本 (尤其 15 / 16 早期补丁) 仍会
|
|
10763
|
+
在 input font-size < 16px 时强制 zoom in, 之后回不到原 scale, 用户得
|
|
10764
|
+
手动双指捏回。所有移动端会被聚焦的 input 都统一到 16px。 */
|
|
10765
|
+
.file-search-input { min-height: 34px; font-size: 16px; padding: 7px 32px 7px 30px; }
|
|
10736
10766
|
.file-item { padding: 6px 8px; min-height: 32px; }
|
|
10737
10767
|
|
|
10738
10768
|
/* 欢迎页移动端 */
|
|
@@ -15373,39 +15403,10 @@
|
|
|
15373
15403
|
letter-spacing: 0.02em;
|
|
15374
15404
|
white-space: nowrap;
|
|
15375
15405
|
}
|
|
15376
|
-
/* Switch row inside quick-commit modal — same iOS rhythm as settings */
|
|
15377
|
-
.qc-checkbox-row {
|
|
15378
|
-
display: flex;
|
|
15379
|
-
align-items: center;
|
|
15380
|
-
justify-content: space-between;
|
|
15381
|
-
gap: 12px;
|
|
15382
|
-
padding: 11px 14px;
|
|
15383
|
-
background: rgba(255, 255, 255, 0.55);
|
|
15384
|
-
border: 1px solid rgba(125, 91, 57, 0.08);
|
|
15385
|
-
border-radius: 12px;
|
|
15386
|
-
box-shadow: 0 1px 1px rgba(125, 91, 57, 0.02);
|
|
15387
|
-
transition: background 0.16s ease, border-color 0.16s ease;
|
|
15388
|
-
user-select: none;
|
|
15389
|
-
}
|
|
15390
|
-
.qc-checkbox-row:hover {
|
|
15391
|
-
background: rgba(255, 255, 255, 0.78);
|
|
15392
|
-
border-color: rgba(125, 91, 57, 0.16);
|
|
15393
|
-
}
|
|
15394
|
-
.qc-checkbox-row:has(.switch-toggle:checked) {
|
|
15395
|
-
background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
|
|
15396
|
-
border-color: rgba(197, 101, 61, 0.3);
|
|
15397
|
-
}
|
|
15398
|
-
.qc-checkbox-label {
|
|
15399
|
-
flex: 1;
|
|
15400
|
-
min-width: 0;
|
|
15401
|
-
font-size: 0.8125rem;
|
|
15402
|
-
font-weight: 600;
|
|
15403
|
-
color: var(--text-primary);
|
|
15404
|
-
cursor: pointer;
|
|
15405
|
-
line-height: 1.4;
|
|
15406
|
-
}
|
|
15407
15406
|
.qc-switch {
|
|
15408
15407
|
flex-shrink: 0;
|
|
15408
|
+
display: inline-flex;
|
|
15409
|
+
align-items: center;
|
|
15409
15410
|
cursor: pointer;
|
|
15410
15411
|
}
|
|
15411
15412
|
.qc-message-row,
|
|
@@ -15423,6 +15424,62 @@
|
|
|
15423
15424
|
align-items: center;
|
|
15424
15425
|
justify-content: space-between;
|
|
15425
15426
|
gap: 8px;
|
|
15427
|
+
flex-wrap: wrap;
|
|
15428
|
+
}
|
|
15429
|
+
.qc-ai-controls {
|
|
15430
|
+
display: inline-flex;
|
|
15431
|
+
align-items: center;
|
|
15432
|
+
justify-content: flex-end;
|
|
15433
|
+
gap: 7px;
|
|
15434
|
+
margin-left: auto;
|
|
15435
|
+
flex: 0 0 auto;
|
|
15436
|
+
}
|
|
15437
|
+
.qc-ai-tag-toggle {
|
|
15438
|
+
display: inline-flex;
|
|
15439
|
+
align-items: center;
|
|
15440
|
+
gap: 6px;
|
|
15441
|
+
min-height: 30px;
|
|
15442
|
+
padding: 3px 7px 3px 9px;
|
|
15443
|
+
border: 1px solid rgba(125, 91, 57, 0.12);
|
|
15444
|
+
border-radius: 999px;
|
|
15445
|
+
background: rgba(255, 255, 255, 0.58);
|
|
15446
|
+
color: var(--text-muted);
|
|
15447
|
+
font-size: 0.74rem;
|
|
15448
|
+
font-weight: 700;
|
|
15449
|
+
line-height: 1;
|
|
15450
|
+
user-select: none;
|
|
15451
|
+
cursor: pointer;
|
|
15452
|
+
transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease, box-shadow 0.16s ease;
|
|
15453
|
+
}
|
|
15454
|
+
.qc-ai-tag-toggle:hover {
|
|
15455
|
+
background: rgba(255, 255, 255, 0.82);
|
|
15456
|
+
border-color: rgba(125, 91, 57, 0.20);
|
|
15457
|
+
}
|
|
15458
|
+
.qc-ai-tag-toggle:has(.switch-toggle:checked) {
|
|
15459
|
+
color: rgba(170, 79, 42, 0.98);
|
|
15460
|
+
background: linear-gradient(180deg, #fff8f1 0%, #fff1e3 100%);
|
|
15461
|
+
border-color: rgba(197, 101, 61, 0.32);
|
|
15462
|
+
box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
|
|
15463
|
+
}
|
|
15464
|
+
.qc-ai-tag-toggle:has(.switch-toggle:disabled) {
|
|
15465
|
+
cursor: default;
|
|
15466
|
+
opacity: 0.68;
|
|
15467
|
+
}
|
|
15468
|
+
.qc-ai-tag-label {
|
|
15469
|
+
white-space: nowrap;
|
|
15470
|
+
}
|
|
15471
|
+
.qc-switch--compact .switch-slider {
|
|
15472
|
+
width: 34px;
|
|
15473
|
+
min-width: 34px;
|
|
15474
|
+
height: 20px;
|
|
15475
|
+
border-radius: 999px;
|
|
15476
|
+
}
|
|
15477
|
+
.qc-switch--compact .switch-slider::after {
|
|
15478
|
+
width: 16px;
|
|
15479
|
+
height: 16px;
|
|
15480
|
+
}
|
|
15481
|
+
.qc-switch--compact .switch-toggle:checked + .switch-slider::after {
|
|
15482
|
+
transform: translateX(14px);
|
|
15426
15483
|
}
|
|
15427
15484
|
.qc-message-row textarea {
|
|
15428
15485
|
resize: vertical;
|
|
@@ -15727,6 +15784,10 @@
|
|
|
15727
15784
|
.qc-files-wrap { max-height: 160px; }
|
|
15728
15785
|
.qc-section { padding: 10px 12px; }
|
|
15729
15786
|
.qc-dropdown-menu { min-width: 180px; }
|
|
15787
|
+
.qc-ai-controls {
|
|
15788
|
+
width: 100%;
|
|
15789
|
+
justify-content: flex-end;
|
|
15790
|
+
}
|
|
15730
15791
|
}
|
|
15731
15792
|
|
|
15732
15793
|
/* ============================================================ */
|