@co0ontty/wand 1.3.6 → 1.5.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/auth.js +2 -1
- package/dist/claude-pty-bridge.d.ts +6 -0
- package/dist/claude-pty-bridge.js +38 -1
- package/dist/cli.js +2 -2
- package/dist/config.js +3 -2
- package/dist/middleware/rate-limit.js +2 -1
- package/dist/process-manager.d.ts +1 -0
- package/dist/process-manager.js +44 -5
- package/dist/server-session-routes.d.ts +2 -1
- package/dist/server-session-routes.js +113 -7
- package/dist/server.js +13 -9
- package/dist/storage.js +42 -8
- package/dist/structured-session-manager.d.ts +56 -0
- package/dist/structured-session-manager.js +730 -0
- package/dist/types.d.ts +17 -2
- package/dist/web-ui/content/scripts.js +730 -137
- package/dist/web-ui/content/styles.css +288 -79
- package/dist/web-ui/index.js +1 -1
- package/package.json +5 -4
|
@@ -2231,6 +2231,7 @@
|
|
|
2231
2231
|
|
|
2232
2232
|
.chat-message.assistant {
|
|
2233
2233
|
align-self: flex-start;
|
|
2234
|
+
max-width: 95%;
|
|
2234
2235
|
}
|
|
2235
2236
|
|
|
2236
2237
|
.chat-message.system-info {
|
|
@@ -2296,9 +2297,11 @@
|
|
|
2296
2297
|
}
|
|
2297
2298
|
|
|
2298
2299
|
.chat-message.assistant .chat-message-avatar {
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2300
|
+
font-size: 0.75rem;
|
|
2301
|
+
font-weight: 600;
|
|
2302
|
+
color: var(--accent);
|
|
2303
|
+
padding: 0 2px 4px 2px;
|
|
2304
|
+
letter-spacing: 0.03em;
|
|
2302
2305
|
}
|
|
2303
2306
|
|
|
2304
2307
|
/* ===== 消息气泡 ===== */
|
|
@@ -2351,23 +2354,44 @@
|
|
|
2351
2354
|
box-shadow: var(--shadow-md);
|
|
2352
2355
|
}
|
|
2353
2356
|
|
|
2357
|
+
/* ===== 结构化消息内容(无气泡包裹) ===== */
|
|
2358
|
+
.chat-message-content {
|
|
2359
|
+
display: flex;
|
|
2360
|
+
flex-direction: column;
|
|
2361
|
+
gap: 2px;
|
|
2362
|
+
max-width: 100%;
|
|
2363
|
+
font-size: 0.875rem;
|
|
2364
|
+
line-height: var(--line-height-relaxed);
|
|
2365
|
+
word-wrap: break-word;
|
|
2366
|
+
color: var(--text-primary);
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
.chat-message-content > .thinking-inline,
|
|
2370
|
+
.chat-message-content > .inline-tool,
|
|
2371
|
+
.chat-message-content > .terminal-tool,
|
|
2372
|
+
.chat-message-content > .diff-tool,
|
|
2373
|
+
.chat-message-content > .tool-use-card {
|
|
2374
|
+
margin: 1px 0;
|
|
2375
|
+
}
|
|
2376
|
+
|
|
2354
2377
|
/* ===== 消息使用量信息 ===== */
|
|
2355
2378
|
.message-usage {
|
|
2356
|
-
margin-top:
|
|
2357
|
-
padding-top:
|
|
2358
|
-
border-top: 1px
|
|
2379
|
+
margin-top: 8px;
|
|
2380
|
+
padding-top: 6px;
|
|
2381
|
+
border-top: 1px solid var(--border-subtle);
|
|
2359
2382
|
font-family: var(--font-mono);
|
|
2360
|
-
font-size: 0.
|
|
2361
|
-
color: var(--text-
|
|
2383
|
+
font-size: 0.625rem;
|
|
2384
|
+
color: var(--text-muted);
|
|
2362
2385
|
display: flex;
|
|
2363
|
-
gap:
|
|
2386
|
+
gap: 10px;
|
|
2364
2387
|
align-items: center;
|
|
2365
2388
|
flex-wrap: wrap;
|
|
2389
|
+
opacity: 0.5;
|
|
2366
2390
|
}
|
|
2367
2391
|
|
|
2368
2392
|
.message-usage::before {
|
|
2369
|
-
content: '
|
|
2370
|
-
color: var(--
|
|
2393
|
+
content: '·';
|
|
2394
|
+
color: var(--text-muted);
|
|
2371
2395
|
font-size: 0.625rem;
|
|
2372
2396
|
}
|
|
2373
2397
|
|
|
@@ -2488,9 +2512,9 @@
|
|
|
2488
2512
|
|
|
2489
2513
|
/* Tool Use Card */
|
|
2490
2514
|
.tool-use-card {
|
|
2491
|
-
margin:
|
|
2515
|
+
margin: 3px 0;
|
|
2492
2516
|
border: 1px solid var(--border-subtle);
|
|
2493
|
-
border-radius:
|
|
2517
|
+
border-radius: 8px;
|
|
2494
2518
|
overflow: hidden;
|
|
2495
2519
|
width: 100%;
|
|
2496
2520
|
box-sizing: border-box;
|
|
@@ -2498,9 +2522,8 @@
|
|
|
2498
2522
|
transition: all 0.3s var(--ease-out-expo);
|
|
2499
2523
|
}
|
|
2500
2524
|
.tool-use-card:hover {
|
|
2501
|
-
border-color: rgba(79, 122, 88, 0.
|
|
2502
|
-
|
|
2503
|
-
box-shadow: -4px 4px 16px rgba(79, 122, 88, 0.08);
|
|
2525
|
+
border-color: rgba(79, 122, 88, 0.25);
|
|
2526
|
+
box-shadow: 0 2px 8px rgba(79, 122, 88, 0.06);
|
|
2504
2527
|
}
|
|
2505
2528
|
.tool-use-card.loading {
|
|
2506
2529
|
border-color: rgba(79, 122, 88, 0.4);
|
|
@@ -2515,8 +2538,8 @@
|
|
|
2515
2538
|
display: flex;
|
|
2516
2539
|
align-items: center;
|
|
2517
2540
|
gap: 8px;
|
|
2518
|
-
padding:
|
|
2519
|
-
background: rgba(79, 122, 88, 0.
|
|
2541
|
+
padding: 8px 12px;
|
|
2542
|
+
background: rgba(79, 122, 88, 0.04);
|
|
2520
2543
|
cursor: pointer;
|
|
2521
2544
|
font-size: 0.8125rem;
|
|
2522
2545
|
user-select: none;
|
|
@@ -2524,7 +2547,7 @@
|
|
|
2524
2547
|
-webkit-tap-highlight-color: transparent;
|
|
2525
2548
|
touch-action: manipulation;
|
|
2526
2549
|
transition: all 0.2s var(--ease-out-expo);
|
|
2527
|
-
min-height:
|
|
2550
|
+
min-height: 36px;
|
|
2528
2551
|
flex-wrap: nowrap;
|
|
2529
2552
|
}
|
|
2530
2553
|
.tool-use-header:hover {
|
|
@@ -2543,12 +2566,18 @@
|
|
|
2543
2566
|
background: rgba(178, 79, 69, 0.1);
|
|
2544
2567
|
}
|
|
2545
2568
|
.tool-use-icon {
|
|
2546
|
-
font-size:
|
|
2569
|
+
font-size: 0.6875rem;
|
|
2570
|
+
font-family: var(--font-mono);
|
|
2571
|
+
font-weight: 600;
|
|
2547
2572
|
flex-shrink: 0;
|
|
2548
2573
|
display: flex;
|
|
2549
2574
|
align-items: center;
|
|
2550
2575
|
justify-content: center;
|
|
2551
|
-
min-width:
|
|
2576
|
+
min-width: 18px;
|
|
2577
|
+
height: 18px;
|
|
2578
|
+
border-radius: 4px;
|
|
2579
|
+
background: rgba(79, 122, 88, 0.1);
|
|
2580
|
+
color: var(--success);
|
|
2552
2581
|
}
|
|
2553
2582
|
.tool-use-spinner {
|
|
2554
2583
|
display: inline-block;
|
|
@@ -2745,22 +2774,22 @@
|
|
|
2745
2774
|
.thinking-inline {
|
|
2746
2775
|
display: flex;
|
|
2747
2776
|
align-items: baseline;
|
|
2748
|
-
gap:
|
|
2749
|
-
margin:
|
|
2750
|
-
padding:
|
|
2751
|
-
border-radius:
|
|
2752
|
-
background: rgba(138, 108, 178, 0.
|
|
2777
|
+
gap: 5px;
|
|
2778
|
+
margin: 2px 0;
|
|
2779
|
+
padding: 3px 8px;
|
|
2780
|
+
border-radius: 6px;
|
|
2781
|
+
background: rgba(138, 108, 178, 0.04);
|
|
2753
2782
|
cursor: pointer;
|
|
2754
|
-
font-size: 0.
|
|
2755
|
-
line-height: 1.
|
|
2756
|
-
color: rgba(138, 108, 178, 0.
|
|
2783
|
+
font-size: 0.75rem;
|
|
2784
|
+
line-height: 1.4;
|
|
2785
|
+
color: rgba(138, 108, 178, 0.55);
|
|
2757
2786
|
transition: background var(--transition-fast), color var(--transition-fast);
|
|
2758
2787
|
word-break: break-word;
|
|
2759
2788
|
overflow-wrap: break-word;
|
|
2760
2789
|
}
|
|
2761
2790
|
.thinking-inline:hover {
|
|
2762
|
-
background: rgba(138, 108, 178, 0.
|
|
2763
|
-
color: rgba(138, 108, 178, 0.
|
|
2791
|
+
background: rgba(138, 108, 178, 0.08);
|
|
2792
|
+
color: rgba(138, 108, 178, 0.8);
|
|
2764
2793
|
}
|
|
2765
2794
|
.thinking-inline.expanded {
|
|
2766
2795
|
color: var(--text-secondary);
|
|
@@ -2771,7 +2800,7 @@
|
|
|
2771
2800
|
}
|
|
2772
2801
|
.thinking-inline-icon {
|
|
2773
2802
|
flex-shrink: 0;
|
|
2774
|
-
font-size: 0.
|
|
2803
|
+
font-size: 0.625rem;
|
|
2775
2804
|
}
|
|
2776
2805
|
.thinking-inline-preview {
|
|
2777
2806
|
flex: 1;
|
|
@@ -2786,42 +2815,42 @@
|
|
|
2786
2815
|
}
|
|
2787
2816
|
.thinking-inline-action {
|
|
2788
2817
|
flex-shrink: 0;
|
|
2789
|
-
font-size: 0.
|
|
2790
|
-
color: rgba(138, 108, 178, 0.
|
|
2791
|
-
padding:
|
|
2818
|
+
font-size: 0.625rem;
|
|
2819
|
+
color: rgba(138, 108, 178, 0.4);
|
|
2820
|
+
padding: 0 4px;
|
|
2792
2821
|
border-radius: 3px;
|
|
2793
|
-
background: rgba(138, 108, 178, 0.
|
|
2822
|
+
background: rgba(138, 108, 178, 0.08);
|
|
2794
2823
|
margin-left: auto;
|
|
2795
2824
|
}
|
|
2796
2825
|
.thinking-inline:hover .thinking-inline-action {
|
|
2797
|
-
color: rgba(138, 108, 178, 0.
|
|
2826
|
+
color: rgba(138, 108, 178, 0.7);
|
|
2798
2827
|
}
|
|
2799
2828
|
.thinking-inline.thinking-pty {
|
|
2800
|
-
background: rgba(138, 108, 178, 0.
|
|
2829
|
+
background: rgba(138, 108, 178, 0.03);
|
|
2801
2830
|
}
|
|
2802
2831
|
|
|
2803
2832
|
/* Streaming thinking: 3-line scrollable area during thinking */
|
|
2804
2833
|
.thinking-streaming {
|
|
2805
2834
|
display: flex;
|
|
2806
2835
|
align-items: flex-start;
|
|
2807
|
-
gap:
|
|
2808
|
-
margin:
|
|
2809
|
-
padding:
|
|
2810
|
-
border-radius:
|
|
2811
|
-
background: rgba(138, 108, 178, 0.
|
|
2836
|
+
gap: 5px;
|
|
2837
|
+
margin: 2px 0;
|
|
2838
|
+
padding: 3px 8px;
|
|
2839
|
+
border-radius: 6px;
|
|
2840
|
+
background: rgba(138, 108, 178, 0.04);
|
|
2812
2841
|
cursor: default;
|
|
2813
|
-
font-size: 0.
|
|
2814
|
-
line-height: 1.
|
|
2815
|
-
color: rgba(138, 108, 178, 0.
|
|
2842
|
+
font-size: 0.75rem;
|
|
2843
|
+
line-height: 1.4;
|
|
2844
|
+
color: rgba(138, 108, 178, 0.55);
|
|
2816
2845
|
}
|
|
2817
2846
|
.thinking-streaming-inner {
|
|
2818
2847
|
display: flex;
|
|
2819
2848
|
align-items: flex-start;
|
|
2820
|
-
gap:
|
|
2849
|
+
gap: 5px;
|
|
2821
2850
|
width: 100%;
|
|
2822
2851
|
}
|
|
2823
2852
|
.thinking-streaming-icon {
|
|
2824
|
-
font-size: 0.
|
|
2853
|
+
font-size: 0.625rem;
|
|
2825
2854
|
flex-shrink: 0;
|
|
2826
2855
|
margin-top: 1px;
|
|
2827
2856
|
}
|
|
@@ -2851,33 +2880,38 @@
|
|
|
2851
2880
|
.inline-tool {
|
|
2852
2881
|
display: flex;
|
|
2853
2882
|
flex-direction: column;
|
|
2854
|
-
margin:
|
|
2855
|
-
border-radius:
|
|
2883
|
+
margin: 1px 0;
|
|
2884
|
+
border-radius: 6px;
|
|
2856
2885
|
cursor: pointer;
|
|
2857
2886
|
transition: background var(--transition-fast);
|
|
2858
2887
|
}
|
|
2859
2888
|
.inline-tool-row {
|
|
2860
2889
|
display: flex;
|
|
2861
2890
|
align-items: center;
|
|
2862
|
-
gap:
|
|
2863
|
-
padding:
|
|
2864
|
-
font-size: 0.
|
|
2891
|
+
gap: 5px;
|
|
2892
|
+
padding: 2px 6px;
|
|
2893
|
+
font-size: 0.6875rem;
|
|
2865
2894
|
color: var(--text-muted);
|
|
2866
2895
|
font-family: var(--font-mono);
|
|
2867
|
-
line-height: 1.
|
|
2896
|
+
line-height: 1.4;
|
|
2897
|
+
opacity: 0.7;
|
|
2868
2898
|
}
|
|
2869
2899
|
.inline-tool:hover .inline-tool-row {
|
|
2870
|
-
|
|
2871
|
-
|
|
2900
|
+
opacity: 1;
|
|
2901
|
+
background: rgba(0, 0, 0, 0.02);
|
|
2902
|
+
border-radius: 6px;
|
|
2872
2903
|
}
|
|
2873
2904
|
.inline-tool-status {
|
|
2874
|
-
font-size: 0.
|
|
2905
|
+
font-size: 0.625rem;
|
|
2875
2906
|
flex-shrink: 0;
|
|
2876
2907
|
}
|
|
2877
2908
|
.inline-tool-icon {
|
|
2878
2909
|
flex-shrink: 0;
|
|
2879
2910
|
color: var(--text-muted);
|
|
2880
|
-
margin: 0
|
|
2911
|
+
margin: 0 1px;
|
|
2912
|
+
opacity: 0.6;
|
|
2913
|
+
width: 12px;
|
|
2914
|
+
height: 12px;
|
|
2881
2915
|
}
|
|
2882
2916
|
.inline-tool-title {
|
|
2883
2917
|
flex: 1;
|
|
@@ -2885,13 +2919,13 @@
|
|
|
2885
2919
|
overflow: hidden;
|
|
2886
2920
|
text-overflow: ellipsis;
|
|
2887
2921
|
white-space: nowrap;
|
|
2888
|
-
color: var(--text-
|
|
2922
|
+
color: var(--text-muted);
|
|
2889
2923
|
}
|
|
2890
2924
|
.inline-tool-meta {
|
|
2891
2925
|
flex-shrink: 0;
|
|
2892
|
-
font-size: 0.
|
|
2926
|
+
font-size: 0.625rem;
|
|
2893
2927
|
color: var(--text-muted);
|
|
2894
|
-
opacity: 0.
|
|
2928
|
+
opacity: 0.5;
|
|
2895
2929
|
max-width: 200px;
|
|
2896
2930
|
overflow: hidden;
|
|
2897
2931
|
text-overflow: ellipsis;
|
|
@@ -2958,9 +2992,9 @@
|
|
|
2958
2992
|
|
|
2959
2993
|
/* ── Inline Terminal Display (Bash) ── */
|
|
2960
2994
|
.inline-terminal {
|
|
2961
|
-
margin:
|
|
2995
|
+
margin: 3px 0;
|
|
2962
2996
|
border: 1px solid rgba(255, 255, 255, 0.06);
|
|
2963
|
-
border-radius:
|
|
2997
|
+
border-radius: 8px;
|
|
2964
2998
|
background: #1a1714;
|
|
2965
2999
|
overflow: hidden;
|
|
2966
3000
|
}
|
|
@@ -2968,12 +3002,15 @@
|
|
|
2968
3002
|
display: flex;
|
|
2969
3003
|
align-items: center;
|
|
2970
3004
|
gap: 6px;
|
|
2971
|
-
padding:
|
|
3005
|
+
padding: 5px 10px;
|
|
2972
3006
|
background: rgba(255, 255, 255, 0.03);
|
|
2973
3007
|
font-size: 0.75rem;
|
|
2974
3008
|
cursor: pointer;
|
|
2975
3009
|
user-select: none;
|
|
2976
3010
|
}
|
|
3011
|
+
.term-header:hover {
|
|
3012
|
+
background: rgba(255, 255, 255, 0.05);
|
|
3013
|
+
}
|
|
2977
3014
|
.term-status-dot {
|
|
2978
3015
|
width: 6px;
|
|
2979
3016
|
height: 6px;
|
|
@@ -2988,6 +3025,22 @@
|
|
|
2988
3025
|
0%, 100% { opacity: 1; }
|
|
2989
3026
|
50% { opacity: 0.4; }
|
|
2990
3027
|
}
|
|
3028
|
+
.term-cmd-preview {
|
|
3029
|
+
flex: 1;
|
|
3030
|
+
min-width: 0;
|
|
3031
|
+
font-family: var(--font-mono);
|
|
3032
|
+
font-size: 0.6875rem;
|
|
3033
|
+
color: rgba(255, 255, 255, 0.45);
|
|
3034
|
+
overflow: hidden;
|
|
3035
|
+
text-overflow: ellipsis;
|
|
3036
|
+
white-space: nowrap;
|
|
3037
|
+
}
|
|
3038
|
+
.term-cmd-preview .term-prompt {
|
|
3039
|
+
color: rgba(110, 224, 154, 0.6);
|
|
3040
|
+
font-weight: 500;
|
|
3041
|
+
margin-right: 4px;
|
|
3042
|
+
font-size: 0.6875rem;
|
|
3043
|
+
}
|
|
2991
3044
|
.term-title {
|
|
2992
3045
|
flex: 1;
|
|
2993
3046
|
font-family: var(--font-mono);
|
|
@@ -2995,8 +3048,8 @@
|
|
|
2995
3048
|
color: rgba(255, 255, 255, 0.3);
|
|
2996
3049
|
}
|
|
2997
3050
|
.term-toggle-icon {
|
|
2998
|
-
font-size: 0.
|
|
2999
|
-
color: rgba(255, 255, 255, 0.
|
|
3051
|
+
font-size: 0.5rem;
|
|
3052
|
+
color: rgba(255, 255, 255, 0.25);
|
|
3000
3053
|
transition: transform var(--transition-fast);
|
|
3001
3054
|
}
|
|
3002
3055
|
.term-body {
|
|
@@ -3040,9 +3093,9 @@
|
|
|
3040
3093
|
|
|
3041
3094
|
/* ── Inline Diff Display (Edit, Write, MultiEdit) ── */
|
|
3042
3095
|
.inline-diff {
|
|
3043
|
-
margin:
|
|
3044
|
-
border: 1px solid rgba(0, 0, 0, 0.
|
|
3045
|
-
border-radius:
|
|
3096
|
+
margin: 3px 0;
|
|
3097
|
+
border: 1px solid rgba(0, 0, 0, 0.06);
|
|
3098
|
+
border-radius: 8px;
|
|
3046
3099
|
overflow: hidden;
|
|
3047
3100
|
background: var(--bg-secondary);
|
|
3048
3101
|
}
|
|
@@ -3055,8 +3108,7 @@
|
|
|
3055
3108
|
font-size: 0.75rem;
|
|
3056
3109
|
}
|
|
3057
3110
|
.diff-file-icon {
|
|
3058
|
-
|
|
3059
|
-
font-size: 0.875rem;
|
|
3111
|
+
display: none;
|
|
3060
3112
|
}
|
|
3061
3113
|
.diff-file-name {
|
|
3062
3114
|
font-family: var(--font-mono);
|
|
@@ -3225,7 +3277,8 @@
|
|
|
3225
3277
|
}
|
|
3226
3278
|
|
|
3227
3279
|
/* Markdown Content */
|
|
3228
|
-
.markdown-content { color: inherit; }
|
|
3280
|
+
.markdown-content { color: inherit; white-space: normal; overflow-x: hidden; }
|
|
3281
|
+
.markdown-content .code-block pre { overflow-x: auto; }
|
|
3229
3282
|
.markdown-content p { margin: 0 0 8px 0; }
|
|
3230
3283
|
.markdown-content p:last-child { margin-bottom: 0; }
|
|
3231
3284
|
.markdown-content strong { font-weight: 600; }
|
|
@@ -3430,6 +3483,30 @@
|
|
|
3430
3483
|
to { opacity: 1; transform: translateX(0); }
|
|
3431
3484
|
}
|
|
3432
3485
|
|
|
3486
|
+
/* Auto-approve indicator */
|
|
3487
|
+
.auto-approve-indicator {
|
|
3488
|
+
display: inline-flex;
|
|
3489
|
+
align-items: center;
|
|
3490
|
+
gap: 2px;
|
|
3491
|
+
font-size: 0.65rem;
|
|
3492
|
+
color: var(--muted);
|
|
3493
|
+
cursor: pointer;
|
|
3494
|
+
padding: 1px 4px;
|
|
3495
|
+
border-radius: 4px;
|
|
3496
|
+
transition: color 0.15s, background 0.15s;
|
|
3497
|
+
user-select: none;
|
|
3498
|
+
white-space: nowrap;
|
|
3499
|
+
}
|
|
3500
|
+
.auto-approve-indicator:hover {
|
|
3501
|
+
background: rgba(255, 255, 255, 0.06);
|
|
3502
|
+
}
|
|
3503
|
+
.auto-approve-indicator.active {
|
|
3504
|
+
color: #22c55e;
|
|
3505
|
+
}
|
|
3506
|
+
.auto-approve-indicator.active:hover {
|
|
3507
|
+
background: rgba(34, 197, 94, 0.1);
|
|
3508
|
+
}
|
|
3509
|
+
|
|
3433
3510
|
/* Approval stats badge */
|
|
3434
3511
|
.approval-stats {
|
|
3435
3512
|
display: inline-flex;
|
|
@@ -4571,11 +4648,11 @@
|
|
|
4571
4648
|
display: flex;
|
|
4572
4649
|
flex-direction: column;
|
|
4573
4650
|
align-items: center;
|
|
4574
|
-
gap:
|
|
4575
|
-
padding: 8px
|
|
4576
|
-
border: 1.5px solid rgba(125, 91, 57, 0.
|
|
4651
|
+
gap: 3px;
|
|
4652
|
+
padding: 10px 8px;
|
|
4653
|
+
border: 1.5px solid rgba(125, 91, 57, 0.2);
|
|
4577
4654
|
border-radius: 10px;
|
|
4578
|
-
background: rgba(255, 255, 255, 0.
|
|
4655
|
+
background: rgba(255, 255, 255, 0.6);
|
|
4579
4656
|
cursor: pointer;
|
|
4580
4657
|
transition: border-color var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
4581
4658
|
text-align: center;
|
|
@@ -4595,13 +4672,13 @@
|
|
|
4595
4672
|
box-shadow: 0 0 0 1.5px var(--accent-muted);
|
|
4596
4673
|
}
|
|
4597
4674
|
.mode-card-label {
|
|
4598
|
-
font-size: 0.
|
|
4675
|
+
font-size: 0.8rem;
|
|
4599
4676
|
font-weight: 600;
|
|
4600
4677
|
color: var(--text-primary);
|
|
4601
4678
|
line-height: 1.3;
|
|
4602
4679
|
}
|
|
4603
4680
|
.mode-card-desc {
|
|
4604
|
-
font-size: 0.
|
|
4681
|
+
font-size: 0.68rem;
|
|
4605
4682
|
color: var(--text-muted);
|
|
4606
4683
|
line-height: 1.3;
|
|
4607
4684
|
}
|
|
@@ -5455,7 +5532,7 @@
|
|
|
5455
5532
|
.btn-sm { min-height: 32px; }
|
|
5456
5533
|
|
|
5457
5534
|
.chat-message-bubble { padding: 8px 10px; font-size: 0.75rem; }
|
|
5458
|
-
.chat-message-avatar {
|
|
5535
|
+
.chat-message-avatar { font-size: 0.6875rem; }
|
|
5459
5536
|
|
|
5460
5537
|
/* 模态框移动端优化 */
|
|
5461
5538
|
.modal-backdrop {
|
|
@@ -5679,6 +5756,53 @@
|
|
|
5679
5756
|
}
|
|
5680
5757
|
}
|
|
5681
5758
|
|
|
5759
|
+
.session-kind-badge {
|
|
5760
|
+
display: inline-flex;
|
|
5761
|
+
align-items: center;
|
|
5762
|
+
height: 18px;
|
|
5763
|
+
padding: 0 6px;
|
|
5764
|
+
border-radius: 999px;
|
|
5765
|
+
font-size: 0.6875rem;
|
|
5766
|
+
font-weight: 600;
|
|
5767
|
+
letter-spacing: 0.01em;
|
|
5768
|
+
border: 1px solid transparent;
|
|
5769
|
+
flex-shrink: 0;
|
|
5770
|
+
}
|
|
5771
|
+
|
|
5772
|
+
.session-kind-badge.pty {
|
|
5773
|
+
color: var(--text-secondary);
|
|
5774
|
+
background: rgba(120, 128, 140, 0.12);
|
|
5775
|
+
border-color: rgba(120, 128, 140, 0.18);
|
|
5776
|
+
}
|
|
5777
|
+
|
|
5778
|
+
.session-kind-badge.structured {
|
|
5779
|
+
color: #d18b52;
|
|
5780
|
+
background: rgba(215, 122, 82, 0.10);
|
|
5781
|
+
border-color: rgba(215, 122, 82, 0.22);
|
|
5782
|
+
}
|
|
5783
|
+
|
|
5784
|
+
.session-kind-display {
|
|
5785
|
+
display: inline-flex;
|
|
5786
|
+
align-items: center;
|
|
5787
|
+
padding: 1px 6px;
|
|
5788
|
+
border-radius: 999px;
|
|
5789
|
+
font-size: 0.6875rem;
|
|
5790
|
+
font-weight: 600;
|
|
5791
|
+
color: #8a4b24;
|
|
5792
|
+
background: rgba(215, 122, 82, 0.12);
|
|
5793
|
+
border: 1px solid rgba(215, 122, 82, 0.2);
|
|
5794
|
+
}
|
|
5795
|
+
|
|
5796
|
+
.structured-tool-hint {
|
|
5797
|
+
margin: 4px 0 8px;
|
|
5798
|
+
padding: 6px 10px;
|
|
5799
|
+
border-radius: 10px;
|
|
5800
|
+
font-size: 0.75rem;
|
|
5801
|
+
color: var(--text-muted);
|
|
5802
|
+
background: rgba(215, 122, 82, 0.08);
|
|
5803
|
+
border: 1px dashed rgba(215, 122, 82, 0.18);
|
|
5804
|
+
}
|
|
5805
|
+
|
|
5682
5806
|
.blank-chat {
|
|
5683
5807
|
display: flex;
|
|
5684
5808
|
align-items: center;
|
|
@@ -5688,6 +5812,7 @@
|
|
|
5688
5812
|
min-height: 0;
|
|
5689
5813
|
overflow: auto;
|
|
5690
5814
|
}
|
|
5815
|
+
|
|
5691
5816
|
.blank-chat-inner {
|
|
5692
5817
|
width: 100%;
|
|
5693
5818
|
max-width: 560px;
|
|
@@ -7396,4 +7521,88 @@
|
|
|
7396
7521
|
z-index: 20;
|
|
7397
7522
|
}
|
|
7398
7523
|
|
|
7524
|
+
/* ── 结构化会话状态条 ── */
|
|
7525
|
+
.structured-status-bar {
|
|
7526
|
+
display: flex;
|
|
7527
|
+
align-items: center;
|
|
7528
|
+
gap: 10px;
|
|
7529
|
+
margin: 8px 0 4px;
|
|
7530
|
+
padding: 8px 12px;
|
|
7531
|
+
border-radius: var(--radius-sm);
|
|
7532
|
+
background: rgba(var(--accent-rgb, 99, 102, 241), 0.06);
|
|
7533
|
+
border: 1px solid rgba(var(--accent-rgb, 99, 102, 241), 0.12);
|
|
7534
|
+
font-size: 0.75rem;
|
|
7535
|
+
color: var(--text-secondary);
|
|
7536
|
+
transition: all 0.3s ease;
|
|
7537
|
+
overflow: hidden;
|
|
7538
|
+
}
|
|
7539
|
+
|
|
7540
|
+
.structured-status-bar .status-bar-label {
|
|
7541
|
+
flex-shrink: 0;
|
|
7542
|
+
font-weight: 600;
|
|
7543
|
+
color: var(--accent-soft);
|
|
7544
|
+
}
|
|
7545
|
+
|
|
7546
|
+
.structured-status-bar .status-bar-track {
|
|
7547
|
+
flex: 1;
|
|
7548
|
+
height: 3px;
|
|
7549
|
+
border-radius: 2px;
|
|
7550
|
+
background: rgba(var(--accent-rgb, 99, 102, 241), 0.1);
|
|
7551
|
+
overflow: hidden;
|
|
7552
|
+
position: relative;
|
|
7553
|
+
}
|
|
7554
|
+
|
|
7555
|
+
.structured-status-bar .status-bar-fill {
|
|
7556
|
+
position: absolute;
|
|
7557
|
+
top: 0;
|
|
7558
|
+
left: 0;
|
|
7559
|
+
width: 40%;
|
|
7560
|
+
height: 100%;
|
|
7561
|
+
border-radius: 2px;
|
|
7562
|
+
background: linear-gradient(90deg, transparent, var(--accent-soft), transparent);
|
|
7563
|
+
animation: marqueeScroll 1.5s ease-in-out infinite;
|
|
7564
|
+
}
|
|
7565
|
+
|
|
7566
|
+
@keyframes marqueeScroll {
|
|
7567
|
+
0% { left: -40%; }
|
|
7568
|
+
100% { left: 100%; }
|
|
7569
|
+
}
|
|
7570
|
+
|
|
7571
|
+
.structured-status-bar .status-bar-timer {
|
|
7572
|
+
flex-shrink: 0;
|
|
7573
|
+
font-variant-numeric: tabular-nums;
|
|
7574
|
+
font-family: var(--font-mono);
|
|
7575
|
+
font-size: 0.6875rem;
|
|
7576
|
+
color: var(--text-muted);
|
|
7577
|
+
}
|
|
7578
|
+
|
|
7579
|
+
/* 完成态 */
|
|
7580
|
+
.structured-status-bar.completed {
|
|
7581
|
+
background: rgba(79, 122, 88, 0.06);
|
|
7582
|
+
border-color: rgba(79, 122, 88, 0.15);
|
|
7583
|
+
animation: statusBarFadeOut 2s ease-out 1s forwards;
|
|
7584
|
+
}
|
|
7585
|
+
|
|
7586
|
+
.structured-status-bar.completed .status-bar-label {
|
|
7587
|
+
color: var(--success);
|
|
7588
|
+
}
|
|
7589
|
+
|
|
7590
|
+
.structured-status-bar.completed .status-bar-track {
|
|
7591
|
+
background: rgba(79, 122, 88, 0.1);
|
|
7592
|
+
}
|
|
7593
|
+
|
|
7594
|
+
.structured-status-bar.completed .status-bar-fill {
|
|
7595
|
+
width: 100%;
|
|
7596
|
+
background: var(--success);
|
|
7597
|
+
opacity: 0.5;
|
|
7598
|
+
animation: none;
|
|
7599
|
+
left: 0;
|
|
7600
|
+
}
|
|
7601
|
+
|
|
7602
|
+
@keyframes statusBarFadeOut {
|
|
7603
|
+
0% { opacity: 1; max-height: 50px; margin: 8px 0 4px; padding: 8px 12px; }
|
|
7604
|
+
70% { opacity: 0; max-height: 50px; margin: 8px 0 4px; padding: 8px 12px; }
|
|
7605
|
+
100% { opacity: 0; max-height: 0; margin: 0; padding: 0 12px; border-width: 0; }
|
|
7606
|
+
}
|
|
7607
|
+
|
|
7399
7608
|
/* 结束标记 */
|
package/dist/web-ui/index.js
CHANGED
|
@@ -37,7 +37,7 @@ ${cssStyles}
|
|
|
37
37
|
<div id="app"></div>
|
|
38
38
|
${scriptOpen} src="/vendor/xterm/lib/xterm.js">${scriptClose}
|
|
39
39
|
${scriptOpen} src="/vendor/xterm-addon-fit/lib/addon-fit.js">${scriptClose}
|
|
40
|
-
${scriptOpen} src="/vendor/xterm-addon-serialize/lib/
|
|
40
|
+
${scriptOpen} src="/vendor/xterm-addon-serialize/lib/addon-serialize.js">${scriptClose}
|
|
41
41
|
${scriptOpen}>
|
|
42
42
|
${scriptContent}
|
|
43
43
|
${scriptClose}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@co0ontty/wand",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "A web terminal for local CLI tools like Claude.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,11 +35,12 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@types/cookie": "^0.6.0",
|
|
37
37
|
"@xterm/addon-fit": "^0.11.0",
|
|
38
|
+
"@xterm/addon-serialize": "^0.14.0",
|
|
39
|
+
"@xterm/xterm": "^5.5.0",
|
|
38
40
|
"express": "^4.21.2",
|
|
39
41
|
"node-pty": "^1.1.0",
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"xterm-addon-serialize": "^0.11.0"
|
|
42
|
+
"puppeteer": "^24.40.0",
|
|
43
|
+
"ws": "^8.19.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/express": "^4.17.21",
|